#!/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, 请检查上面日志)"