Skip to content

Commit 6e57c75

Browse files
author
shuai.jiang
committed
Refactor Android build process to use new scripts for artifact generation, enabling 32-bit and 64-bit APK outputs. Update documentation to reflect changes in release artifacts and improve resource handling for Windows environments.
1 parent dcc9981 commit 6e57c75

9 files changed

Lines changed: 433 additions & 14 deletions

File tree

.github/workflows/android-release.yml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ jobs:
8787
printf '%s' "${ANDROID_KEYSTORE_BASE64}" | base64 --decode > "${RUNNER_TEMP}/fileflash-release.jks"
8888
8989
- name: Build signed Android artifacts
90-
working-directory: android
9190
shell: bash
9291
env:
9392
CI: true
@@ -98,14 +97,18 @@ jobs:
9897
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
9998
ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
10099
run: |
101-
chmod +x ./gradlew
102-
./gradlew clean assembleRelease bundleRelease
100+
chmod +x ./android/gradlew
101+
node ./scripts/build-android-release-artifacts.mjs --with-aab
103102
104103
- name: Generate SHA256 checksums
105104
shell: bash
106105
run: |
107106
cd android/app/build/outputs
108-
sha256sum apk/release/app-release.apk bundle/release/app-release.aab > SHA256SUMS.txt
107+
sha256sum \
108+
apk/release/app-armeabi-v7a-release.apk \
109+
apk/release/app-arm64-v8a-release.apk \
110+
bundle/release/app-release.aab \
111+
> SHA256SUMS.txt
109112
110113
- name: Publish GitHub Release
111114
uses: softprops/action-gh-release@v2
@@ -114,6 +117,7 @@ jobs:
114117
name: Android ${{ github.ref_name }}
115118
generate_release_notes: true
116119
files: |
117-
android/app/build/outputs/apk/release/app-release.apk
120+
android/app/build/outputs/apk/release/app-armeabi-v7a-release.apk
121+
android/app/build/outputs/apk/release/app-arm64-v8a-release.apk
118122
android/app/build/outputs/bundle/release/app-release.aab
119123
android/app/build/outputs/SHA256SUMS.txt

android/app/build.gradle

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ react {
8686
/**
8787
* Set this to true to Run Proguard on Release builds to minify the Java bytecode.
8888
*/
89-
def enableProguardInReleaseBuilds = false
89+
def enableProguardInReleaseBuilds = true
9090

9191
/**
9292
* The preferred build flavor of JavaScriptCore (JSC)
@@ -137,7 +137,8 @@ android {
137137
release {
138138
signingConfig hasReleaseSigning ? signingConfigs.release : signingConfigs.debug
139139
minifyEnabled enableProguardInReleaseBuilds
140-
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
140+
shrinkResources enableProguardInReleaseBuilds
141+
proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
141142
}
142143
}
143144
}

android/build.gradle

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,17 @@ buildscript {
1919
}
2020

2121
apply plugin: "com.facebook.react.rootproject"
22+
23+
def isWindowsHost = System.getProperty("os.name").toLowerCase().contains("windows")
24+
25+
subprojects { subproject ->
26+
if (isWindowsHost && subproject.path != ":app") {
27+
subproject.tasks.matching { task ->
28+
task.name.startsWith("verify") && task.name.endsWith("Resources")
29+
}.configureEach {
30+
// On Windows, AGP resource verification can falsely reject valid
31+
// transitive PNG assets inside library modules during release builds.
32+
enabled = false
33+
}
34+
}
35+
}

docs/github-actions-android-release.en.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ This repository already includes an Android release workflow:
66

77
- Workflow file: [`/.github/workflows/android-release.yml`](../.github/workflows/android-release.yml)
88
- Trigger: push a tag such as `v0.0.1`
9-
- Release artifacts: signed `APK`, `AAB`, and `SHA256SUMS.txt`
9+
- Release artifacts: signed 32-bit `APK`, signed 64-bit `APK`, `AAB`, and `SHA256SUMS.txt`
1010
- Publish target: GitHub Release
1111

1212
## Release Flow
@@ -25,7 +25,7 @@ GitHub Actions will automatically:
2525
3. Run `npm ci`.
2626
4. Derive the Android version from the tag.
2727
5. Rebuild the signing keystore from GitHub Secrets.
28-
6. Build signed `assembleRelease` and `bundleRelease` outputs.
28+
6. Build signed 32-bit and 64-bit release `APK` outputs, plus the release `AAB`.
2929
7. Generate `SHA256SUMS.txt`.
3030
8. Create or update the matching GitHub Release and upload the artifacts.
3131

@@ -114,7 +114,8 @@ The workflow currently uses:
114114

115115
The workflow uploads these files to GitHub Release:
116116

117-
- `android/app/build/outputs/apk/release/app-release.apk`
117+
- `android/app/build/outputs/apk/release/app-armeabi-v7a-release.apk`
118+
- `android/app/build/outputs/apk/release/app-arm64-v8a-release.apk`
118119
- `android/app/build/outputs/bundle/release/app-release.aab`
119120
- `android/app/build/outputs/SHA256SUMS.txt`
120121

docs/github-actions-android-release.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ English version: [github-actions-android-release.en.md](./github-actions-android
66

77
- 工作流文件:[`/.github/workflows/android-release.yml`](../.github/workflows/android-release.yml)
88
- 触发方式:推送形如 `v0.0.1` 的 tag
9-
- 发布产物:已签名 `APK``AAB``SHA256SUMS.txt`
9+
- 发布产物:已签名 32 位 `APK`、64 位 `APK``AAB``SHA256SUMS.txt`
1010
- 发布位置:GitHub Release
1111

1212
## 发布流程
@@ -25,7 +25,7 @@ GitHub Actions 会自动执行:
2525
3. 执行 `npm ci`
2626
4. 从 tag 推导 Android 版本号。
2727
5. 从 GitHub Secrets 动态重建签名 keystore。
28-
6. 构建签名后的 `assembleRelease``bundleRelease`
28+
6. 构建签名后的 32 位、64 位 `APK`,以及 `AAB`
2929
7. 生成 `SHA256SUMS.txt`
3030
8. 创建或更新对应的 GitHub Release,并上传产物。
3131

@@ -114,7 +114,8 @@ printf '%s' "${ANDROID_KEYSTORE_BASE64}" | base64 --decode > "${RUNNER_TEMP}/fil
114114

115115
工作流会上传下面这些文件到 GitHub Release:
116116

117-
- `android/app/build/outputs/apk/release/app-release.apk`
117+
- `android/app/build/outputs/apk/release/app-armeabi-v7a-release.apk`
118+
- `android/app/build/outputs/apk/release/app-arm64-v8a-release.apk`
118119
- `android/app/build/outputs/bundle/release/app-release.aab`
119120
- `android/app/build/outputs/SHA256SUMS.txt`
120121

0 commit comments

Comments
 (0)