FlutterでAndroidアプリをリリースビルドでの署名をGradleで簡単に行えるものの、署名情報をテキストで記述してソース管理で共有してしまうのは心配。(たとえプライベートリポジトリであっても…)
ソース管理対象外のファイルに切り出すだけでなく、環境変数も利用して異なるビルド環境でもうまくいくようにしてみた。(CI対策)
開発環境に任意のフォルダを用意
フォルダ名は .google_signing とした。(念の為ドット始まりの隠しフォルダ)
キーストアファイルを入れる
そのフォルダ内にキーストアファイル sign.keystore を入れる。
キーストアアクセス用の秘密情報ファイルを作成
Gradleからインクルードされるため以下の書式のテキストファイルを作成。
ファイル名は signingConfig.gradle とした。
signingConfigs {
release {
storeFile file('./sign.keystore')
storePassword 'ストアパスワード'
keyAlias 'エイリアス名'
keyPassword 'キーパスワード'
}
}
パスワードやエイリアスはストアファイルを作った時の情報なので間違いなく書く。
情報ファイルへのパスを環境変数に登録
Gradleでは ORG_GRADLE_PROJECT_ から始まる環境変数を簡単に読めるようになっているので、
export ORG_GRADLE_PROJECT_SIGNING_CONFIG=/{パス}/.google_signing/signingConfig.gradle
として環境変数に登録しておく。
これで SIGNING_CONFIG という名前で参照できるようになる。
build.gradleを書き換える
android/app/build.gradle にキーストア情報を読み込ませるよう記述を追加。
apply from: "$SIGNING_CONFIG", to: android
android セクションの直上、もともと apply が並んでいる行の最後に追加してみた。
to: があるので、androidセクション内に差し込まれる。
これでリリースビルドしてみると、署名情報が読み込めて…
Running Gradle task ‘bundleRelease’… Done
うまくいきました✨
コメント