GitHub自动打包Android APK的全流程
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>第一章:准备魔法厨房的秘料(密钥配置)</li><li>第二章:编写魔法食谱(YAML配置)</li><li>第三章:启动魔法烹饪(触发流程)</li><li>第四章:魔法升级技巧(高级技巧)</li><ul class="second_class_ul"><li>技巧1:自动递增版本号</li><li>技巧2:APK风味定制(多渠道打包)</li><li>技巧3:上传Google Play(自动上架)</li></ul><li>魔法触发器对照表</li><ul class="second_class_ul"></ul><li>常见魔法事故处理</li><ul class="second_class_ul"></ul></ul></div><p>下面将用「魔法厨房」的童话故事,结合代码示例为你揭秘GitHub自动打包Android APK的全流程。在这个童话里:</p><ul><li><strong>GitHub仓库</strong> = 魔法厨房</li><li><strong>YAML配置文件</strong> = 魔法食谱</li><li><strong>GitHub Actions</strong> = 自动烹饪精灵</li><li><strong>签名密钥</strong> = 秘制香料</li></ul>
<p class="maodian"></p><h2>第一章:准备魔法厨房的秘料(密钥配置)</h2>
<p><strong>问题</strong>:如何让精灵安全使用签名密钥?</p>
<p><strong>解法</strong>:把密钥拆解成魔法卷轴藏在密室(Secrets)</p>
<div class="jb51code"><pre class="brush:bash;"># 本地生成密钥库(魔法香料瓶)
keytool -genkey -v -keystore magic-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias magic-alias
</pre></div>
<p>将密钥信息分解为:</p>
<ol><li>创建私有仓库 <code>android-keystore</code> 存放 <code>magic-key.jks</code></li><li>在仓库添加 <code>keystore.properties</code>:</li></ol>
<div class="jb51code"><pre class="brush:yaml;"># 香料配方表
storePassword=your_store_password
keyPassword=your_key_password
keyAlias=magic-alias
storeFile=../keystore/magic-key.jks
</pre></div>
<p>3. 在项目 <strong>Secrets</strong> 存入访问密钥仓库的 <code>TOKEN</code></p>
<p class="maodian"></p><h2>第二章:编写魔法食谱(YAML配置)</h2>
<p>创建 <code>.github/workflows/magic-cook.yml</code>:</p>
<div class="jb51code"><pre class="brush:yaml;">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 }}# 厨房自带的魔法令牌
</pre></div>
<p class="maodian"></p><h2>第三章:启动魔法烹饪(触发流程)</h2>
<p>巫师只需施展两个咒语:</p>
<div class="jb51code"><pre class="brush:bash;"># 1. 标记版本(给点心贴标签)
git tag v1.0.0
# 2. 推送标签(激活厨房精灵)
git push origin v1.0.0
</pre></div>
<p>精灵工作流程:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202509/20259583703420.jpg" /></p>
<p class="maodian"></p><h2>第四章:魔法升级技巧(高级技巧)</h2>
<p class="maodian"></p><h3>技巧1:自动递增版本号</h3>
<p>在 <code>version.properties</code> 中设置:</p>
<div class="jb51code"><pre class="brush:yaml;"># 版本魔法计数器
versionCode=100
versionName=1.0.0
</pre></div>
<p>添加Gradle魔法脚本2:</p>
<div class="jb51code"><pre class="brush:plain;">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) }
}
}
</pre></div>
<p class="maodian"></p><h3>技巧2:APK风味定制(多渠道打包)</h3>
<div class="jb51code"><pre class="brush:yaml;">- name: Cook Flavors
run: ./gradlew assembleFreeRelease assembleProRelease
</pre></div>
<p class="maodian"></p><h3>技巧3:上传Google Play(自动上架)</h3>
<div class="jb51code"><pre class="brush:yaml;">- 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
</pre></div>
<p class="maodian"></p><h2>魔法触发器对照表</h2>
<table><thead><tr><th>触发方式</th><th>咒语示例</th><th>使用场景</th></tr></thead><tbody><tr><td><strong>标签推送</strong> (v*)</td><td>git push origin v1.0</td><td>正式版本发布</td></tr><tr><td><strong>分支合并</strong></td><td>合并代码到 main 分支</td><td>每日构建测试包</td></tr><tr><td><strong>手动触发</strong></td><td>点击GitHub Actions面板</td><td>紧急修复打包</td></tr><tr><td><strong>定时任务</strong> (cron)</td><td>schedule: '0 3 * * *'</td><td>每日凌晨3点自动构建</td></tr></tbody></table>
<p class="maodian"></p><h2>常见魔法事故处理</h2>
<p><strong>密钥泄露危机</strong></p>
<p>→ 永远不要把 <code>.jks</code> 文件放在主仓库!用私有仓库存储</p>
<p><strong>版本号冲突</strong></p>
<p>→ 在 <code>gradle.properties</code> 中添加:</p>
<div class="jb51code"><pre class="brush:yaml;"># 避免多精灵同时烹饪冲突
org.gradle.parallel=false
</pre></div>
<p><strong>APK未签名</strong></p>
<p>→ 检查 <code>keystore.properties</code> 路径是否匹配:</p>
<div class="jb51code"><pre class="brush:plain;">storeFile file(keystoreProperties['storeFile'])
</pre></div>
<blockquote><p>童话小结:GitHub Actions就像一群勤劳的厨房精灵,只要你配置好魔法食谱(YAML),它们就能自动完成「取食材→调香料→烹制→包装」的全流程。从此巫师只需专注创造魔法(写代码),点心制作(打包)交给精灵!</p></blockquote>
<p>以上就是GitHub自动打包Android APK的全流程的详细内容,更多关于GitHub打包Android APK的资料请关注琼殿技术社区其它相关文章!</p>
<div class="art_xg">
<b>您可能感兴趣的文章:</b><ul><li>Vue项目打包部署到GitHub Pages的实现步骤</li><li>vue项目打包后上传至GitHub并实现github-pages的预览</li><li>vue项目打包上传github并制作预览链接(pages)</li></ul>
</div>
</div>
<!--endmain-->
頁:
[1]