iboard/scripts/wsl/build-apk.sh
2026-08-03 18:08:19 +08:00

43 lines
1.5 KiB
Bash

#!/usr/bin/env bash
# iBoard Android APK 打包
# 在 WSL 内执行: bash scripts/wsl/build-apk.sh [debug|release]
# 默认 debug, release 需要先配签名 (见末尾)
set -euo pipefail
WIN_PROJECT='/mnt/d/workbench/iboard'
cd "$WIN_PROJECT"
VARIANT="${1:-debug}"
echo "构建变体: $VARIANT"
# 环境变量 (setup.sh 已写过, 防御性再写一次)
export ANDROID_HOME="${ANDROID_HOME:-$HOME/android-sdk}"
export ANDROID_NDK_HOME="${ANDROID_NDK_HOME:-$ANDROID_HOME/ndk/26.1.10909125}"
export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$HOME/.cargo/bin:$PATH"
# 1. 先确保前端 dist/ 最新
echo "=== 1. 构建前端 ==="
npm run build
# 2. 进 src-tauri 跑 cargo tauri android build
echo "=== 2. 构建 APK ==="
cd src-tauri
if [ "$VARIANT" = "release" ]; then
# release 需要签名, 首次请先生成 keystore:
# keytool -genkey -v -keystore ~/iboard-release.keystore -alias iboard \
# -keyalg RSA -keysize 2048 -validity 10000
# 然后在 ~/.gradle/gradle.properties 配:
# IBOARD_UPLOAD_STORE_FILE=/path/to/iboard-release.keystore
# IBOARD_UPLOAD_KEY_ALIAS=iboard
# IBOARD_UPLOAD_STORE_PASSWORD=...
# IBOARD_UPLOAD_KEY_PASSWORD=...
npx tauri android build -- --release
else
npx tauri android build -- --debug
fi
echo
echo "=== 产物位置 ==="
APK_DIR="$WIN_PROJECT/src-tauri/target/$( [ "$VARIANT" = "release" ] && echo release || echo debug )/bundle/android/app/build/outputs/apk/$VARIANT"
ls -lh "$APK_DIR"/*.apk 2>/dev/null || echo "(未找到 APK, 请检查上面日志)"