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
第二章:編寫魔法食譜(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)香料→烹制→包裝」的全流程。從此巫師只需專注創(chuàng)造魔法(寫代碼),點(diǎn)心制作(打包)交給精靈!
以上就是GitHub自動(dòng)打包Android APK的全流程的詳細(xì)內(nèi)容,更多關(guān)于GitHub打包Android APK的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android 仿蘋果IOS6開(kāi)關(guān)按鈕
這篇文章主要介紹了Android 仿蘋果IOS6開(kāi)關(guān)按鈕的實(shí)現(xiàn)代碼,代碼簡(jiǎn)單易懂非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10
Android RecyclerView添加搜索過(guò)濾器的示例代碼
本篇文章主要介紹了Android RecyclerView添加搜索過(guò)濾器的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
Android定時(shí)器和Handler用法實(shí)例分析
這篇文章主要介紹了Android定時(shí)器和Handler用法,實(shí)例分析了Android中的定時(shí)器與Handler相關(guān)使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
Android的權(quán)限設(shè)置及自啟動(dòng)設(shè)置方法
今天小編就為大家分享一篇Android的權(quán)限設(shè)置及自啟動(dòng)設(shè)置方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
Android AndBase框架使用封裝好的函數(shù)完成Http請(qǐng)求(三)
這篇文章主要介紹了Android AndBase框架使用封裝好的函數(shù)完成Http請(qǐng)求的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-03-03
Android查看電池電量的方法(基于BroadcastReceiver)
這篇文章主要介紹了Android查看電池電量的方法,結(jié)合實(shí)例分析了Android使用BroadcastReceiver實(shí)現(xiàn)針對(duì)電池電量的查詢技巧,需要的朋友可以參考下2016-01-01

