เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชเชจเซเชกเซเชฐเซ‹เช‡เชก เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฌเชจเชพเชตเชตเซ‹

Android เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชตเชฟเช•เชธเชพเชตเชคเซ€ เชตเช–เชคเซ‡, เชธเซŒเชฅเซ€ เชจเชพเชจเซ‹ เชชเชฃ, เชตเชนเซ‡เชฒเชพ เช…เชฅเชตเชพ เชชเช›เซ€เชจเชพ เชธเชฎเชฏเชฎเชพเช‚ เชคเชฎเชพเชฐเซ‡ เชตเชฟเช•เชพเชธเชจเชพ เชตเชพเชคเชพเชตเชฐเชฃ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเชตเซ‹ เชชเชกเชถเซ‡. เชเชจเซเชกเซเชฐเซ‹เช‡เชก SDK เช‰เชชเชฐเชพเช‚เชค, เช•เซ‹เชŸเชฒเชฟเชจ, เช—เซเชฐเซ‡เชกเชฒ, เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ-เชŸเซ‚เชฒเซเชธ, เชฌเชฟเชฒเซเชก-เชŸเซ‚เชฒเซเชธเชจเซเช‚ เชจเชตเซ€เชจเชคเชฎ เชธเช‚เชธเซเช•เชฐเชฃ เชนเซ‹เชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. เช…เชจเซ‡ เชœเซ‹ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเชจเชพ เชฎเชถเซ€เชจ เชชเชฐ เช† เชฌเชงเซ€ เชจเชฟเชฐเซเชญเชฐเชคเชพเช“ เชเชจเซเชกเซเชฐเซ‹เช‡เชก เชธเซเชŸเซเชกเชฟเชฏเซ‹ IDE เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฎเซ‹เชŸเชพ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชนเชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ CI/CD เชธเชฐเซเชตเชฐ เชชเชฐ, เชฆเชฐเซ‡เช• เช…เชชเชกเซ‡เชŸ เชฎเชพเชฅเชพเชจเซ‹ เชฆเซเช–เชพเชตเซ‹ เชฌเชจเซ€ เชถเช•เซ‡ เช›เซ‡. เช…เชจเซ‡ เชœเซ‹ เชตเซ‡เชฌ เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸเชฎเชพเช‚, เชกเซ‹เช•เชฐ เช เชชเชฐเซเชฏเชพเชตเชฐเชฃเชจเซ€ เชธเชฎเชธเซเชฏเชพเชจเซเช‚ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เช‰เช•เซ‡เชฒ เชฌเชจเซ€ เช—เชฏเซเช‚ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชเชจเซเชกเซเชฐเซ‹เช‡เชก เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸเชฎเชพเช‚ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชธเชฎเชพเชจ เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชนเชฒ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เซ‡เชฎ เชจ เช•เชฐเชตเซ‹ ...

