GitHub自動(dòng)打包Android APK的全流程
下面將用「魔法廚房」的童話故事,結(jié)合代碼示例為你揭秘GitHub自動(dòng)打包Android APK的全流程。在這個(gè)童話里:
- GitHub倉(cāng)庫(kù) = 魔法廚房
- YAML配置文件 = 魔法食譜
- GitHub Actions = 自動(dòng)烹飪精靈
- 簽名密鑰 = 秘制香料
第一章:準(zhǔn)備魔法廚房的秘料(密鑰配置)
問(wèn)題:如何讓精靈安全使用簽名密鑰?
解法:把密鑰拆解成魔法卷軸藏在密室(Secrets)
# 本地生成密鑰庫(kù)(魔法香料瓶) keytool -genkey -v -keystore magic-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias magic-alias
將密鑰信息分解為:
- 創(chuàng)建私有倉(cāng)庫(kù)
android-keystore存放magic-key.jks - 在倉(cāng)庫(kù)添加
keystore.properties:
# 香料配方表 storePassword=your_store_password keyPassword=your_key_password keyAlias=magic-alias storeFile=../keystore/magic-key.jks
3. 在項(xiàng)目 Secrets 存入訪問(wèn)密鑰倉(cāng)庫(kù)的 TOKEN
第二章:編寫(xiě)魔法食譜(YAML配置)
創(chuàng)建 .github/workflows/magic-cook.yml:
name: Android Magic Kitchen
on:
push:
tags:
- 'v*' # 當(dāng)巫師打上v1.0這樣的標(biāo)簽時(shí)觸發(fā)魔法
jobs:
cook-apk:
runs-on: ubuntu-latest
steps:
# 步驟1:召喚食材(代碼)
- name: Checkout Code
uses: actions/checkout@v4
with:
token: ${{ secrets.TOKEN }} # 密室鑰匙
# 步驟2:取回秘制香料(密鑰)
- name: Fetch Magic Spices
uses: actions/checkout@v4
with:
repository: YourName/android-keystore # 香料倉(cāng)庫(kù)
path: keystore # 存放位置
token: ${{ secrets.TOKEN }}
# 步驟3:點(diǎn)燃爐火(JDK環(huán)境)
- name: Ignite JDK Furnace
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '17'
# 步驟4:調(diào)配香料(注入簽名信息)
- name: Prepare Spice Mix
run: |
cp keystore/magic-key.jks app/
echo "storeFile=../app/magic-key.jks" >> keystore/keystore.properties
cat keystore/keystore.properties >> gradle.properties
# 步驟5:烹飪APK(構(gòu)建命令)
- name: Cook Release APK
run: ./gradlew assembleRelease # 魔法烹飪咒語(yǔ)
# 步驟6:包裝點(diǎn)心(發(fā)布Release)
- name: Package Magic Dessert
uses: softprops/action-gh-release@v1
with:
files: app/build/outputs/apk/release/*.apk
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # 廚房自帶的魔法令牌
第三章:?jiǎn)?dòng)魔法烹飪(觸發(fā)流程)
巫師只需施展兩個(gè)咒語(yǔ):
# 1. 標(biāo)記版本(給點(diǎn)心貼標(biāo)簽) git tag v1.0.0 # 2. 推送標(biāo)簽(激活廚房精靈) git push origin v1.0.0
精靈工作流程:

第四章:魔法升級(jí)技巧(高級(jí)技巧)
技巧1:自動(dòng)遞增版本號(hào)
在 version.properties 中設(shè)置:
# 版本魔法計(jì)數(shù)器 versionCode=100 versionName=1.0.0
添加Gradle魔法腳本2:
task incrementVersion {
doLast {
def versionProps = new Properties()
file("version.properties").withInputStream { versionProps.load(it) }
// 版本號(hào)自動(dòng)+1
versionProps["versionCode"] = (versionProps["versionCode"].toInteger() + 1).toString()
file("version.properties").withWriter { versionProps.store(it, null) }
}
}
技巧2:APK風(fēng)味定制(多渠道打包)
- name: Cook Flavors run: ./gradlew assembleFreeRelease assembleProRelease
技巧3:上傳Google Play(自動(dòng)上架)
- name: Deliver to Google Play
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJson: ${{ secrets.GCP_KEY }}
packageName: com.magic.app
releaseFiles: app/build/outputs/apk/**/*.apk
魔法觸發(fā)器對(duì)照表
| 觸發(fā)方式 | 咒語(yǔ)示例 | 使用場(chǎng)景 |
|---|---|---|
| 標(biāo)簽推送 (v*) | git push origin v1.0 | 正式版本發(fā)布 |
| 分支合并 | 合并代碼到 main 分支 | 每日構(gòu)建測(cè)試包 |
| 手動(dòng)觸發(fā) | 點(diǎn)擊GitHub Actions面板 | 緊急修復(fù)打包 |
| 定時(shí)任務(wù) (cron) | schedule: '0 3 * * *' | 每日凌晨3點(diǎn)自動(dòng)構(gòu)建 |
常見(jiàn)魔法事故處理
密鑰泄露危機(jī)
→ 永遠(yuǎn)不要把 .jks 文件放在主倉(cāng)庫(kù)!用私有倉(cāng)庫(kù)存儲(chǔ)
版本號(hào)沖突
→ 在 gradle.properties 中添加:
# 避免多精靈同時(shí)烹飪沖突 org.gradle.parallel=false
APK未簽名
→ 檢查 keystore.properties 路徑是否匹配:
storeFile file(keystoreProperties['storeFile'])
童話小結(jié):GitHub Actions就像一群勤勞的廚房精靈,只要你配置好魔法食譜(YAML),它們就能自動(dòng)完成「取食材→調(diào)香料→烹制→包裝」的全流程。從此巫師只需專(zhuān)注創(chuàng)造魔法(寫(xiě)代碼),點(diǎn)心制作(打包)交給精靈!
以上就是GitHub自動(dòng)打包Android APK的全流程的詳細(xì)內(nèi)容,更多關(guān)于GitHub打包Android APK的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
安卓中出現(xiàn)過(guò)的一些容易被忽略的異常整理
今天小編就為大家分享一篇關(guān)于安卓中出現(xiàn)過(guò)的一些容易被忽略的異常整理,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
微信公眾平臺(tái)開(kāi)發(fā)入門(mén)教程(圖文詳解)
由于微信的大熱,為了更好的方便使用微信的用戶查詢(xún)一些信息,這篇文章是入門(mén)級(jí)的微信公眾平臺(tái)開(kāi)發(fā)教程,需要的朋友可以參考下2013-09-09
Flutter仿微信通訊錄實(shí)現(xiàn)自定義導(dǎo)航條的示例代碼
某些頁(yè)面比如我們?cè)谶x擇聯(lián)系人或者某個(gè)城市的時(shí)候需要快速定位到我們需要的選項(xiàng),一般都會(huì)需要像微信通訊錄右邊有一個(gè)導(dǎo)航條一樣的功能,本文將利用Flutter實(shí)現(xiàn)這一效果,需要的可以參考一下2022-04-04
Android中EditText和AutoCompleteTextView設(shè)置文字選中顏色方法
這篇文章主要介紹了Android中EditText和AutoCompleteTextView設(shè)置文字選中顏色方法,本文給出了效果圖和實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-01-01
Android關(guān)于BottomNavigationView使用指南
本文主要介紹了Android關(guān)于BottomNavigationView使用指南,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Android筆記之:深入ViewStub的應(yīng)用
本篇文章是對(duì)Android中ViewStub的應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
Android Studio 3.6中使用視圖綁定替代 findViewById的方法
從 Android Studio 3.6 開(kāi)始,視圖綁定能夠通過(guò)生成綁定對(duì)象來(lái)替代 findViewById,從而可以幫您簡(jiǎn)化代碼、移除 bug,并且從 findViewById 的模版代碼中解脫出來(lái),今天通過(guò)本文給大家介紹使用視圖綁定替代 findViewById的方法,感興趣的朋友一起看看吧2020-03-03

