Mbangun proyek Android ing wadhah Docker

Nalika ngembangake proyek kanggo platform Android, sanajan cilik, cepet utawa mengko sampeyan kudu ngatasi lingkungan pangembangan. Saliyane Android SDK, iku perlu kanggo duwe versi paling anyar saka Kotlin, Gradle, platform-alat, mbangun-alat. Lan yen ing mesin pangembang kabeh dependensi iki ditanggulangi kanthi nggunakake Android Studio IDE, banjur ing server CI / CD saben nganyari bisa dadi sirah. Lan yen ing pangembangan web Docker wis dadi solusi standar kanggo masalah lingkungan, mula kenapa ora nyoba ngatasi masalah sing padha ing pangembangan Android nggunakake ...

Kanggo sing ora ngerti apa Docker iku, kanggo sijine iku gampang, iku alat kanggo nggawe sing disebut. "wadhah" sing ngemot kernel OS minimal lan piranti lunak sing dibutuhake sing bisa kita pasang ing ngendi wae, nalika njaga lingkungan. Apa persis sing bakal ana ing wadhah kita ditemtokake ing Dockerfile, sing banjur dirakit dadi gambar sing bisa diluncurake ing ngendi wae lan duwe sifat idempotensi.

Proses instalasi lan dhasar Docker diterangake kanthi sampurna ing dheweke situs resmi. Mula, katon luwih dhisik, iki Dockerfile sing kita lakoni:

# Π’.ΠΊ. основным инструмСнтом для сборки 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"

Kita nyimpen ing folder karo project Android kita lan miwiti mbangun wadhah karo printah

docker build -t android-build:5.4-28-27 .

Parameter -t nemtokake tag utawa jeneng wadhah kita, sing biasane kalebu jeneng lan versi. Ing kasus kita, kita diarani Android-build lan ing versi kasebut kita nuduhake sakumpulan versi gradle, android-sdk lan platform-tools. Ing mangsa ngarep, bakal luwih gampang kanggo nggoleki gambar sing kita butuhake kanthi jeneng nggunakake "versi" iki.

Sawise perakitan wis rampung, kita bisa nggunakake gambar kita sacara lokal, kita bisa ngundhuh kanthi printah docker push menyang repositori gambar umum utawa pribadi kanggo ngundhuh menyang mesin liyane.

Minangka conto, ayo mbangun proyek lokal. Kanggo nindakake iki, ing folder karo project, mbukak printah

docker run --rm -v "$PWD":/home/gradle/ -w /home/gradle android-build:5.4.1-28-27 gradle assembleDebug

Ayo ngerteni apa tegese:

docker run - printah Bukak gambar dhewe
-bm - tegese sawise wadhah mandheg, mbusak kabeh sing digawe sajrone urip
-v "$PWD":/home/gradle/ - masang folder saiki karo proyek Android kita menyang folder wadhah internal /home/gradle/
-w /home/gradle - nemtokake direktori kerja saka wadhah
Android-mbangun: 5.4.1-28-27 - jeneng wadhah kita sing diklumpukake
gradle assembleDebug - tim perakitan nyata sing nglumpukake proyek kita

Yen kabeh dadi apik, banjur ing sawetara detik / menit sampeyan bakal weruh ing layar kaya Mbangun sukses ing 8m 3s! Lan folder app / build / output / apk bakal ngemot aplikasi sing dirakit.

Sampeyan bisa nindakake tugas gradle liyane kanthi cara sing padha - mriksa proyek, mbukak tes, lsp. Kauntungan utama yaiku yen kita kudu mbangun proyek kasebut ing mesin liyane, kita ora perlu kuwatir babagan nginstal kabeh lingkungan lan bakal cukup kanggo ndownload gambar sing dibutuhake lan mbukak bangunan kasebut.

Wadhah kasebut ora nyimpen owah-owahan, lan saben perakitan diluncurake saka awal, sing, ing tangan siji, njamin identitas perakitan kasebut ora ana ing ngendi wae diluncurake, ing sisih liya, saben sampeyan kudu ngundhuh kabeh dependensi. lan ngumpulake kabeh kode maneh, lan iki kadhangkala bisa njupuk wektu pinunjul. Mulane, saliyane biasanipun "kadhemen" wiwitan, kita duwe pilihan kanggo miwiti mbangun nalika nyimpen supaya disebut-. "cache", ngendi kita nyimpen folder ~ / .gradle dening mung nyalin menyang folder apa project, lan ing awal mbangun sabanjurΓ© bali maneh. Kita mindhah kabeh prosedur nyalin menyang skrip sing kapisah lan printah peluncuran dhewe wiwit katon kaya iki

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"

Akibaté, wektu mbangun proyèk rata-rata wis suda kaping pirang-pirang (gumantung saka jumlah dependensi ing proyek kasebut, nanging rata-rata proyek kasebut wiwit dirakit ing 1 menit tinimbang 5 menit).

Kabeh iki, mesthi, mung ndadekake pangertèn yen sampeyan duwe internal CI / server CD dhewe, sing ndhukung dhewe. Nanging saiki ana akeh layanan maya sing kabeh masalah iki ditanggulangi lan sampeyan ora perlu kuwatir, lan properti perakitan sing dibutuhake uga bisa ditemtokake ing setelan proyek.

Mung pangguna pangguna sing bisa melu survey. mlebunggih.

Apa sampeyan nyimpen sistem CI/CD ing omah utawa nggunakake layanan pihak katelu?

  • Kita nggunakake server internal

  • Kita nggunakake layanan eksternal

  • Kita ora nggunakake CI / CD

  • Liyane

42 pangguna milih. 16 pangguna abstain.

Source: www.habr.com

Add a comment