AndroidアプリをビルドするためのDockerfileを作る
2022-10-16
はじめに
業務で、Slack から GitHub Actions のトリガーを叩き、fastlane
を実行後、Firebase App Distribution
にアップロードするというのをやりたいと思い、CI(GitHub Actions)上で動作するイメージを作成しました。結局自分しか使わないかつ、イメージのメンテナンスまで手が回らなくなり辞めちゃったのですが…
もちろん、テストも実行できます。
色々試行錯誤したので、どうやってやったか書いています。
実装
M1 Mac で Docker Desktop を使っています。また、Android SDK は再配布がダメなので、試す ときは private にして試すなど、ご注意下さい。
ベースのイメージは、Ruby 公式のイメージを使っています。Ruby をベースイメージとしているのは、はじめにでも書きましたが、Slack から GitHub Actions のトリガーを叩き、fastlane
を使ってFirebase App Distribution
にアップロードするというのをやっていたためです。が、イメージのメンテナンスなどまで手が回らなくなり結局 Bitrise に移行しましたが…
Ruby のイメージに関して、自分は最初知らなかったのですが、Ruby 公式の方がメンテしているのは、rubylangなのでこれを使っています。オフィシャルの Ruby イメージもあるのですが、そっちは Docker 公式のイメージみたいです。
Dockerfile
FROM rubylang/ruby:3.1.2-focal
ENV ANDROID_SDK_REVISION linux-8512546_latest
ENV ANDROID_SDK_ROOT /opt/android-sdk-linux
ENV ANDROID_BUILD_TOOLS_VERSION 32.0.0
ENV ANDROID_COMPILE_SDK 33
RUN apt-get update -y && \
apt-get upgrade -y && \
apt-get install zip unzip wget -y && \
apt-get install openjdk-11-jdk -y
RUN wget https://dl.google.com/android/repository/commandlinetools-${ANDROID_SDK_REVISION}.zip && \
unzip commandlinetools-${ANDROID_SDK_REVISION}.zip && \
mkdir -p ${ANDROID_SDK_ROOT}/cmdline-tools && \
mv cmdline-tools ${ANDROID_SDK_ROOT}/cmdline-tools/latest && \
rm -r commandlinetools-${ANDROID_SDK_REVISION}.zip
ENV PATH ${PATH}:${ANDROID_SDK_ROOT}:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin
RUN mkdir ~/.android && \
touch ~/.android/repositories.cfg
RUN yes | sdkmanager --licenses
RUN yes | sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" \
"build-tools;${ANDROID_BUILD_TOOLS_VERSION}"
1 行目で--platform=linux/amd64