เชœเซ‡เช“ เชœเชพเชฃเชคเชพ เชจเชฅเซ€ เช•เซ‡ เชกเซ‹เช•เชฐ เชถเซเช‚ เช›เซ‡, เชคเซ‡เชจเซ‡ เชธเชฐเชณ เชฐเซ€เชคเซ‡ เช•เชนเซ€เช เชคเซ‹, เชคเซ‡ เช•เชนเซ‡เชตเชพเชคเชพ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เชเช• เชธเชพเชงเชจ เช›เซ‡. "เช•เชจเซเชŸเซ‡เชจเชฐ" เช•เซ‡ เชœเซ‡เชฎเชพเช‚ เชจเซเชฏเซ‚เชจเชคเชฎ OS เช•เชฐเซเชจเชฒ เชนเซ‹เชฏ เช›เซ‡ เช…เชจเซ‡ เชธเซ‰เชซเซเชŸเชตเซ‡เชฐเชจเซ‹ เชœเชฐเซ‚เชฐเซ€ เชธเซ‡เชŸ เชนเซ‹เชฏ เช›เซ‡ เชœเซ‡เชจเซ‡ เช†เชชเชฃเซ‡ เชชเชฐเซเชฏเชพเชตเชฐเชฃเชจเซ€ เชœเชพเชณเชตเชฃเซ€ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช†เชชเชฃเซ‡ เช‡เชšเซเช›เซ€เช เชคเซเชฏเชพเช‚ เช—เซ‹เช เชตเซ€ เชถเช•เซ€เช เช›เซ€เช. เช…เชฎเชพเชฐเชพ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชฌเชฐเชพเชฌเชฐ เชถเซเช‚ เชนเชถเซ‡ เชคเซ‡ เชกเซ‹เช•เชฐเชซเชพเช‡เชฒเชฎเชพเช‚ เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ เชชเช›เซ€ เชเช• เชเชตเซ€ เช‡เชฎเซ‡เชœเชฎเชพเช‚ เชเชธเซ‡เชฎเซเชฌเชฒ เชฅเชพเชฏ เช›เซ‡ เชœเซ‡ เช—เชฎเซ‡ เชคเซเชฏเชพเช‚ เชฒเซ‹เชจเซเชš เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เช‡เชกเซ‡เชฎเซเชชเซ‹เชŸเซ‡เชจเซเชธเซ€ เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€เช เชนเซ‹เชฏ เช›เซ‡.

เชกเซ‹เช•เชฐเชจเซ€ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช…เชจเซ‡ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹ เชคเซ‡เชฎเชจเชพเชฎเชพเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ€เชคเซ‡ เชตเชฐเซเชฃเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡ เชธเชคเซเชคเชพเชตเชพเชฐ เชตเซ‡เชฌเชธเชพเช‡เชŸ. เชคเซ‡เชฅเซ€, เชฅเซ‹เชกเซเช‚ เช†เช—เชณ เชœเซ‹เชคเชพเช‚, เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช†เชตเซ€ เชกเซ‹เช•เชฐเชซเชพเช‡เชฒ เช›เซ‡

# ะข.ะบ. ะพัะฝะพะฒะฝั‹ะผ ะธะฝัั‚ั€ัƒะผะตะฝั‚ะพะผ ะดะปั ัะฑะพั€ะบะธ 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 เช…เชฎเชพเชฐเชพ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซเช‚ เชŸเซ‡เช— เช…เชฅเชตเชพ เชจเชพเชฎ เชธเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชคเซ‡เชจเซเช‚ เชจเชพเชฎ เช…เชจเซ‡ เชธเช‚เชธเซเช•เชฐเชฃ เชนเซ‹เชฏ เช›เซ‡. เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชเชจเซเชกเซเชฐเซ‹เช‡เชก-เชฌเชฟเชฒเซเชก เช•เชนเซ€เช เช›เซ€เช เช…เชจเซ‡ เชตเชฐเซเชเชจเชฎเชพเช‚ เช…เชฎเซ‡ เช—เซเชฐเซ‡เชกเชฒ, เชเชจเซเชกเซเชฐเซ‹เช‡เชก-เชเชธเชกเซ€เช•เซ‡ เช…เชจเซ‡ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ-เชŸเซ‚เชฒเซเชธ เชตเชฐเซเชเชจเชจเชพ เชธเช‚เชฏเซ‹เชœเชจเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซเชฏเซ‹ เช›เซ‡. เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚, เช†เชตเชพ "เชธเช‚เชธเซเช•เชฐเชฃ" เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชจเชพเชฎ เชฆเซเชตเชพเชฐเชพ เช…เชฎเชจเซ‡ เชœเซ‹เชˆเชคเซ€ เช›เชฌเซ€ เชถเซ‹เชงเชตเชพเชจเซเช‚ เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชธเชฐเชณ เชฌเชจเชถเซ‡.

เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชชเซ‚เชฐเซเชฃ เชฅเชฏเชพ เชชเช›เซ€, เช…เชฎเซ‡ เช…เชฎเชพเชฐเซ€ เช›เชฌเซ€เชจเซ‹ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช, เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เชกเซ‹เช•เชฐ เชฆเชฌเชพเชฃ เชคเซ‡เชจเซ‡ เช…เชจเซเชฏ เชฎเชถเซ€เชจเซ‹ เชชเชฐ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชพเชนเซ‡เชฐ เช…เชฅเชตเชพ เช–เชพเชจเช—เซ€ เช‡เชฎเซ‡เชœ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚.

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชšเชพเชฒเซ‹ เชเช• เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเซ€เช. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชธเชพเชฅเซ‡เชจเชพ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚, เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ‹

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

เชšเชพเชฒเซ‹ เชœเชพเชฃเซ€เช เช•เซ‡ เชคเซ‡เชจเซ‹ เช…เชฐเซเชฅ เชถเซเช‚ เช›เซ‡:

เชกเซ‹เช•เชฐ เชฐเชจ - เชˆเชฎเซ‡เชœ เชฒเซ‹เชจเซเชš เช•เชฎเชพเชจเซเชก เชชเซ‹เชคเซ‡
-เช†เชฐเชเชฎ - เชฎเชคเชฒเชฌ เช•เซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฌเช‚เชง เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชคเซ‡ เชคเซ‡เชจเชพ เชœเซ€เชตเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฌเชจเชพเชตเซ‡เชฒ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซเชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เซ‡ เช›เซ‡
-v "$PWD":/home/gradle/ - เช…เชฎเชพเชฐเชพ เชเชจเซเชกเซเชฐเซ‹เช‡เชก เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชธเชพเชฅเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เชซเซ‹เชฒเซเชกเชฐเชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเชพ เช†เช‚เชคเชฐเชฟเช• เชซเซ‹เชฒเซเชกเชฐ /home/gradle/ เชชเชฐ เชฎเชพเช‰เชจเซเชŸ เช•เชฐเซ‡ เช›เซ‡.
-w /home/gradle - เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชจเชฟเชฐเซเชฆเซ‡เชถเชฟเช•เชพ เชธเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡
android-build:5.4.1-28-27 - เช…เชฎเชพเชฐเชพ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซเช‚ เชจเชพเชฎ เชœเซ‡ เช…เชฎเซ‡ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซเชฏเซเช‚ เช›เซ‡
gradle เชเชธเซ‡เชฎเซเชฌเชฒ เชกเซ€เชฌเช— - เชตเชพเชธเซเชคเชตเชฟเช• เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชŸเซ€เชฎ เชœเซ‡ เช…เชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเซ‡ เช›เซ‡

เชœเซ‹ เชฌเชงเซเช‚ เชฌเชฐเชพเชฌเชฐ เชฅเชˆ เชœเชพเชฏ, เชคเซ‹ เชฅเซ‹เชกเซ€เช• เชธเซ‡เช•เชจเซเชก/เชฎเชฟเชจเชฟเชŸเชฎเชพเช‚ เชคเชฎเซ‡ เชคเชฎเชพเชฐเซ€ เชธเซเช•เซเชฐเซ€เชจ เชชเชฐ เช•เช‚เชˆเช• เชเชตเซเช‚ เชœเซ‹เชถเซ‹ 8m 3s เชฎเชพเช‚ เชธเชซเชณ เชฌเชจเชพเชตเซ‹! เช…เชจเซ‡ เชเชช/เชฌเชฟเชฒเซเชก/เช†เช‰เชŸเชชเซเชŸ/apk เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชเช• เชเชธเซ‡เชฎเซเชฌเชฒ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชนเชถเซ‡.

