前回の続きです。今回はリリースファイルを作るための各種設定を備忘録として記載したいと思います。
リリースファイル(aab)を生成するための設定
とはいえ、基本は以下の手順通りに設定すればOK。日本語ページはなかなか残念なことになっているので、英語ページをベースに作業したほうが結果的にストレスが少なくて済む。
Generating and deploying Android app bundles
ただし、少しだけハマりポイントがあるので注意が必要。ハマったポイントは以下。
gradlewのパス
のパス
唯一納得いかなかったハマりポイント。gradlew
のパスがデフォルトのままだとビルドが通らない。
上記ページの手順で追加した「Gradle Runner」のステップ内にあるInput variables
>gradlew file path
の項目に以下を設定する。
./gradlew
最小構成のプロジェクトなら、これだけ手直しすればビルドが通ってaabができるはず。
(追記)最新の設定だと、「Gradle Runner」を追加せずともaabファイルを生成できる模様...何のために試行錯誤したのか。。。
google-services.json
の準備
google-services.json
はFirebaseの機能を使うためにアプリに組み込む設定ファイル。秘匿情報が含まれるため、原則Gitには登録しない。しかし、Gitに登録しないとBitriseでビルドする時にこの設定ファイルが無いせいでビルドに失敗する。
この矛盾を解消するために、Bitriseに用意されているテキスト生成のステップを利用する。ざっくり書くと、以下。
- ファイルの中身をまるっとコピーする。
- コピーしたテキストをBitriseの定数として保存。
-
定数の名前は適当でOK。例えば直感的に
GOOGLE_SERVICES_JSON
とか。 - テキストファイル生成のステップ(Generate Text File)を追加。
-
定数として定義したテキストを使って、
google-services.json
ファイルとして生成する。
「テキストファイルを生成する」ステップが用意されているのが、直感的で非常にわかりやすい。
センシティブな情報の設定
おそらくAndroidアプリ開発者ならほとんどの人がハマるポイント。build.gradle
でBuildConfigField
を定義する際、ダブルクォーテーションを定義に含めないと、生成されるBuildConfig
でいい感じに定義できない問題。これがBitriseでも(というより環境変数として定義する場合でも)同様に発生する。
何も考えないならbuild.gradle
内で
buildConfigField "String", "AD_UNIT_ID", "\"広告ID\""
って形で定義すれば問題ない。
しかし、これを(センシティブな情報だから、外部に設定+それを参照するような形とするために)環境変数などに設定しそれを参照する形で
buildConfigField "String", "AD_UNIT_ID", System.getEnv(定義したキー)
って書くと残念ながらビルドに失敗する。設定値側(環境変数)にダブルクォーテーションを含めて定義するか、参照時に文字テンプレートを使うことで解消できる。
AndroidManifest.xml
も参照する必要が出てくるはずなので、文字テンプレートを使った方が無難。つまり以下。
buildConfigField "String", "AD_UNIT_ID", "${System.getEnv(定義したキー)}"