GitHub自动打包Android APK的全流程
作者:Android童话镇
文章详细介绍了利用GitHub Actions和YAML配置,通过秘钥管理工具,自动打包Android APK的全流程,只需配置代码,工具自动处理,简化了打包流程,需要的朋友可以参考下
下面将用「魔法厨房」的童话故事,结合代码示例为你揭秘GitHub自动打包Android APK的全流程。在这个童话里:
- GitHub仓库 = 魔法厨房
- YAML配置文件 = 魔法食谱
- GitHub Actions = 自动烹饪精灵
- 签名密钥 = 秘制香料
第一章:准备魔法厨房的秘料(密钥配置)
问题:如何让精灵安全使用签名密钥?
解法:把密钥拆解成魔法卷轴藏在密室(Secrets)
# 本地生成密钥库(魔法香料瓶) keytool -genkey -v -keystore magic-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias magic-alias
将密钥信息分解为:
- 创建私有仓库
android-keystore
存放magic-key.jks
- 在仓库添加
keystore.properties
:
# 香料配方表 storePassword=your_store_password keyPassword=your_key_password keyAlias=magic-alias storeFile=../keystore/magic-key.jks
3. 在项目 Secrets 存入访问密钥仓库的 TOKEN
第二章:编写魔法食谱(YAML配置)
创建 .github/workflows/magic-cook.yml
:
name: Android Magic Kitchen on: push: tags: - 'v*' # 当巫师打上v1.0这样的标签时触发魔法 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 # 香料仓库 path: keystore # 存放位置 token: ${{ secrets.TOKEN }} # 步骤3:点燃炉火(JDK环境) - name: Ignite JDK Furnace uses: actions/setup-java@v3 with: distribution: 'zulu' java-version: '17' # 步骤4:调配香料(注入签名信息) - 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(构建命令) - name: Cook Release APK run: ./gradlew assembleRelease # 魔法烹饪咒语 # 步骤6:包装点心(发布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 }} # 厨房自带的魔法令牌
第三章:启动魔法烹饪(触发流程)
巫师只需施展两个咒语:
# 1. 标记版本(给点心贴标签) git tag v1.0.0 # 2. 推送标签(激活厨房精灵) git push origin v1.0.0
精灵工作流程:
第四章:魔法升级技巧(高级技巧)
技巧1:自动递增版本号
在 version.properties
中设置:
# 版本魔法计数器 versionCode=100 versionName=1.0.0
添加Gradle魔法脚本2:
task incrementVersion { doLast { def versionProps = new Properties() file("version.properties").withInputStream { versionProps.load(it) } // 版本号自动+1 versionProps["versionCode"] = (versionProps["versionCode"].toInteger() + 1).toString() file("version.properties").withWriter { versionProps.store(it, null) } } }
技巧2:APK风味定制(多渠道打包)
- name: Cook Flavors run: ./gradlew assembleFreeRelease assembleProRelease
技巧3:上传Google Play(自动上架)
- 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
魔法触发器对照表
触发方式 | 咒语示例 | 使用场景 |
---|---|---|
标签推送 (v*) | git push origin v1.0 | 正式版本发布 |
分支合并 | 合并代码到 main 分支 | 每日构建测试包 |
手动触发 | 点击GitHub Actions面板 | 紧急修复打包 |
定时任务 (cron) | schedule: '0 3 * * *' | 每日凌晨3点自动构建 |
常见魔法事故处理
密钥泄露危机
→ 永远不要把 .jks
文件放在主仓库!用私有仓库存储
版本号冲突
→ 在 gradle.properties
中添加:
# 避免多精灵同时烹饪冲突 org.gradle.parallel=false
APK未签名
→ 检查 keystore.properties
路径是否匹配:
storeFile file(keystoreProperties['storeFile'])
童话小结:GitHub Actions就像一群勤劳的厨房精灵,只要你配置好魔法食谱(YAML),它们就能自动完成「取食材→调香料→烹制→包装」的全流程。从此巫师只需专注创造魔法(写代码),点心制作(打包)交给精灵!
以上就是GitHub自动打包Android APK的全流程的详细内容,更多关于GitHub打包Android APK的资料请关注脚本之家其它相关文章!