【Android Studio】Fastlaneの導入方法!デバッグ/リリース用APK/AABファイルの生成

この記事からわかること
- Android Studio/KotlinでFastlaneを導入する方法
- デバッグ/リリース用APK/AABファイルの生成
- gradle(task:)でできること
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Koala
- Kotlin:1.9.0
- Gradle:8.7
- java:17.0
- macOS:Sonoma 14.6.1
Fastlaneとは?
「Fastlane」とはiOSまたはAndroidアプリの配布やテスト周りの作業を自動化するためのCI/CDツールです。できることは大きく分けて以下の4つになります。
- App StoreConnect/GooglePlayでのリリース作業
- テストの実行
- メタ情報の自動生成
仕組みとしてはFastfile
というRubyで記述した設定ファイルを用意し、ターミナルなどからコマンドを実行するだけで特定の作業を自動で行ってくれるものになります。
CI/CDとは?
CI/CDとは「Continuous Integration(継続的インテグレーション)/ Continuous Delivery(継続的デリバリー)」の略称で、ざっくり言うとソースコードの統合(Integration)と配布(Delivery)を自動化する手法のことを指します。
MacにFastlaneの環境を構築する
MacでFastlane
の環境を構築するためにHomebrew
、rbenv
、bundler
の3つを使用します。詳細なセットアップ手順は下記の記事を参考にしてください。
- Homebrew・・・MacOS(及びLinux)のパッケージ管理ツール
- rbenv・・・Rubyのバージョン管理ツール
- bundler・・・RubyのGemパッケージマネージャー
おすすめ記事:MacにFastlaneを導入する方法
最終的にbundler -v
で正常にバージョンが返ってくるようであれば前準備はOKです。
AndroidプロジェクにFastlaneを組み込む
AndroidプロジェクトにFastlane
を組み込んでいきます。ターミナルを起動しカレントディレクトリをAndroidプロジェクトに合わせてbundle init
コマンドを実行します。
実行するとプロジェクトルートに「Gemfile」が生成されます。GemFile
はGemとツールのバージョンを指定するためのテキストファイルです。
この中にgem "fastlane"
を追加してbundle install
コマンドを実行します。するとfastlane
を動作させるために必要なライブラリなどがインストールされていきます。いろいろインストールされますがこれはfastlane
が依存関係を多く持っているためです。
bundle install
コマンドが完了すると「Gemfile.lock」がプロジェクトルートに生成されます。このファイルにはインストールされたGemのバージョンと依存関係が記録されています。同じGemfile.lockを使用する他の開発者や環境でも、バージョンの齟齬がないように環境構築することができるようになります。
Fastlaneのセットアップ
bundle exec fastlane init
コマンドを実行してFastlaneを使用するための設定ファイルを生成していきます。最初に色々聞かれるので回答しています。
1.パッケージ名
最初に対象プロジェクトのパッケージ名を聞かれます。com.XXX.XXX
形式で指定しているパッケージ名を入力してEnter
を押します。
2.Google Play認証ファイルパス
Google Playと連携するための認証ファイルのパスを問われます。認証ファイルを設定するとFastlaneからGoogle PlayにAPK/AABファイルのアップロードを行うことができるようになります。認証ファイルが用意できていない場合はEnter
を押すことでスキップできます。
3.メタデータ管理
既存のメタデータをダウンロードし、メタデータ管理を設定しますか?と聞かれるので必要ならy
で進めてください。これは認証パスを設定していないとうまく行かないようです。
スキップした場合は以下のコマンドを実行することでストアのメタ情報を取得することが可能です。
最後に以下のように表示されればセットアップの完了です。完了するとプロジェクトルートに「fastlane」ディレクトリが生成されその中に「Appfile」と「Fastfile」ファイルが生成されます。Fastfileの方に実行したいアクションやワークフローを定義していきます。
ここまでで回答したパッケージ名と認証ファイルのパスは「AppFile」の中に記述されます。もしスキップした場合や異なる値を渡した場合はここから修正してください。
APKファイルを生成する
まずはFastlaneを使用して「クリーンビルドしてリリース用のAPKを生成する処理」を自動化してみます。ターミナルからGradleで実行出来る操作は、gradle(task:)
を使用することで同じ動作を実現できます。今回はクリーンビルドからのAPKファイルの生成なのでclean assembleRelease
を使用すればOKです。
ターミナルの場合のコマンド
レーンの実装が完了したら以下のコマンドを実行して正常に生成されるか試してみてください。fastlane.tools finished successfully 🎉
と出れば成功です。
もしエラーになる場合は./gradlew clean assembleRelease
で正常に動作するか試してみてください。私はFAILURE: Build failed with an exception.
が発生していたので失敗していましたが、以下の記事の手順で解消して無事正常に動作するようになりました。
署名済みのAABファイルを生成する
Google Play Consoleへアップロードするための「署名ずみのAABファイル」を生成することも可能です。AABファイルの場合はbundleRelease
を使用し、署名済みにするためにproperties
パラメータを使用してKeyStoreの情報を渡します。(そのためKeyStore情報は作成しておいてください)
keystore
(.jks)ファイルへのパスは絶対パスで記述すると確実です。
gradleブロックで出来ること
gradle
ブロックにはさまざまなパラメータを渡すことができますがtask:
には基本となるタスクを渡します。先ほどのようにクリーンとビルドなど同時に複数渡すことも可能です。
デバッグ用APKをビルド
リリース用APKをビルド
リリース用AABをビルド(未署名)
リリース用AABをビルド(署名)
クリーンビルド
単体テストの実行
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。