แแแแ แแแแแก แแแแขแคแแ แแแกแแแแก แแ แแแฅแขแแก แจแแแฃแจแแแแแแกแแก, แแฃแแแแช แงแแแแแแ แแแขแแ แ, แแแ แ แแฃ แแแแแ แฃแแแ แแแฃแแแแแแแแ แแแแแแแแ แแแแก แแแ แแแแก. Android SDK-แแก แแแ แแ, แแฃแชแแแแแแแแ แแฅแแแแแ Kotlin-แแก, Gradle-แแก แฃแแฎแแแกแ แแแ แกแแ, แแแแขแคแแ แแ-แแแกแขแ แฃแแแแขแแแ, build-tools. แแ แแฃ แแแแแแแแแ แแก แแแแ แแขแแ แงแแแแ แแก แแแแแแแแแแฃแแแแ แแแแแแ แแแฃแแแ Android Studio IDE-แแก แแแแแงแแแแแแ, แแแจแแ CI / CD แกแแ แแแ แแ, แแแแแแฃแแ แแแแแฎแแแแ แจแแแซแแแแ แแแแแแแแ แแแก แแแแแก แขแแแแแแจแ. แแ แแฃ แแแ แแแแแแแแแแแขแจแ Docker แแแฎแแ แแแ แแแแก แแ แแแแแแแก แกแขแแแแแ แขแฃแแ แแแแแฌแงแแแขแ, แแแจแแ แ แแขแแ แแ แฃแแแ แกแชแแแแ แแกแแแแกแ แแ แแแแแแแก แแแแแญแ แ Android-แแก แแแแแแแแ แแแแจแ ...
แแแแแแแก, แแแแช แแ แแชแแก แ แ แแ แแก Docker - แแฃ แแก แกแแแแแแ แแแ แขแแแแ, แแแจแแ แแก แแ แแก แแแกแขแ แฃแแแแขแ แ.แฌ. โแแแแขแแแแแ แแแโ, แ แแแแแแแช แจแแแชแแแก แแแแ แแชแแฃแแ แกแแกแขแแแแก แแแแแแแแฃแ แแแ แแแก แแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แแฃแชแแแแแแ แแแแแแแฅแขแก, แ แแแแแแช แจแแแแแซแแแ แแแแแแ แชแแแแ แกแแแแช แแแแแแ, แแแ แแแแก แจแแแแ แฉแฃแแแแแกแแก. แแแแแ แแขแฃแแแ แ แ แแฅแแแแ แฉแแแแก แแแแขแแแแแ แจแ, แแแแแกแแแฆแแ แแแ Dockerfile-แจแ, แ แแแแแแช แจแแแแแ แแแ แแแแแ แกแฃแ แแแแ, แ แแแแแแช แจแแแซแแแแ แแแจแแแแฃแแ แแฅแแแก แแแแแกแแแแ แแแแแแแก แแ แแฅแแก แแแแแขแแแชแแแก แแแแกแแแแแ.
แแแกแขแแแแชแแแก แแ แแชแแกแ แแ Docker-แแก แกแแคแฃแซแแแแแ แแแแแแแ แแ แแก แแฆแฌแแ แแแ แแแกแแ
# ะข.ะบ. ะพัะฝะพะฒะฝัะผ ะธะฝััััะผะตะฝัะพะผ ะดะปั ัะฑะพัะบะธ Android-ะฟัะพะตะบัะพะฒ ัะฒะปัะตััั Gradle,
# ะธ ะฟะพ ััะฐััะปะธะฒะพะผั ััะตัะตะฝะธั ะพะฑััะพััะตะปัััะฒ ะตััั ะพัะธัะธะฐะปัะฝัะน Docker-ะพะฑัะฐะท
# ะผั ัะตัะธะปะธ ะทะฐ ะพัะฝะพะฒั ะฒะทััั ะธะผะตะฝะฝะพ ะตะณะพ ั ะฝัะถะฝะพะน ะฝะฐะผ ะฒะตััะธะตะน Gradle
FROM gradle:5.4.1-jdk8
# ะะฐะดะฐะตะผ ะฟะตัะตะผะตะฝะฝัะต ั ะปะพะบะฐะปัะฝะพะน ะฟะฐะฟะบะพะน ะดะปั Android SDK ะธ
# ะฒะตััะธัะผะธ ะฟะปะฐััะพัะผั ะธ ะธะฝััััะผะตะฝัะฐัะธั
ENV SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip"
ANDROID_HOME="/usr/local/android-sdk"
ANDROID_VERSION=28
ANDROID_BUILD_TOOLS_VERSION=28.0.3
# ะกะพะทะดะฐะตะผ ะฟะฐะฟะบั, ัะบะฐัะธะฒะฐะตะผ ััะดะฐ SDK ะธ ัะฐัะฟะฐะบะพะฒัะฒะฐะตะผ ะฐัั
ะธะฒ,
# ะบะพัะพััะน ะฟะพัะปะต ัะฑะพัะบะธ ัะดะฐะปัะตะผ
RUN mkdir "$ANDROID_HOME" .android
&& cd "$ANDROID_HOME"
&& curl -o sdk.zip $SDK_URL
&& unzip sdk.zip
&& rm sdk.zip
# ะ ัะปะตะดัััะธั
ัััะพัะบะฐั
ะผั ัะพะทะดะฐะตะผ ะฟะฐะฟะบั ะธ ัะตะบััะพะฒัะต ัะฐะนะปั
# ั ะปะธัะตะฝะทะธัะผะธ. ะะฐ ะพั. ัะฐะนัะต Android ะฝะฐะฟะธัะฐะฝะพ ััะพ ะผั
# ะผะพะถะตะผ ะบะพะฟะธัะพะฒะฐัั ััะธ ัะฐะนะปั ั ะผะฐัะธะฝ ะณะดะต ะฒัััะฝัั ััะธ
# ะปะธัะตะฝะทะธะธ ะฟะพะดัะฒะตัะดะธะปะธ ะธ ััะพ ะฐะฒัะพะผะฐัะธัะตัะบะธ
# ะธั
ัะณะตะฝะตัะธัะพะฒะฐัั ะฝะตะปัะทั
&& mkdir "$ANDROID_HOME/licenses" || true
&& echo "24333f8a63b6825ea9c5514f83c2829b004d1" > "$ANDROID_HOME/licenses/android-sdk-license"
&& echo "84831b9409646a918e30573bab4c9c91346d8" > "$ANDROID_HOME/licenses/android-sdk-preview-license"
# ะะฐะฟััะบะฐะตะผ ะพะฑะฝะพะฒะปะตะฝะธะต SDK ะธ ัััะฐะฝะพะฒะบั build-tools, platform-tools
RUN $ANDROID_HOME/tools/bin/sdkmanager --update
RUN $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS_VERSION}"
"platforms;android-${ANDROID_VERSION}"
"platform-tools"
แฉแแแ แแแแแฎแแแ แแแก แกแแฅแแฆแแแแแจแ แฉแแแแ Android แแ แแแฅแขแแ แแ แแแฌแงแแแ แแแแขแแแแแ แแก แแจแแแแแแก แแ แซแแแแแแ
docker build -t android-build:5.4-28-27 .
แแแ แแแแขแ แแก -t แแแแแแก แฉแแแแ แแแแขแแแแแ แแก แขแแแก แแ แกแแฎแแแก, แ แแแแแแช แฉแแแฃแแแแ แแ แจแแแแแแ แแแกแ แกแแฎแแแแกแ แแ แแแ แกแแแกแแแ. แฉแแแแก แจแแแแฎแแแแแจแ แฉแแแ แแแก android-build แแฃแฌแแแแ แแ แแแ แกแแแจแ แแแแแแฃแกแขแแ gradle, android-sdk แแ platform-tools แแแ แกแแแแแก แแแแแแแแชแแ. แกแแแแแแแแแ แแแแแแแแแแแแแแ แแกแแแ โแแแ แกแแแกโ แแแแแงแแแแแแ แฉแแแแแแแก แกแแญแแ แ แกแฃแ แแแแก แกแแฎแแแแ แแแซแแแแ.
build-แแก แแแกแ แฃแแแแแก แจแแแแแ, แฉแแแ แจแแแแแซแแแ แแแแแแแงแแแแ แฉแแแแ แกแฃแ แแแ แแแแแแฃแ แแ, แจแแแแแซแแแ แแแแแแแฌแแ แแ แแ แซแแแแแแ แแแแแ แแแซแแ แกแแฏแแ แ แแ แแแ แซแ แแแแแกแแฎแฃแแแแแก แกแแชแแแจแ, แ แแแ แแแแแแฌแแ แแ แแแ แกแฎแแ แแแแฅแแแแแแ.
แแแแแแแแแ, แแแแจแแแแ แแแแแแแแ แแแ แแ แแแฅแขแ. แแแแกแแแแแก, แแ แแแฅแขแแก แกแแฅแแฆแแแแแจแ แแแฃแจแแแ แแ แซแแแแแ
docker run --rm -v "$PWD":/home/gradle/ -w /home/gradle android-build:5.4.1-28-27 gradle assembleDebug
แแแแแ แแแแแ แแแแแ แ แแก แแแจแแแแก:
แแแแแ แแก แแแจแแแแ - แแแแแ แกแฃแ แแแแก แแแจแแแแแก แแ แซแแแแแ
-แ แ - แแแจแแแแก, แ แแ แแแแขแแแแแ แแก แแแฉแแ แแแแก แจแแแแแ แแก แจแแแก แงแแแแแคแแ แก, แ แแช แจแแแฅแแแ แแแกแ แกแแชแแชแฎแแแก แแแแแแแแแแแจแ
-v "$PWD":/home/gradle/ - แแแแแขแแแแแก แแแแแแแแ แ แกแแฅแแฆแแแแแก แฉแแแแ Android แแ แแแฅแขแแ แแแแขแแแแแ แแก แจแแแ แกแแฅแแฆแแแแแจแ /home/gradle/
-w /home/gradle - แแแแแแก แแแแขแแแแแ แแก แกแแแฃแจแแ แแแ แแฅแขแแ แแแก
android-build: 5.4.1-28-27 - แฉแแแแ แแแแขแแแแแ แแก แกแแฎแแแ, แ แแแแแแช แจแแแแแ แแแแ
gradle assembleDebug - แแแแแ build แแฃแแแ, แ แแแแแแช แแฌแงแแแก แฉแแแแก แแ แแแฅแขแก
แแฃ แงแแแแแคแแ แ แแแ แแแ แฌแแแ, แแแจแแ แ แแแแแแแแ แฌแแแจแ / แฌแฃแแจแ แแแฎแแแ แ แแฆแแชแแก แฌแแ แแแขแแแฃแแ แแจแแแแแ 8 แ 3 แฌแแแจแ! แฎแแแ app/build/output/apk แกแแฅแแฆแแแแแจแ แแฅแแแแ แแฌแงแแแแแ แแแแแแแชแแ.
แแแแแแแแฃแ แแ, แจแแแแซแแแแ แจแแแกแ แฃแแแ แกแฎแแ gradle แแแแชแแแแแ - แจแแแแแฌแแแ แแ แแแฅแขแ, แแแฃแจแแแ แขแแกแขแแแ แแ แ.แจ. แแแแแแ แ แฃแแแ แแขแแกแแแ แแก แแ แแก, แ แแ แแฃ แแ แแแฅแขแแก แแจแแแแแ แแแแแญแแ แแแแ แกแฎแแ แแแแ แแขแแ, แแ แแแญแแ แแแแ แแแแแ แแแ แแแแก แแแงแแแแแ แแ แกแแแแแ แแกแ แแฅแแแแ แกแแญแแ แ แกแฃแ แแแแก แฉแแแแขแแแ แแแ แแ แแแกแจแ แแแแแแแแแก แแแจแแแแ.
แแแแขแแแแแ แ แแ แแแแฎแแแก แแ แแแแแ แชแแแแแแแแแก แแ แงแแแแแ แแกแแแแแแแก แแแจแแแแ แฎแแแแ แแฃแแแแแ, แ แแช, แแ แแ แแฎแ แแ, แแแ แแแขแแแก แแซแแแแ แแกแแแแแแแก แแแแแขแฃแ แแแแก, แแแแฃแ แฉแแแแแ แแแแกแ, แแฃ แกแแ แแ แแก แแแ แแแจแแแแฃแแ, แแแแ แแก แแฎแ แแ, แงแแแแ แฏแแ แแ, แ แแแแกแแช แแฅแแแ แฃแแแ แฉแแแแขแแแ แแแ แงแแแแ แแแแแแแแแแฃแแแแ. แแ แจแแแแแแแแ แงแแแแ แแแแ แฎแแแแฎแแ, แแ แแแแก แแแแฏแแ แจแแแซแแแแ แแแแจแแแแแแแแแ แแ แ แแแกแญแแ แแแก. แแแแขแแ, แแแ แแ แฉแแแฃแแแแ แแแ โแชแแแโ แกแขแแ แขแแกแ, แแแแฅแแก แแฌแงแแแแก แแแฌแงแแแแก แจแแกแแซแแแแแแแ, แฎแแแ แจแแแแ แฉแฃแแแแแ แ.แฌ. "cache", แกแแแแช แฉแแแ แแแแแฎแแแ ~/.gradle แกแแฅแแฆแแแแแก แแ แแแฅแขแแก แกแแแฃแจแแ แกแแฅแแฆแแแแแจแ แฃแแ แแแแ แแแแแ แแแแ แแ แจแแแแแแ build-แแก แแแกแแฌแงแแกแจแ แแแแ แฃแแแแ แฃแแแ. แฉแแแ แแแแแแแขแแแแ แแแแแ แแแแก แงแแแแ แแ แแชแแแฃแ แ แชแแแแแฃแ แกแแ แแแขแแแจแ แแ แแแแแ แแแจแแแแแก แแ แซแแแแแ แแกแ แแแแฌแงแ
docker run --rm -v "$PWD":/home/gradle/ -w /home/gradle android-build:5.4.1-28-27 /bin/bash -c "./pre.sh; gradle assembleDebug; ./post.sh"
แจแแแแแแ, แแ แแแฅแขแแก แแจแแแแแแก แกแแจแฃแแแ แแ แ แ แแแแแแฏแแ แแ แจแแแชแแ แแ (แแแแแแแแแแฃแแแ แแ แแแฅแขแแ แแแแแแแแแแฃแแแแแก แ แแแแแแแแแแ, แแแแ แแ แแแแแแ แแ แกแแจแฃแแแ แแ แแแฅแขแ 1 แฌแฃแแแก แแแชแแแแ 5 แฌแฃแแจแ แแแแฌแงแ).
แแ แงแแแแแคแแ แก แแแแแกแแแแแ แแฅแแก แแแ แ แแฎแแแแ แแ แจแแแแฎแแแแแจแ, แแฃ แแฅแแแ แแแฅแแ แกแแแฃแแแ แ แจแแแ CI / CD แกแแ แแแ แ, แ แแแแแกแแช แแฅแแแ แแแแแ แฃแญแแ แ แแฎแแ แก. แแแแ แแ แแฎแแ แแ แแก แแ แแแแแ แฆแ แฃแแแแแแแ แกแแ แแแกแ, แ แแแแแแจแแช แงแแแแ แแก แแ แแแแแแ แแแแแแ แแแฃแแแ แแ แแฅแแแ แแ แฃแแแ แแแแ แแแฃแแแ แแแแแ, แแ แกแแญแแ แ แแแแกแขแ แฃแฅแชแแแก แแแแกแแแแแ แแกแแแ แจแแแซแแแแ แแแฃแแแแแ แแ แแแฅแขแแก แแแ แแแแขแ แแแจแ.
แแแแแแแแฎแแแจแ แแแแแฌแแแแแแ แจแแฃแซแแแแ แแฎแแแแ แแแ แแแแกแขแ แแ แแแฃแ แแแแฎแแแ แแแแแแก.
แแแแฎแแแ แแฅแแแแก CI/CD แกแแกแขแแแแก แจแแแ แแฃ แแงแแแแแ แแแกแแแ แแฎแแ แแก แกแแ แแแกแก
-
แจแแแ แกแแ แแแ แแก แแแแแงแแแแแ
-
แแแ แ แกแแ แแแกแแก แแแแแงแแแแแ
-
แฉแแแ แแ แแแงแแแแแ CI/CD-แก
-
แกแฎแแ
แแแกแชแ แฎแแ 42 แแแแฎแแแ แแแแแแ. 16 แแแแฎแแแ แแแแแแ แแแแ แจแแแแแแ.
แฌแงแแ แ: www.habr.com