11
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CircleCIにおけるAndroidアプリのローカルビルドについて

Last updated at Posted at 2025-09-16

はじめに

前回の記事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ファイルを作成したい場合のコマンドは以下で実行できると思います。assembleReleaseRelease部分はビルドタイプを表しています。

$ ./gradlew :app:assembleRelease

AABファイルを作成したい場合のコマンドは以下になります。

$ ./gradlew :app:bundleRelease

やったこと

config.ymlを作成する

以下のように作成しました。

.circleci/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.gradleoutputFileNameなどで指定されていると思います。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を試すことができると思います。

11
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?