เช เชœ เชฐเซ€เชคเซ‡, เชคเชฎเซ‡ เช…เชจเซเชฏ เช—เซเชฐเซ‡เชกเชฒ เช•เชพเชฐเซเชฏเซ‹ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ - เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชคเชชเชพเชธเซ‹, เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชฒเชพเชตเซ‹, เชตเช—เซ‡เชฐเซ‡. เชฎเซเช–เซเชฏ เชซเชพเชฏเชฆเซ‹ เช เช›เซ‡ เช•เซ‡ เชœเซ‹ เช†เชชเชฃเซ‡ เช•เซ‹เชˆ เช…เชจเซเชฏ เชฎเชถเซ€เชจ เชชเชฐ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ, เชคเซ‹ เช…เชฎเชพเชฐเซ‡ เชธเชฎเช—เซเชฐ เชชเชฐเซเชฏเชพเชตเชฐเชฃเชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชšเชฟเช‚เชคเชพ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€, เช…เชจเซ‡ เชคเซ‡ เชœเชฐเซ‚เชฐเซ€ เช‡เชฎเซ‡เชœ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชฌเชฟเชฒเซเชก เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เชนเชถเซ‡.

เช•เชจเซเชŸเซ‡เชจเชฐ เช•เซ‹เชˆเชชเชฃ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชคเซเช‚ เชจเชฅเซ€, เช…เชจเซ‡ เชฆเชฐเซ‡เช• เชเชธเซ‡เชฎเซเชฌเชฒเซ€เชจเซ‡ เชถเชฐเซ‚เช†เชคเชฅเซ€ เชฒเซ‹เชจเซเชš เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ เชเช• เชคเชฐเชซ, เชเชธเซ‡เชฎเซเชฌเชฒเซ€เชจเซ€ เช“เชณเช–เชจเซ€ เชฌเชพเช‚เชฏเชงเชฐเซ€ เช†เชชเซ‡ เช›เซ‡, เชชเช›เซ€ เชญเชฒเซ‡ เชคเซ‡ เช•เซเชฏเชพเช‚เชฅเซ€ เชฒเซ‹เช‚เชš เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡, เชฌเซ€เชœเซ€ เชคเชฐเชซ, เชฆเชฐเซ‡เช• เชตเช–เชคเซ‡ เชคเชฎเชพเชฐเซ‡ เชฌเชงเซ€ เชจเชฟเชฐเซเชญเชฐเชคเชพเช“ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพเชจเซ€ เชนเซ‹เชฏ เช›เซ‡. เช…เชจเซ‡ เชคเชฎเชพเชฎ เช•เซ‹เชกเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเซ‹, เช…เชจเซ‡ เช†เชฎเชพเช‚ เช•เซเชฏเชพเชฐเซ‡เช• เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชธเชฎเชฏ เชฒเชพเช—เซ€ เชถเช•เซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€, เชธเชพเชฎเชพเชจเซเชฏ "เช เช‚เชกเชพ" เชชเซเชฐเชพเชฐเช‚เชญ เช‰เชชเชฐเชพเช‚เชค, เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช•เชนเซ‡เชตเชพเชคเชพ เชธเชพเชšเชตเชคเซ€ เชตเช–เชคเซ‡ เชฌเชฟเชฒเซเชก เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ‹ เชตเชฟเช•เชฒเซเชช เช›เซ‡. โ€œcacheโ€, เชœเซเชฏเชพเช‚ เช†เชชเชฃเซ‡ ~/.gradle เชซเซ‹เชฒเซเชกเชฐเชจเซ‡ เชซเช•เซเชค เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เชตเชฐเซเช•เชฟเช‚เช— เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เช•เซ‰เชชเชฟ เช•เชฐเซ€เชจเซ‡ เชธเชพเชšเชตเซ€เช เช›เซ€เช, เช…เชจเซ‡ เช†เช—เชพเชฎเซ€ เชฌเชฟเชฒเซเชกเชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชชเชพเช›เซเช‚ เช†เชชเซ€เช เช›เซ€เช. เช…เชฎเซ‡ เชฌเชงเซ€ เชจเช•เชฒ เช•เชฐเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เช…เชฒเช— เชธเซเช•เซเชฐเชฟเชชเซเชŸเชฎเชพเช‚ เช–เชธเซ‡เชกเซ€ เช…เชจเซ‡ เชฒเซ‹เชจเซเชš เช•เชฎเชพเชจเซเชก เชชเซ‹เชคเซ‡ เช†เชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชตเชพ เชฒเชพเช—เซเชฏเซ‹

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

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