Android用のリリースビルド(2)
アプリの署名ファイルの作成
リリースビルドを作成するには、アプリに対して署名をする必要があります。そのために、署名ファイルを作る必要があります。署名ファイルはkeytoolコマンドを使って作成できます。例えばリスト5は、upload-keystore.jksというファイル名でキーファイルを作成する例です。
keytool -genkey -v \ -keystore upload-keystore.jks \ -keyalg RSA \ -keysize 2048 \ -validity 10000 \ -alias upload
keytoolはJavaのツールなので、コマンドが見つからない場合にはJavaのコマンド等にPATHが通っていないかなどを確認してください。実行すると、リスト6のようにパスワードと組織情報の入力を促すメッセージが表示されるので、リリースするアプリに合った情報を入力します。
キーストアのパスワードを入力してください: [任意のパスワードを指定] 新規パスワードを再入力してください: [任意のパスワードを指定] 識別名を入力します。サブコンポーネントを空のままにする場合はドット(.)を1つ入力し、中カッコ内のデフォルト値を使用する場合は[ENTER]を押します。 姓名は何ですか。 [Unknown]: enbind 組織単位名は何ですか。 // (省略) [Unknown]: ja CN=enbind, OU=enbind.jp, O="Enbind,Inc.", L=Unknown, ST=Tokyo, C=jaでよろしいですか。 [いいえ]: y // 問題なければ「y」を入力しリターン 10,000日間有効な2,048ビットのRSAのキー・ペアと自己署名型証明書(SHA384withRSA)を生成しています ディレクトリ名: CN=enbind, OU=enbind.jp, O="Enbind,Inc.", L=Unknown, ST=Tokyo, C=ja [store.jksを格納中] [upload-keystore.jksを格納中]
同じアプリをリリースする場合には、同じキー情報を利用するので、このファイルはなくさないように大切に保管しましょう。
署名ファイルの設定
続いて、先ほど作成した署名ファイルをAndroidプロジェクトのリリースビルド時に利用するように設定します。ここで使用するファイル、もしくは作成するファイルの構造はリスト7のようになっているとします。
<プロジェクト> └── android ├── key.properties (新規ファイル作成) ├── upload-keystore.jks (作成した署名ファイルを移動) └── app └── build.gradle
まず、署名ファイルのパスワードとファイル情報を記したkey.propertiesファイルを、リスト8の内容で作成します。
storePassword=[署名ファイル作成時に入力したパスワード] keyPassword=[署名ファイル作成時に入力したパスワード] keyAlias=upload storeFile=../upload-keystore.jks
続いて、ビルド時の設定をリスト9のようにbuild.gradleファイルを変更します。ここでは特にファイルの内容の意味については深く理解しなくても問題ありません。
plugins { // (省略) } // --- ここから追加 ---- // (1) key.propertiesの内容を読みこむ def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file('key.properties') if (keystorePropertiesFile.exists()) { keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) } // --- ここまで ---- android { // (省略) defaultConfig { // (省略) } // -- ここから追加 -- // (2) 署名の情報設定 signingConfigs { release { keyAlias = keystoreProperties['keyAlias'] keyPassword = keystoreProperties['keyPassword'] storeFile = keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null storePassword = keystoreProperties['storePassword'] } } // -- ここまで -- buildTypes { release { //signingConfig = signingConfigs.debug // コメントアウト signingConfig = signingConfigs.release // (3) リリース設定を利用する } } } // (省略)
(1)は署名ファイルの情報を設定したkey.propertiesの内容を変数に読みこみ、(2)で変数に読みこんだ設定をビルドファイル内で利用できるように設定します。(3)は、ビルドする際に(2)で設定した内容を使うための記述です。
Android用のリリースビルド
ここまで作業ができたら、リスト10のコマンドを実行し、App Bundle形式のファイルを作成します。
$flutter build appbundle Running Gradle task 'bundleRelease'... 1,360ms ✓ Built build/app/outputs/bundle/release/app-release.aab (18.9MB)
作成されたファイルをGoogle Play Consoleにアップロードすると、図2のようにバージョン名、ビルド番号やAPIレベル等が表示されるので、正しく情報が反映されているか確認してください。その後、Google Play Console画面で公開の手続きを進めます。