はじめに
前回の記事CircleCIでiOSアプリをビルドするためのconfig.ymlの設定とローカルでfastlaneを実行する方法についての続きとして、CircleCIでAndroidアプリのビルドを行う方法についてまとめました。
本記事では、CircleCIでAndroidアプリをビルドするためのconfig.yml
と、ローカルでCircleCIを実行する方法について説明します。
前提条件
Gradleで作成されたプロジェクトであり、gradlewが使用できること。
前提知識
CircleCIとは
SaaS型のCI/CDサービスです。クラウド上のVM/Dockerを使用して、iOS、iPadOS、Androidアプリのビルドが可能です。
Gradleとは
主にJava向けに開発されたビルドツールです。Androidアプリのビルドやライブラリのインストールなどの自動化が可能です。
gradlew(Gradle Wrapper)とは
プロジェクトに合わせたGradleのバージョンを自動でダウンロードして、誰でも同じ環境でビルド可能にする実行スクリプトです。
ビルドにはこちらを使用します。
gradlewを用いたビルドの実行方法
プロジェクトによりますが、APKファイルを作成したい場合のコマンドは以下で実行できると思います。assembleRelease
のRelease
部分はビルドタイプを表しています。
$ ./gradlew :app:assembleRelease
AABファイルを作成したい場合のコマンドは以下になります。
$ ./gradlew :app:bundleRelease
やったこと
config.yml
を作成する
以下のように作成しました。
version: 2.1
jobs:
build:
docker:
#java11.0.17を使用
- image: cimg/android:2023.02.1
steps:
- checkout
# local.propertiesを作成
- run:
name: Create local.properties
command: |
echo "sdk.dir=${ANDROID_HOME}" >> local.properties
#keystoreをデコード
- run:
name: Decode keystore
command: |
echo $BASE64_KEYSTORE | base64 --decode > keystore.jks
# アプリのビルドを実行
- run:
name: Start the app build
command: |
./gradlew :app:assembleRelease
# アプリをDeployGateにアップロード
- run:
name: DeployGate Upload the app
command: |
curl --url "https://deploygate.com/api/users/${OWNER_NAME}/apps" \
-H "Authorization:Bearer $DEPLOYGATE_API_TOKEN" \
-X POST \
-F "file=@app/build/outputs/apk/release/app-release.apk" \
--form-string "message=メッセージ欄"
workflows:
version: 2
build:
jobs:
- build:
filters:
branches:
only:
- master
出力されるバイナリのファイル名はbuild.gradle
のoutputFileName
などで指定されていると思います。DeployGateにアップロードする際にはご自身のプロジェクトを確認してください。
使用するDockerイメージはcimg/android:2023.02.1
を用いました。その他の使用可能なDockerイメージは以下に記載されています。
※公式のDockerイメージは上記の他にcircleci/androidがありますが、こちらは非推奨となっています。
KEYSTOREの設定について
アプリ署名が必要な場合、CircleCI上でgradlewを用いてアプリのビルドをするためにはKEYSTOREを設定する必要があります。
公式サイトを参考にして、base64エンコードしてCircleCIの該当プロジェクトの環境変数にBASE64_KEYSTORE
という名前で追加しました。
ローカルでCircleCIを実行する
まずCircleCI CLIのインストールを行います。
$ brew install circleci
続いて、config.yml
の文法が正しいかチェックします。
$ circleci config validate
問題がなければ、以下のコマンドでローカルの実行ができます。Dockerイメージのサイズが3~4GBあるため、初回起動には時間がかかります。
$ circleci local execute build -e BASE64_KEYSTORE=$(cat keystore.txt)
ローカルの実行に関しては以下のサイトを参考にしました。
補足:Androidアプリにおけるfastlaneの使い方
今回の記事ではfastlaneを使用しませんでしたが、公式サイトに記述があるようにgradleを使用したビルドや、Google Play Consoleへのアップロードなどが可能です。必要に応じて使用するのが良いと思います。
終わりに
CircleCIでAndroidアプリをビルドするためのconfig.yml
やローカルでCircleCIを実行する方法について説明を行いました。iOSと異なり、AndroidはローカルでCircleCIを実行することができるため、より気軽にCircleCIを試すことができると思います。