GitHub自动打包Android APK的全流程

 更新时间:2025年09月05日 08:40:14   作者: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

将密钥信息分解为:

  1. 创建私有仓库 android-keystore 存放 magic-key.jks
  2. 在仓库添加 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的资料请关注脚本之家其它相关文章!

相关文章

  • Android 仿苹果IOS6开关按钮

    Android 仿苹果IOS6开关按钮

    这篇文章主要介绍了Android 仿苹果IOS6开关按钮的实现代码,代码简单易懂非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • Android RecyclerView添加搜索过滤器的示例代码

    Android RecyclerView添加搜索过滤器的示例代码

    本篇文章主要介绍了Android RecyclerView添加搜索过滤器的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Android定时器和Handler用法实例分析

    Android定时器和Handler用法实例分析

    这篇文章主要介绍了Android定时器和Handler用法,实例分析了Android中的定时器与Handler相关使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • Android中底部菜单被输入法顶上去的解决方案

    Android中底部菜单被输入法顶上去的解决方案

    我们一般的解决方法是获取焦点,底部隐藏,失去焦点,底部菜单出现,但是,有些人会点击这个按钮收起键牌。这篇文章主要介绍了Android中底部菜单被输入法顶上去的解决方案,需要的朋友参考下吧
    2017-01-01
  • Android广播机制原理与开发

    Android广播机制原理与开发

    Android广播机制就是在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理
    2023-02-02
  • Android的权限设置及自启动设置方法

    Android的权限设置及自启动设置方法

    今天小编就为大家分享一篇Android的权限设置及自启动设置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Android顶栏定时推送消息

    Android顶栏定时推送消息

    在用安卓设备时,经常会应用到弹出推送消息。接下来通过本文给大家介绍Android顶栏定时推送消息,感兴趣的朋友一起学习吧
    2016-04-04
  • Android AndBase框架使用封装好的函数完成Http请求(三)

    Android AndBase框架使用封装好的函数完成Http请求(三)

    这篇文章主要介绍了Android AndBase框架使用封装好的函数完成Http请求的相关资料,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • Android仿淘宝商品详情页

    Android仿淘宝商品详情页

    这篇文章主要为大家详细介绍了Android仿淘宝商品详情页,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Android查看电池电量的方法(基于BroadcastReceiver)

    Android查看电池电量的方法(基于BroadcastReceiver)

    这篇文章主要介绍了Android查看电池电量的方法,结合实例分析了Android使用BroadcastReceiver实现针对电池电量的查询技巧,需要的朋友可以参考下
    2016-01-01

最新评论