【Android Studio】FastlaneでGoogle Play Consoleへアップロードを自動化する方法

この記事からわかること
- Android Studio/Kotlin FastlaneでGoogle Play Consoleへアップロードを自動化する方法
- Google Play Android Developer APIの有効
- upload_to_play_storeのパラメータ一覧
index
[open]
- Fastlaneを使用してGoogle Play Consoleへアップロードを自動化する方法
- 実装の流れ
- 1.AndroidプロジェクトにFastlaneを導入
- 2.セットアップ(認証ファイルを含む)
- 3.署名済みAABファイルの生成
- 4.upload_to_play_storeでアップロード
- upload_to_play_storeのパラメータ一覧
- 発生したエラー
- Google Api Error: Invalid request - Version code 6 has already been used.
- WARNING: We recommend using a newer Android Gradle plugin to use compileSdk = 34
\ アプリをリリースしました /
環境
- Android Studio:Koala
- Kotlin:1.9.0
- Gradle:8.7
- java:17.0
- macOS:Sonoma 14.6.1
Fastlaneを使用してGoogle Play Consoleへアップロードを自動化する方法
FastlaneではGoogle Play Consoleへアプリ(APK/AABファイル)のアップロードを自動化ことも可能になっています。そのためにはFastlaneがGoogle Play Consoleへアクセスできるようにする必要があるので最初に「Google Play Android Developer API」を有効にして認証ファイルを用意しておく必要があります。詳細は以下の記事を参考にしてください。
上記の準備ができた前提で実装の流れを解説していきます。
実装の流れ
- AndroidプロジェクトにFastlaneを導入
- セットアップ(認証ファイルを含む)
- 署名済みAABファイルの生成
- upload_to_play_storeでアップロード
上記の「1〜3」の手順は以下の記事でまとめてあるので詳細はこちらを参考にしてください。ここでは最低限の流れだけ記述していきます。
1.AndroidプロジェクトにFastlaneを導入
AndroidプロジェクトにFastlaneを導入します。以下はBundler
を使用して組み込んでいる場合のコマンドです。
2.セットアップ(認証ファイルを含む)
bundle exec fastlane init
コマンドを実行して問いに適切に対応していくと「AppFile」の中身が以下のようになります。「Google Play Android Developer API」を有効にして発行した認証ファイルをプロジェクト内に設置してそのパスがここで指定できていればOKです。
3.署名済みAABファイルの生成
「Fastfile」の中に「署名済みAABファイルを生成してGoogle Play Consoleへアップロード」を行う一連の流れを記載していきます。まずは署名済みのAABファイルをgradle
ブロックを使用して生成します。
KeyStoreの情報が必要になるので作成していなければ先に作成しておいてください。またKeyStoreの情報は直接「Fastfile」に記述せずに「.env」ファイルを用意して読み込むように実装しておくと安全です。
おすすめ記事:Fastlane:.envファイルを用意する
4.upload_to_play_storeでアップロード
Google Play Consoleへのアップロードはupload_to_play_store
ブロックを使用して行います。
これでレーン内の処理の実装が完了したのでupload_aab
コマンドを実行して正常に動作するか確認してみてください。
upload_to_play_storeのパラメータ一覧
鍵 | 説明 | デフォルト |
---|---|---|
package_name | 使用するアプリケーションのパッケージ名 | * |
version_name | バージョン名(新しい APK/AAB をアップロードするときに使用) | * |
version_code | 生成された APK をダウンロードするバージョンコード | * |
release_status | リリースステータス(例:completed, draft, halted, inProgress) | * |
track | 使用するアプリケーションのトラック(例: production, beta, alpha, internal) | production |
rollout | ロールアウト トラックにアップロードするときのユーザーの割合 | |
metadata_path | メタデータファイルを含むディレクトリへのパス | * |
json_key | Google での認証に使用されるサービス アカウント JSON を含むファイルへのパス | * |
json_key_data | Google での認証に使用される生のサービス アカウント JSON データ | * |
apk | アップロードする APK ファイルへのパス | * |
apk_paths | アップロードする APK ファイルへのパスの配列 | |
aab | アップロードする AAB ファイルへのパス | * |
aab_paths | アップロードする AAB ファイルへのパスの配列 | |
skip_upload_apk | APKのアップロードをスキップするかどうか | false |
skip_upload_aab | AABのアップロードをスキップするかどうか | false |
skip_upload_metadata | メタデータのアップロードをスキップするかどうか | false |
skip_upload_changelogs | 変更ログのアップロードをスキップするかどうか | false |
skip_upload_images | 画像のアップロードをスキップするかどうか | false |
skip_upload_screenshots | スクリーンショットのアップロードをスキップするかどうか | false |
sync_image_upload | sha256 比較を使用して画像やスクリーンショットのアップロードをスキップするかどうか | false |
validate_only | 実際に公開するのではなく、Google Play で変更を検証するかどうか | false |
timeout | 読み取り、オープン、送信のタイムアウト(秒単位) | 300 |
発生したエラー
AABファイルの作成からアップロードまでに発生したエラーをまとめておきます。
Google Api Error: Invalid request - Version code 6 has already been used.
これはシンプルにversionCode
をインクリメントしていないために発生していたエラーでした。Google Play Consoleにすでにアップロード済みの番号の場合はこのようにエラーになるようです。
WARNING: We recommend using a newer Android Gradle plugin to use compileSdk = 34
このエラーはAndroidプロジェクトのGradleやJavaのバージョンが期待通りでないことで発生しているエラーのようでした。
解決策
「build.gradle(Module:App)」内のJavaバージョンを17に変更し、Gradleのバージョンなどもあげることで解消することができました。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。