From be63504a4dea7b397b1b56f8220ce31643fd4b97 Mon Sep 17 00:00:00 2001 From: HapeLee <1321903405@qq.com> Date: Tue, 24 Mar 2026 01:27:42 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=20=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=89=88=E6=96=B0=E5=A2=9E=E6=8F=90=E4=BE=9B=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=B7=B7=E6=B7=86=E7=9A=84=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yml | 53 ++++++++++++------- .gitignore | 1 + app/build.gradle.kts | 7 +++ .../ui/widget/components/cover/BookCover.kt | 1 - 4 files changed, 42 insertions(+), 20 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 06ed177b2..087824418 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -125,7 +125,8 @@ jobs: strategy: matrix: product: [ app ] - type: [ release ] + # 如果是正式版,只构建 release;如果是测试版,构建 release 和 noR8 + type: ${{ (needs.prepare.outputs.is_release == 'true') && fromJSON('["release"]') || fromJSON('["release", "noR8"]') }} fail-fast: false runs-on: ubuntu-latest env: @@ -167,12 +168,15 @@ jobs: echo "VersionName: $APP_VERSION_NAME" echo "VersionCode (Commit Number): $COMMIT_NUMBER" chmod +x gradlew - ./gradlew assemble${{ env.product }}Release + # 将 type 首字母大写以匹配 Gradle Task + TYPE_CAP=$(echo ${{ env.type }} | awk '{print toupper(substr($0,1,1))substr($0,2)}') + ./gradlew assemble${{ env.product }}${TYPE_CAP} env: COMMIT_NUMBER: ${{ env.COMMIT_NUMBER_VAL }} APP_VERSION_NAME: ${{ env.VERSIONL }} - name: Move Missing Rules Files + if: matrix.type == 'release' run: | echo "移动missing_rules.txt文件" MAPPING_DIR="${{ github.workspace }}/mapping" @@ -181,6 +185,7 @@ jobs: find ${{ github.workspace }}/app/build/outputs/mapping/ -name "missing_rules.txt" -exec mv {} "$MAPPING_DIR/missing_rules.txt" \; - name: Upload Missing Rules File To Artifact + if: matrix.type == 'release' uses: actions/upload-artifact@v4 with: name: legado.${{ env.product }}.${{ env.type }}.mapping.missing_rules @@ -190,7 +195,7 @@ jobs: - name: Check Build production run: | echo "检查 APK 输出目录" - APK_PATH="$GITHUB_WORKSPACE/app/build/outputs/apk" + APK_PATH="$GITHUB_WORKSPACE/app/build/outputs/apk/${{ env.product }}/${{ env.type }}" # 检查是否有任何 APK 文件生成 if [ -z "$(find "$APK_PATH" -name "*.apk" -print -quit)" ]; then echo "Build production not found! Check gradle logs." @@ -200,22 +205,23 @@ jobs: - name: Upload universal APK uses: actions/upload-artifact@v4 with: - name: universal-apk - path: app/build/outputs/apk/app/release/legado_app_*[0-9].apk + name: universal-apk-${{ env.type }} + path: app/build/outputs/apk/${{ env.product }}/${{ env.type }}/legado_${{ env.product }}_*[0-9]*.apk - name: Upload arm64-v8a APK uses: actions/upload-artifact@v4 with: - name: arm64-v8a-apk - path: app/build/outputs/apk/app/release/*arm64-v8a.apk + name: arm64-v8a-apk-${{ env.type }} + path: app/build/outputs/apk/${{ env.product }}/${{ env.type }}/*arm64-v8a.apk - name: Upload armeabi-v7a APK uses: actions/upload-artifact@v4 with: - name: armeabi-v7a-apk - path: app/build/outputs/apk/app/release/*armeabi-v7a.apk + name: armeabi-v7a-apk-${{ env.type }} + path: app/build/outputs/apk/${{ env.product }}/${{ env.type }}/*armeabi-v7a.apk - name: Upload Mapping File To Artifact + if: matrix.type == 'release' uses: actions/upload-artifact@v4 with: name: legado.${{ env.product }}.${{ env.type }}.mapping @@ -231,7 +237,9 @@ jobs: - uses: actions/checkout@v5 - uses: actions/download-artifact@v5 with: + pattern: '*-apk-release' path: apk/ + merge-multiple: true - working-directory: apk/ run: | # 使用 find 安全地移动文件 @@ -264,11 +272,11 @@ jobs: with: fetch-depth: 0 - # 1. 下载 build 任务上传的 APK + # 1. 下载 build 任务上传的所有 APK - name: 下载所有 APK Artifacts uses: actions/download-artifact@v4 with: - pattern: '*-apk' + pattern: '*-apk-*' path: artifacts merge-multiple: true @@ -278,10 +286,18 @@ jobs: run: | VERSIONL="${{ needs.prepare.outputs.versionL }}" echo "正在整理 APK 文件..." - find artifacts -maxdepth 1 -type f -name '*app_*.apk' ! -name '*arm64-v8a.apk' ! -name '*armeabi-v7a.apk' -exec mv {} "artifacts/legado-${VERSIONL}.apk" \; - find artifacts -maxdepth 1 -type f -name '*arm64-v8a.apk' -exec mv {} "artifacts/legado-${VERSIONL}-arm64-v8a.apk" \; - find artifacts -maxdepth 1 -type f -name '*armeabi-v7a.apk' -exec mv {} "artifacts/legado-${VERSIONL}-armeabi-v7a.apk" \; - ls -l artifacts/ + cd artifacts + # 重命名 release 版本 + for f in *app_${VERSIONL}.apk; do [ -f "$f" ] && mv "$f" "legado-${VERSIONL}.apk"; done + for f in *app_${VERSIONL}-arm64-v8a.apk; do [ -f "$f" ] && mv "$f" "legado-${VERSIONL}-arm64-v8a.apk"; done + for f in *app_${VERSIONL}-armeabi-v7a.apk; do [ -f "$f" ] && mv "$f" "legado-${VERSIONL}-armeabi-v7a.apk"; done + + # 重命名 noR8 版本 (如果存在) + for f in *app_${VERSIONL}-noR8.apk; do [ -f "$f" ] && mv "$f" "legado-${VERSIONL}-noR8.apk"; done + for f in *app_${VERSIONL}-noR8-arm64-v8a.apk; do [ -f "$f" ] && mv "$f" "legado-${VERSIONL}-noR8-arm64-v8a.apk"; done + for f in *app_${VERSIONL}-noR8-armeabi-v7a.apk; do [ -f "$f" ] && mv "$f" "legado-${VERSIONL}-noR8-armeabi-v7a.apk"; done + + ls -l # # 获取 Commit 记录并格式化为 Release Body @@ -304,6 +320,7 @@ jobs: echo "release_body<