はじめに
Flutterアプリの制作は二度目ですが、前回の経験をまるごと忘れてしまったので、記事として残しておきます。よければLGTMお願いします。
#Android Studio 起動!
Android Studioを起動して、アプリのディレクトリを開きましょう。
話はそこからです。
#Android moduleを開く
アプリのプロジェクトからでは、Build -> Generate Signed Bundle / APK ...
というアクションを行えないため、Android moduleを開く必要があります。
上のようにTools
メニューをたどって、Open Android module in Android Studio
を押してください。
#Signed APKを作成する
Build -> Generate Signed Bundle / APK...
を押してください。
上のような画面が出てきます。
これは作成するのがApp Bundle
かAPK
のどちらかを選ぶ画面です。
今回はAPK
の方で作成するので、そちらを選択してNext
を押します。
Next
で先に進むと、上のような画面になります。
(この画像では全ての欄が埋まっていますが、本来はどの欄も埋まっていません。)
赤枠で囲ってあるCreate new...
を押してください。
すると、上のような画面になります。
ここでkeyStore, keyの設定をします。
一番上のKey store path
にはAPP_NAME/android/app
を選んでおきます。
ファイルの名前はrelease.jks
としておきましょう。
(後でこの名前を使います。違う名前の場合は置き換えて考えてください。)
あとはPasswordを決めると、KeyStore
の設定は終わりです。
Key
の設定では、まずKey
の名前を決めます。
(なんでもいいのでkey0
とかでいいと思います。)
次にKey
のパスワードを決めますが、特別な事情がない場合はKeyStore
と同じパスワードでいいでしょう。
Validity
はKey
の有効期間です。デフォルトでは25年になっています。
変更したければ変更しましょう。自分はそのままにしています。
次に開発者情報を入力します。
指定通りに入力を進めていきますが
- First and Last Name
- State or Province
- Country Code(XX)
の三つがあれば十分かなと自分は思っています。
KeyStore
とkey
の項目は、あとで必要になるので全てメモしておきましょう
入力を終えたら、OK
を押します。
OK
で先ほどのページに戻ってきます。
戻ってきたときには、すべての欄が埋まっているはずです。
Key password
のRemember passwords
は自由にしてください。
欄が埋まっていることを確認したら、Next
を押します。
上のような画面に移動します。
Build Variants
をrelease
に設定します。
またSigrature Versions
もV1
,V2
の両方を選択するのが安牌でしょう。
以上を確認したらFinish
を押します。
するとどこかにSigned APK
が生成開始されるので待ちましょう。
(私は今回これを使わず、flutter build
コマンドからbuild
できるようにしているので先に進みます。)
キーストアを参照する
これからアプリから作成したキーストアを参照します。
android
ディレクトリにkeystore.properties
というファイルを作ります。
ここに
- KeyStoreのパスワード(
storePassword
) - keyのパスワード(
keyPassword
) - keyの名前(
keyAlias
) - jksファイルの場所(
storeFile
)
をそれぞれ入力していきます。
(storeFile
の箇所は、release.jks
ファイルをandroid/app
ディレクトリに作ったと思うので、release.jksと書いてください。)
このkeystore.properties
には重要な情報が載っているため、GitHub等でだれもが見れる状態にしておいてはいけません。
そこでandroid/.gitignore
に
*.jks
keystore.properties
と書くことでそれを防止することができます。
#Gradleファイルでの署名設定
android/app/build.gradle
を開いてください。
そのとき、上のメニューバーにOpen for Editing in Android Studio
というボタンがあると思うのでそれを押しましょう。
上の画像のようにandroid {...
の上に黄色枠で囲った部分を追記してください。
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('keystore.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
その後、50行目あたりにあるbuildTypes
を消去して、
上の赤枠のように書き換えます。
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
android/app/build.gradle
で変更できることに以下があります。
- Androidの対応OS(下の画像の赤丸)
- アプリのパッケージ名(
firebase
を利用する際に必要)
gradleファイルを編集した際は、Sync Now
で同期しておくのが良いでしょう。
これでgradleファイルでの署名設定は終了です。
#APKファイルの生成
ここまでくれば、あとはコマンドを打ち込むだけです。
flutter build apk
というコマンドでapkファイルが生成されます。
注意
apkを分割してbuild
した方がいいです。(アプリサイズが小さくなります。)
目的に合ったオプションをapkの後ろに付けてコマンドを叩きましょう。
ちなみに上のコマンドを叩くと、コマンドラインさんにも同じことを言われます。
コマンドを叩くと、上のようにbuild\app\autputs\flutter-apk
ディレクトリにapkファイルが生成されます。
このapkファイルをgoogle playにアップロードすることでアプリを世界にリリースできます!
お疲れさまでした!
#おまけ:アプリのバージョンアップ
アプリのバージョンを管理するのはpubspec.yaml
です。
version
に指定する数字は二つに分かれており、画像の例では
- 1.0.0 = VersionCode
- (+)1 = VersionNumber
となります。
アプリのバージョンアップに大事なのはVersionNumber
の方です。
たとえVersionCode
を変更しても、VersionNumber
がそのままだとアップデート用のapkファイルはアップロードできません。
逆にVersionNumber
が違えば、VersionCode
が同じでもアップロードができます。
version
を正しく変更してapkファイルを作り、アプリのアップデートを行いましょう。
#おわり
読んでいただいてありがとうございました!
この記事でリリーズビルドした方はLGTMをお忘れなく(笑)
twitterはこちらから
参考記事