Skip to content

v1.7.6

v1.7.6 #131

Workflow file for this run

name: Android CI
on:
release:
types: [published]
jobs:
build:
runs-on: ubuntu-latest
environment: production
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
cache: gradle
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew assembleRelease -P "version=${{ github.ref_name }}"
# 步骤1:定位未签名APK并解析所在目录(核心修复)
- name: Locate unsigned APKs and directories
id: locate_unsigned_apks
run: |
# 查找Normal版本未签名APK并解析目录
normal_unsigned=$(find app/build/outputs/apk/normal/release -name "*.apk" | head -n 1)
normal_dir=$(dirname "$normal_unsigned") # 用Shell解析目录路径
# 查找Compatible版本未签名APK并解析目录
compatible_unsigned=$(find app/build/outputs/apk/compatible/release -name "*.apk" | head -n 1)
compatible_dir=$(dirname "$compatible_unsigned") # 用Shell解析目录路径
# 输出变量供后续步骤使用
echo "normal_unsigned=$normal_unsigned" >> $GITHUB_OUTPUT
echo "normal_dir=$normal_dir" >> $GITHUB_OUTPUT
echo "compatible_unsigned=$compatible_unsigned" >> $GITHUB_OUTPUT
echo "compatible_dir=$compatible_dir" >> $GITHUB_OUTPUT
# 步骤2:签名Normal版本APK(引用解析后的目录)
- name: Sign Normal APK
id: sign_normal
uses: ilharp/sign-android-release@v2
with:
releaseDir: ${{ steps.locate_unsigned_apks.outputs.normal_dir }} # 使用提前解析的目录
signingKey: ${{ secrets.ANDROID_SIGNING_KEY }}
keyAlias: ${{ secrets.ANDROID_KEY_ALIAS }}
keyStorePassword: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
keyPassword: ${{ secrets.ANDROID_KEY_PASSWORD }}
buildToolsVersion: 34.0.0
# 步骤3:签名Compatible版本APK(引用解析后的目录)
- name: Sign Compatible APK
id: sign_compatible
uses: ilharp/sign-android-release@v2
with:
releaseDir: ${{ steps.locate_unsigned_apks.outputs.compatible_dir }} # 使用提前解析的目录
signingKey: ${{ secrets.ANDROID_SIGNING_KEY }}
keyAlias: ${{ secrets.ANDROID_KEY_ALIAS }}
keyStorePassword: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
keyPassword: ${{ secrets.ANDROID_KEY_PASSWORD }}
buildToolsVersion: 34.0.0
# 步骤4:生成签名后APK的校验和
- name: Generate signed APK checksums
run: |
echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
# 为Normal版本生成校验和
sha256sum ${{ steps.sign_normal.outputs.signedFile }} > "CHECKSUMS-Sesame-Normal-${{ github.ref_name }}.${{ env.SHORT_SHA }}-signed.sha256"
# 为Compatible版本生成校验和
sha256sum ${{ steps.sign_compatible.outputs.signedFile }} > "CHECKSUMS-Sesame-Compatible-${{ github.ref_name }}.${{ env.SHORT_SHA }}-signed.sha256"
# 步骤5:上传签名后的APK及校验和到Release
- name: Upload signed assets to Release
uses: softprops/action-gh-release@v2
with:
name: ${{ github.event.release.tag_name }}
files: |
${{ steps.sign_normal.outputs.signedFile }}
${{ steps.sign_compatible.outputs.signedFile }}
CHECKSUMS-Sesame-Normal-${{ github.ref_name }}.${{ env.SHORT_SHA }}-signed.sha256
CHECKSUMS-Sesame-Compatible-${{ github.ref_name }}.${{ env.SHORT_SHA }}-signed.sha256
tag_name: ${{ github.ref_name }}
draft: false
append_body: true
generate_release_notes: true
body: |
## ✨What's Changed
${{ github.event.head_commit.message || github.event.pull_request.title || '无详细信息' }}
> ## 下载说明
* Normal 为正常版本,适用于`Android 8.0`及以上的系统
* Compatible 为兼容版本,适用于`Android 7.0`不再向下兼容 参考minSDK24后续不再兼容`
> 倒卖必死全家