Skip to content

Commit 6562568

Browse files
committed
chore(merge): 合并 dev 的 bubblewrap APK 构建链路修复到 main
2 parents cff07b2 + 18c9d09 commit 6562568

1 file changed

Lines changed: 39 additions & 16 deletions

File tree

‎.github/workflows/mobile-release.yml‎

Lines changed: 39 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -142,15 +142,16 @@ jobs:
142142
echo "PWA CDN prefetch done"
143143
144144
# ---------------------------------------------------------------------------
145-
# Android APK(B 方案:TWA 打包):bubblewrap 基于已部署的 PWA manifest
146-
# 生成 TWA 工程并构建签名 APK,上传 GitHub Release + 服务器下载目录
145+
# Android APK(B 方案:TWA 打包):基于已入库的 android/twa 工程构建签名 APK,
146+
# 上传 GitHub Release + 服务器下载目录
147147
# (官网「下载 Android APK」直链 = entropydecrease.com/downloads/entropydecrease.apk)。
148148
#
149149
# ⚠️ 首次设置(2026-08-16 已完成:bubblewrap init 生成 android/twa/ + keystore):
150150
# keystore = android/twa/android.keystore(alias=android,packageId=com.entropydecrease.twa)
151151
# 1. 将 android/twa/android.keystore 转 base64 存入 Secret ANDROID_KEYSTORE_BASE64
152152
# 2. Secret ANDROID_KEYSTORE_PASS / ANDROID_KEY_PASS = keystore 密码(init 时 keytool 输入值)
153-
# CI 只做非交互 update + build;android/twa/ 提交仓库(*.keystore 已 gitignore)
153+
# CI 直接 build(密码经 BUBBLEWRAP_* 环境变量传入,CLI 无密码参数);
154+
# android/twa/ 提交仓库(*.keystore 已 gitignore)
154155
# ---------------------------------------------------------------------------
155156
build-apk:
156157
needs: deploy
@@ -173,30 +174,52 @@ jobs:
173174
KEYSTORE_B64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
174175
run: |
175176
if [ -z "$KEYSTORE_B64" ]; then
176-
echo "::error::ANDROID_KEYSTORE_BASE64 未配置(见 job 注释首次设置),跳过 APK 构建"
177-
exit 0
177+
echo "::error::ANDROID_KEYSTORE_BASE64 未配置(见 job 注释首次设置),APK 构建无法继续"
178+
exit 1
178179
fi
179180
echo "$KEYSTORE_B64" | base64 -d > /tmp/entropydecrease.keystore
180-
- name: Update TWA project to latest PWA
181+
# bubblewrap 每次命令都会加载 ~/.bubblewrap/config.json;CI 全新 runner
182+
# 无此文件时 jdkPath/androidSdkPath 为空,会弹交互安装提示导致非交互环境
183+
# exit 130(v0.38~v0.40 发版 build-apk 连续失败根因)。预置配置指向
184+
# setup-java/setup-android 提供的路径,消除交互。
185+
- name: Configure bubblewrap (jdk/sdk paths)
181186
run: |
182-
cd android
183-
bubblewrap update \
184-
--manifest https://entropydecrease.com/pwa/manifest.webmanifest \
185-
--directory twa
187+
mkdir -p ~/.bubblewrap
188+
cat > ~/.bubblewrap/config.json <<EOF
189+
{"jdkPath":"$JAVA_HOME","androidSdkPath":"$ANDROID_HOME"}
190+
EOF
191+
# bubblewrap 校验 SDK 根目录需存在 tools/ 或 bin/(新式 cmdline-tools
192+
# 布局没有),缺则建空占位目录通过校验
193+
if [ ! -d "$ANDROID_HOME/tools" ] && [ ! -d "$ANDROID_HOME/bin" ]; then
194+
mkdir -p "$ANDROID_HOME/bin"
195+
fi
196+
# 缺 build-tools 36.1.0 时预装:bubblewrap 自动安装只找 tools/bin 或 bin
197+
# 下的 sdkmanager(新式布局找不到),故显式用 cmdline-tools 的 sdkmanager
198+
if [ ! -d "$ANDROID_HOME/build-tools/36.1.0" ]; then
199+
SDKMANAGER="$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager"
200+
[ -f "$SDKMANAGER" ] || SDKMANAGER=$(find "$ANDROID_HOME/cmdline-tools" -name sdkmanager -type f 2>/dev/null | head -n1)
201+
if [ -n "$SDKMANAGER" ]; then
202+
yes | "$SDKMANAGER" --sdk_root="$ANDROID_HOME" "build-tools;36.1.0"
203+
fi
204+
fi
205+
# TWA 工程已随仓库生成(8e2f68c),twa-manifest.json 与 manifest-checksum.txt
206+
# 一致,build 的变更检测不会触发交互;无需 update(其 --manifest 参数指向
207+
# 本地 twa-manifest.json 而非 web manifest URL)。版本号由仓库文件维护。
186208
- name: Build signed APK
187209
env:
188-
KEYSTORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASS }}
189-
KEY_PASS: ${{ secrets.ANDROID_KEY_PASS }}
210+
# bubblewrap build 的密码仅从这两个环境变量读取(CLI 无密码参数)
211+
BUBBLEWRAP_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASS }}
212+
BUBBLEWRAP_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASS }}
190213
run: |
191214
cd android/twa
192215
bubblewrap build \
193-
--keystorePath /tmp/entropydecrease.keystore \
194-
--keystorePass "$KEYSTORE_PASS" \
195-
--keyAlias android \
196-
--keyPass "$KEY_PASS"
216+
--signingKeyPath /tmp/entropydecrease.keystore \
217+
--signingKeyAlias android
197218
- name: Verify APK artifact
198219
run: test -f android/twa/app-release-signed.apk && echo "APK OK"
199220
- name: Upload APK to GitHub Release
221+
# 仅 tag 触发时存在对应 release;workflow_dispatch 补跑时跳过
222+
if: startsWith(github.ref, 'refs/tags/')
200223
uses: softprops/action-gh-release@v2
201224
with:
202225
files: android/twa/app-release-signed.apk

0 commit comments

Comments
 (0)