[优化] 测试版新增提供没有代码混淆的版本
This commit is contained in:
+33
-18
@@ -125,7 +125,8 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
product: [ app ]
|
product: [ app ]
|
||||||
type: [ release ]
|
# 如果是正式版,只构建 release;如果是测试版,构建 release 和 noR8
|
||||||
|
type: ${{ (needs.prepare.outputs.is_release == 'true') && fromJSON('["release"]') || fromJSON('["release", "noR8"]') }}
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
@@ -167,12 +168,15 @@ jobs:
|
|||||||
echo "VersionName: $APP_VERSION_NAME"
|
echo "VersionName: $APP_VERSION_NAME"
|
||||||
echo "VersionCode (Commit Number): $COMMIT_NUMBER"
|
echo "VersionCode (Commit Number): $COMMIT_NUMBER"
|
||||||
chmod +x gradlew
|
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:
|
env:
|
||||||
COMMIT_NUMBER: ${{ env.COMMIT_NUMBER_VAL }}
|
COMMIT_NUMBER: ${{ env.COMMIT_NUMBER_VAL }}
|
||||||
APP_VERSION_NAME: ${{ env.VERSIONL }}
|
APP_VERSION_NAME: ${{ env.VERSIONL }}
|
||||||
|
|
||||||
- name: Move Missing Rules Files
|
- name: Move Missing Rules Files
|
||||||
|
if: matrix.type == 'release'
|
||||||
run: |
|
run: |
|
||||||
echo "移动missing_rules.txt文件"
|
echo "移动missing_rules.txt文件"
|
||||||
MAPPING_DIR="${{ github.workspace }}/mapping"
|
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" \;
|
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
|
- name: Upload Missing Rules File To Artifact
|
||||||
|
if: matrix.type == 'release'
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: legado.${{ env.product }}.${{ env.type }}.mapping.missing_rules
|
name: legado.${{ env.product }}.${{ env.type }}.mapping.missing_rules
|
||||||
@@ -190,7 +195,7 @@ jobs:
|
|||||||
- name: Check Build production
|
- name: Check Build production
|
||||||
run: |
|
run: |
|
||||||
echo "检查 APK 输出目录"
|
echo "检查 APK 输出目录"
|
||||||
APK_PATH="$GITHUB_WORKSPACE/app/build/outputs/apk"
|
APK_PATH="$GITHUB_WORKSPACE/app/build/outputs/apk/${{ env.product }}/${{ env.type }}"
|
||||||
# 检查是否有任何 APK 文件生成
|
# 检查是否有任何 APK 文件生成
|
||||||
if [ -z "$(find "$APK_PATH" -name "*.apk" -print -quit)" ]; then
|
if [ -z "$(find "$APK_PATH" -name "*.apk" -print -quit)" ]; then
|
||||||
echo "Build production not found! Check gradle logs."
|
echo "Build production not found! Check gradle logs."
|
||||||
@@ -200,22 +205,23 @@ jobs:
|
|||||||
- name: Upload universal APK
|
- name: Upload universal APK
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: universal-apk
|
name: universal-apk-${{ env.type }}
|
||||||
path: app/build/outputs/apk/app/release/legado_app_*[0-9].apk
|
path: app/build/outputs/apk/${{ env.product }}/${{ env.type }}/legado_${{ env.product }}_*[0-9]*.apk
|
||||||
|
|
||||||
- name: Upload arm64-v8a APK
|
- name: Upload arm64-v8a APK
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: arm64-v8a-apk
|
name: arm64-v8a-apk-${{ env.type }}
|
||||||
path: app/build/outputs/apk/app/release/*arm64-v8a.apk
|
path: app/build/outputs/apk/${{ env.product }}/${{ env.type }}/*arm64-v8a.apk
|
||||||
|
|
||||||
- name: Upload armeabi-v7a APK
|
- name: Upload armeabi-v7a APK
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: armeabi-v7a-apk
|
name: armeabi-v7a-apk-${{ env.type }}
|
||||||
path: app/build/outputs/apk/app/release/*armeabi-v7a.apk
|
path: app/build/outputs/apk/${{ env.product }}/${{ env.type }}/*armeabi-v7a.apk
|
||||||
|
|
||||||
- name: Upload Mapping File To Artifact
|
- name: Upload Mapping File To Artifact
|
||||||
|
if: matrix.type == 'release'
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: legado.${{ env.product }}.${{ env.type }}.mapping
|
name: legado.${{ env.product }}.${{ env.type }}.mapping
|
||||||
@@ -231,7 +237,9 @@ jobs:
|
|||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
- uses: actions/download-artifact@v5
|
- uses: actions/download-artifact@v5
|
||||||
with:
|
with:
|
||||||
|
pattern: '*-apk-release'
|
||||||
path: apk/
|
path: apk/
|
||||||
|
merge-multiple: true
|
||||||
- working-directory: apk/
|
- working-directory: apk/
|
||||||
run: |
|
run: |
|
||||||
# 使用 find 安全地移动文件
|
# 使用 find 安全地移动文件
|
||||||
@@ -264,11 +272,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
# 1. 下载 build 任务上传的 APK
|
# 1. 下载 build 任务上传的所有 APK
|
||||||
- name: 下载所有 APK Artifacts
|
- name: 下载所有 APK Artifacts
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
pattern: '*-apk'
|
pattern: '*-apk-*'
|
||||||
path: artifacts
|
path: artifacts
|
||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
|
|
||||||
@@ -278,10 +286,18 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
VERSIONL="${{ needs.prepare.outputs.versionL }}"
|
VERSIONL="${{ needs.prepare.outputs.versionL }}"
|
||||||
echo "正在整理 APK 文件..."
|
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" \;
|
cd artifacts
|
||||||
find artifacts -maxdepth 1 -type f -name '*arm64-v8a.apk' -exec mv {} "artifacts/legado-${VERSIONL}-arm64-v8a.apk" \;
|
# 重命名 release 版本
|
||||||
find artifacts -maxdepth 1 -type f -name '*armeabi-v7a.apk' -exec mv {} "artifacts/legado-${VERSIONL}-armeabi-v7a.apk" \;
|
for f in *app_${VERSIONL}.apk; do [ -f "$f" ] && mv "$f" "legado-${VERSIONL}.apk"; done
|
||||||
ls -l artifacts/
|
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
|
# 获取 Commit 记录并格式化为 Release Body
|
||||||
@@ -304,6 +320,7 @@ jobs:
|
|||||||
echo "release_body<<EOF"
|
echo "release_body<<EOF"
|
||||||
if [[ "$IS_RELEASE" != "true" ]]; then
|
if [[ "$IS_RELEASE" != "true" ]]; then
|
||||||
echo "**此版本为测试版,会存在不稳定问题。**"
|
echo "**此版本为测试版,会存在不稳定问题。**"
|
||||||
|
echo "**noR8 变体关闭了代码混淆与压缩,若有崩溃问题请使用它并收集和发送 Log,以便开发者定位问题代码。**"
|
||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
echo "### 更新内容"
|
echo "### 更新内容"
|
||||||
@@ -335,8 +352,6 @@ jobs:
|
|||||||
body: ${{ steps.get_commits.outputs.release_body }}
|
body: ${{ steps.get_commits.outputs.release_body }}
|
||||||
prerelease: ${{ needs.prepare.outputs.is_release != 'true' }}
|
prerelease: ${{ needs.prepare.outputs.is_release != 'true' }}
|
||||||
files: |
|
files: |
|
||||||
artifacts/legado-${{ needs.prepare.outputs.versionL }}.apk
|
artifacts/legado-${{ needs.prepare.outputs.versionL }}*.apk
|
||||||
artifacts/legado-${{ needs.prepare.outputs.versionL }}-arm64-v8a.apk
|
|
||||||
artifacts/legado-${{ needs.prepare.outputs.versionL }}-armeabi-v7a.apk
|
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -16,3 +16,4 @@ package-lock.json
|
|||||||
.idea/
|
.idea/
|
||||||
# Kotlin 2.0
|
# Kotlin 2.0
|
||||||
.kotlin/
|
.kotlin/
|
||||||
|
/.vscode/settings.json
|
||||||
|
|||||||
@@ -100,6 +100,13 @@ android {
|
|||||||
"cronet-proguard-rules.pro"
|
"cronet-proguard-rules.pro"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
create("noR8") {
|
||||||
|
initWith(getByName("release"))
|
||||||
|
isMinifyEnabled = false
|
||||||
|
isShrinkResources = false
|
||||||
|
matchingFallbacks += listOf("release")
|
||||||
|
versionNameSuffix = "-noR8"
|
||||||
|
}
|
||||||
getByName("debug") {
|
getByName("debug") {
|
||||||
applicationIdSuffix = ".debug"
|
applicationIdSuffix = ".debug"
|
||||||
if (project.hasProperty("RELEASE_STORE_FILE")) {
|
if (project.hasProperty("RELEASE_STORE_FILE")) {
|
||||||
|
|||||||
@@ -126,7 +126,6 @@ fun BookCover(
|
|||||||
.data(finalPath ?: randomPath)
|
.data(finalPath ?: randomPath)
|
||||||
.placeholder(randomDrawable)
|
.placeholder(randomDrawable)
|
||||||
.error(randomDrawable)
|
.error(randomDrawable)
|
||||||
.size(400, 560)
|
|
||||||
.crossfade(true)
|
.crossfade(true)
|
||||||
.setParameter("sourceOrigin", sourceOrigin)
|
.setParameter("sourceOrigin", sourceOrigin)
|
||||||
.setParameter("loadOnlyWifi", CoverConfig.loadCoverOnlyWifi)
|
.setParameter("loadOnlyWifi", CoverConfig.loadCoverOnlyWifi)
|
||||||
|
|||||||
Reference in New Issue
Block a user