Te hanga kaupapa Android i roto i te ipu Docker

I te wa e whakawhanake ana i tetahi kaupapa mo te papanga Android, ahakoa ko te mea iti rawa, i muri mai ranei me mahi koe ki te taiao whanaketanga. I tua atu i te Android SDK, he mea tika ki te whai i te putanga hou o Kotlin, Gradle, papa-taputapu, hanga-taputapu. A, ki te mea kei runga i te miihini a te kaiwhakawhanake ka whakatauhia katoatia enei ti'aturi ki te whakamahi i te Android Studio IDE, na i runga i te kaimau CI/CD ka taea e ia whakahou te huri ki te mahunga. A, ki te mea i roto i te whanaketanga paetukutuku kua riro a Docker hei otinga paerewa mo te raru o te taiao, na te aha e kore ai e ngana ki te whakaoti i tetahi raru rite ki te whanaketanga Android ma te whakamahi ...

Mo te hunga kaore e mohio he aha te Docker, ki te ngawari, he taputapu mo te hanga i te mea e kiia nei. "ipu" kei roto he pata OS iti me te huinga raupaparorohiko e tika ana ka taea e matou te tuku ki nga waahi katoa e hiahia ana matou, me te tiaki i te taiao. He aha nga mea kei roto i ta maatau ipu ka whakatauhia i roto i te Dockerfile, ka kohia ki tetahi ahua ka taea te whakarewahia ki nga waahi katoa me nga ahuatanga ngoikore.

Ko te tukanga whakaurunga me nga kaupapa o Docker e tino whakaahuahia ana i roto i tana paetukutuku mana. No reira, ka titiro whakamua, koinei te Dockerfile i mutu i a maatau:

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

Ka tiakina e matou i roto i te kōpaki me ta maatau kaupapa Android ka tiimata ki te hanga i te ipu me te whakahau

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

Taumahi -t e tohu ana i te tohu, i te ingoa ranei o ta maatau ipu, kei roto ko tona ingoa me tona putanga. I roto i to maatau, i kiia e matou he Android-hanga, a, i roto i te putanga i tohuhia e matou he huinga o nga putanga o te gradle, phi-sdk me nga taputapu-papa. I te wa kei te heke mai, ka ngawari ake te rapu i te ahua e hiahiatia ana ma te ingoa ma te whakamahi i tenei "putanga".

Ka oti te huihuinga, ka taea e taatau te whakamahi i to maatau ahua o te rohe, ka taea e taatau te tango ma te whakahau pana waka ki tetahi putunga whakaahua a te iwi, motuhake ranei hei tango atu ki etahi atu miihini.

Hei tauira, me hanga he kaupapa mo te rohe. Ki te mahi i tenei, i roto i te kōpaki me te kaupapa, whakahaerehia te whakahau

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

Kia mohio tatou he aha te tikanga:

ka oma te mahi - te whakahau whakarewa whakaahua ake
-rm — ko te tikanga ka mutu te ipu, ka mukua e ia nga mea katoa i hanga i tona oranga
-v "$PWD":/home/gradle/ - ka whakairihia te kōpaki o nāianei me ta maatau kaupapa Android ki roto i te kōpaki ipu o roto / home / gradle /
-w /home/gradle — ka whakatakoto i te raarangi mahi o te ipu
phi-hanga: 5.4.1-28-27 — te ingoa o ta matou ipu i kohia e matou
gradle assembleDebug — te roopu hui tuturu e whakahiato ana i ta maatau kaupapa

Mena ka pai nga mea katoa, i roto i te rua hēkona/meneti ka kite koe i runga i to mata tetahi mea penei HANGA ANGitu i roto i te 8m 3s! Na kei roto i te kōpaki taupānga / hanga / putanga / apk te tono kua kohia.

Ka taea e koe te mahi i etahi atu mahi gradle i te ahua rite - tirohia te kaupapa, whakahaere whakamatautau, aha atu. Ko te painga nui ko te mea ka hiahia taatau ki te hanga i te kaupapa ki runga i tetahi atu miihini, kaore e tika kia maaharahara ki te whakauru i te taiao katoa ka nui ki te tango i te ahua e tika ana me te whakahaere i te hanga ki roto.

Kaore te ipu e penapena i nga huringa, ka whakarewahia ia huihuinga mai i te wahanga, i tetahi taha, ka whakamanahia te tuakiri o te huihuinga ahakoa te waahi ka whakarewahia, i tetahi atu ringa, ia wa me tango e koe nga whakawhirinaki katoa me te whakahiato ano i nga waehere katoa, a he wa nui tenei. Na reira, i tua atu i te tiimata "makariri", kei a maatau te kowhiringa ki te tiimata i te hanga i te wa e penapena ana nga mea e kiia nei. "keteroki", ka tiakina e matou te kōpaki ~/.gradle ma te kape noa ki te kōpaki mahi o te kaupapa, a i te timatanga o te hanga e whai ake nei ka whakahokia mai e matou. I nukuhia e matou nga tikanga kape katoa ki roto i nga tuhinga motuhake ka tiimata te ahua o te whakahau whakarewatanga

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"

Ko te mutunga mai, he maha nga wa i whakaitihia ai to maatau wa hanga kaupapa (i runga i te maha o nga whakawhirinakitanga ki te kaupapa, engari ko te kaupapa toharite i timata ki te huihui i roto i te 1 meneti hei utu mo te 5 meneti).

Ko enei katoa, ko te tikanga, ka whai tikanga noa mena kei a koe to kaimau CI/CD o roto, e tautoko ana koe i a koe ano. Engari inaianei he maha nga ratonga kapua ka whakatauhia enei raru katoa kaore koe e awangawanga mo taua mea, ka taea hoki te tohu i nga waahanga huihuinga e tika ana ki nga tautuhinga kaupapa.

Ko nga kaiwhakamahi kua rehita anake ka uru ki te rangahau. Waitohu maitēnā.

Kei te pupuri koe i to punaha CI/CD i roto i te whare, kei te whakamahi ratonga tuatoru ranei?

  • Ka whakamahia e matou he tūmau o roto

  • Ka whakamahia e matou he ratonga o waho

  • Kaore matou e whakamahi CI/CD

  • Ētahi atu

42 nga kaiwhakamahi i pooti. 16 nga kaiwhakamahi i aukati.

Source: will.com

Tāpiri i te kōrero