CICD 信发系统自动打包安卓签名apk—无相无界(7)—东方仙盟

自动构建CI/CD yml脚本
复制代码
name: Build & Upload to Release

on:
  push:
    branches: [ main ]
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: write

    steps:
      - uses: actions/checkout@v4

      - name: Set up JDK 11
        uses: actions/setup-java@v4
        with:
          java-version: '11'
          distribution: 'temurin'

      - name: Setup Gradle 6.5
        uses: gradle/actions/setup-gradle@v3
        with:
          gradle-version: '6.5'

      # 自动生成签名
      - name: Generate signing keystore
        run: |
          keytool -genkey -v \
            -keystore app/keystore.jks \
            -alias release \
            -keyalg RSA -keysize 2048 -validity 36500 \
            -storepass release -keypass release \
            -dname "CN=App"

      # 自动写入签名配置
      - name: Write signing config
        run: |
          echo "KEYSTORE_FILE=keystore.jks" >> local.properties
          echo "KEYSTORE_PASSWORD=release" >> local.properties
          echo "KEY_ALIAS=release" >> local.properties
          echo "KEY_PASSWORD=release" >> local.properties

      # 修复仓库并构建
      - name: Fix repo and build
        run: |
          sed -i 's/jcenter()/mavenCentral()/g' build.gradle
          gradle assembleRelease

      - name: Create Version Tag
        id: tag
        run: echo "tag=v$(date +'%Y%m%d%H%M')" >> $GITHUB_OUTPUT

      - name: Upload to GitHub Release
        uses: softprops/action-gh-release@v2
        with:
          tag_name: ${{ steps.tag.outputs.tag }}
          name: "PCOSAnd_ScreenDisplay ${{ steps.tag.outputs.tag }}"
          body: "屏幕显示工具自动构建"
          files: app/build/outputs/apk/release/*.apk
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

一、整体作用

这段代码放在项目的 .github/workflows/ 目录下,是 GitHub 的自动化工作流 。只要你推代码到 main 分支 ,或者手动触发,它就会:

  1. 自动拉代码
  2. 配置 Java、Gradle 环境
  3. 自动生成签名文件(打包 APK 必须)
  4. 自动写入签名配置
  5. 自动编译出正式 APK
  6. 自动创建版本标签
  7. 自动把 APK 发布到 GitHub Release

二、逐行解释

  1. 工作流名称

yaml

复制代码
name: Build & Upload to Release

给这个自动化任务起个名字:构建并上传到发布页


2. 触发条件(什么时候自动运行)

yaml

复制代码
on:
  push:
    branches: [ main ]   # 推代码到 main 分支时自动运行
  workflow_dispatch:    # 允许你在 GitHub 页面手动触发

两种触发方式:

  • 你提交代码 → 自动构建
  • 你去 GitHub 点一下按钮 → 手动构建

3. 任务配置

yaml

复制代码
jobs:
  build:
    runs-on: ubuntu-latest   # 在最新版 Ubuntu 虚拟机上运行
    permissions:
      contents: write        # 给权限:允许写仓库、创建 Release

4. 步骤:拉取代码

yaml

复制代码
- uses: actions/checkout@v4

把你的 GitHub 代码拉到虚拟机里。


5. 步骤:配置 Java 环境

yaml

复制代码
- name: Set up JDK 11
  uses: actions/setup-java@v4
  with:
    java-version: '11'
    distribution: 'temurin'

Android 构建需要 Java,这里安装 JDK 11


6. 步骤:配置 Gradle 版本

yaml

复制代码
- name: Setup Gradle 6.5
  uses: gradle/actions/setup-gradle@v3
  with:
    gradle-version: '6.5'

安装指定的 Gradle 6.5 构建工具。


7. 步骤:自动生成签名文件(关键)

yaml

复制代码
- name: Generate signing keystore
  run: |
    keytool -genkey -v \
      -keystore app/keystore.jks \
      -alias release \
      -keyalg RSA -keysize 2048 -validity 36500 \
      -storepass release -keypass release \
      -dname "CN=App"

作用 :Android 正式 APK 必须签名才能安装,这段代码自动生成签名文件,密码全部设为:

  • 仓库密码:release
  • 密钥密码:release
  • 别名:release

8. 步骤:自动写入签名配置

yaml

复制代码
- name: Write signing config
  run: |
    echo "KEYSTORE_FILE=keystore.jks" >> local.properties
    echo "KEYSTORE_PASSWORD=release" >> local.properties
    echo "KEY_ALIAS=release" >> local.properties
    echo "KEY_PASSWORD=release" >> local.properties

把签名信息写入配置文件,让构建脚本能读到。


9. 步骤:修复依赖仓库 + 构建正式 APK

yaml

复制代码
- name: Fix repo and build
  run: |
    sed -i 's/jcenter()/mavenCentral()/g' build.gradle
    gradle assembleRelease
  • 把废弃的 jcenter 仓库换成 mavenCentral(避免构建失败)
  • 执行构建命令:assembleRelease
  • 输出:正式签名的 APK 文件

10. 步骤:生成版本号标签

yaml

复制代码
- name: Create Version Tag
  id: tag
  run: echo "tag=v$(date +'%Y%m%d%H%M')" >> $GITHUB_OUTPUT

用当前时间生成标签,例如:v202512291530


11. 步骤:上传 APK 到 GitHub Release

yaml

复制代码
- name: Upload to GitHub Release
  uses: softprops/action-gh-release@v2
  with:
    tag_name: ${{ steps.tag.outputs.tag }}
    name: "PCOSAnd_ScreenDisplay ${{ steps.tag.outputs.tag }}"
    body: "屏幕显示工具自动构建"
    files: app/build/outputs/apk/release/*.apk
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

最终步骤

  • 创建一个 GitHub Release
  • 标题:PCOSAnd_ScreenDisplay + 时间版本号
  • 描述:屏幕显示工具自动构建
  • 上传:构建好的正式 APK
  • 使用 GitHub 自动提供的密钥进行上传

三、最终效果(你能看到什么)

每次运行成功后,去你的 GitHub 仓库 → Releases 页面,就能看到:

  • 一个带时间戳的新版本
  • 里面有可以直接安装的 正式版 APK
  • 全程不需要你打开 Android Studio、不需要手动打包

四、总结(最核心的 3 点)

  1. 这是 GitHub 自动化构建脚本
  2. 自动编译 Android 项目 → 生成正式签名 APK
  3. 自动发布到 GitHub Release,供下载安装

原创永久分成,共赴星辰大海

原创创意共创、永久收益分成,是东方仙盟始终坚守的核心理念。我们坚信,每一份原创智慧都值得被尊重与回馈,以永久分成锚定共创初心,让创意者长期享有价值红利,携手万千伙伴向着科技星辰大海笃定前行,拥抱硅基 生命与数字智能交融的未来,共筑跨越时代的数字文明共同体。

东方仙盟:拥抱知识开源,共筑数字新生态

在全球化与数字化浪潮中,东方仙盟始终秉持开放协作、知识共享的理念,积极拥抱开源技术与开放标准。我们相信,唯有打破技术壁垒、汇聚全球智慧,才能真正推动行业的可持续发展。

开源赋能中小商户:通过将前端异常检测、跨系统数据互联等核心能力开源化,东方仙盟为全球中小商户提供了低成本、高可靠的技术解决方案,让更多商家能够平等享受数字转型的红利。

共建行业标准:我们积极参与国际技术社区,与全球开发者、合作伙伴共同制定开放协议 与技术规范,推动跨境零售、文旅、餐饮等多业态的系统互联互通,构建更加公平、高效的数字生态。

知识普惠,共促发展:通过开源社区 、技术文档与培训体系,东方仙盟致力于将前沿技术转化为可落地的行业实践,赋能全球合作伙伴,共同培育创新人才,推动数字经济 的普惠式增长

阿雪技术观

在科技发展浪潮中,我们不妨积极投身技术共享。不满足于做受益者,更要主动担当贡献者 。无论是分享代码、撰写技术博客,还是参与开源项目 维护改进,每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地,我们携手在此探索硅基 生命,为科技进步添砖加瓦。

Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Don't just be the one reaping all the benefits; step up and be a contributor too. Whether you're tossing out your code snippets , hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. We're gonna team up and explore the whole silicon - based life thing, and in the process, we'll be fueling the growth of technology

相关推荐
Mr -老鬼1 小时前
零基础玩转 EasyClick+ESP32 OTG有线HID|零权限超高稳定手机操控
android·智能手机
我命由我123451 小时前
Kotlin 开发 - 双冒号操作符(引用顶层函数、引用成员函数、引用构造函数、引用属性、引用类)
android·java·开发语言·kotlin·android studio·android jetpack·android-studio
我命由我123451 小时前
Kotlin 开发 - sealed 关键字
android·java-ee·kotlin·android studio·android jetpack·android-studio·android runtime
Digitally3 小时前
5 种简单方法:如何将华为手机照片传输到 Mac 电脑
android
qq_4523962314 小时前
第十篇:《自动化处理验证码:OCR、接口绕过与第三方服务》
android·自动化·ocr
a8a30215 小时前
Laravel 10.x核心特性深度解析
android
angerdream17 小时前
Android手把手编写儿童手机远程监控App之UUID
android
dalancon17 小时前
Android OomAdjuster流程
android
河婆墟邓紫棋17 小时前
MIUI中的权限
android·github