3.6 KiB
3.6 KiB
构建
在 WSL(Ubuntu)中构建,产物为 Android APK。桌面端可用于本地调试。
1. 一次性环境准备
1.1 基础工具(已具备可跳过)
- Node.js 18+、Rust 1.75+(
cargo)、rustup。 - Android 交叉编译目标:
rustup target add aarch64-linux-android armv7-linux-androideabi \ i686-linux-android x86_64-linux-android
1.2 桌面调试依赖(仅本地跑 desktop 时需要)
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev \
libsoup-3.0-dev librsvg2-dev libjavascriptcoregtk-4.1-dev pkg-config
AI 请求用 rustls,不依赖系统 OpenSSL。
1.3 Android SDK / NDK / JDK
sudo apt-get install -y openjdk-17-jdk
# 下载 commandline-tools 到 ~/android-sdk,然后:
export ANDROID_HOME=$HOME/android-sdk
export NDK_HOME=$ANDROID_HOME/ndk/26.1.10909125 # 版本以实际为准
sdkmanager "platform-tools" "platforms;android-34" \
"build-tools;34.0.0" "ndk;26.1.10909125"
建议把 ANDROID_HOME、NDK_HOME、JAVA_HOME 写入 ~/.bashrc。
1.4 Tauri CLI
cargo install tauri-cli --version "^2.0"
# 或使用项目本地:npm i 后用 npm run tauri
2. 安装依赖
cd /mnt/d/workbench/tauri-android-invoice
npm install
3. 测试
# 前端纯逻辑测试(autofill)
npm test
# Rust 逻辑测试(db + ai 解析)
cd src-tauri && cargo test --lib
当前用例:前端 1-1~1-3,Rust 2-1~2-5(数据库)、3-1~3-3(AI 解析)。
4. 桌面调试(可选)
npm run tauri dev
5. 构建 Android APK
# 首次初始化 Android 工程(生成 src-tauri/gen/android)
npm run tauri android init
# 构建 APK(debug)
npm run tauri android build --debug
# 或 release(需配置签名)
npm run tauri android build
产物路径:
src-tauri/gen/android/app/build/outputs/apk/
6. 生成签名密钥(release 必需)
debug 构建自动用调试签名,release 必须自备 keystore。
6.1 生成 keystore
用 JDK 自带的 keytool 生成(有效期约 27 年):
keytool -genkeypair -v \
-keystore ~/invoice-release.jks \
-alias invoice \
-keyalg RSA -keysize 2048 -validity 10000
按提示设置 keystore 口令、密钥口令与证书信息,妥善保管该文件与口令(丢失将无法更新已上架应用)。
6.2 配置签名给 Gradle
在 src-tauri/gen/android/(执行过 android init 后生成)创建 keystore.properties:
storeFile=/home/<user>/invoice-release.jks
storePassword=你的keystore口令
keyAlias=invoice
keyPassword=你的密钥口令
确认 src-tauri/gen/android/app/build.gradle.kts 读取该文件并应用到 release signingConfig(Tauri 模板通常已生成,如无则手动补充)。
安全提示:
keystore.properties与*.jks含机密,务必加入.gitignore,不要提交。
6.3 构建已签名 release
npm run tauri android build # 生成签名后的 release APK/AAB
7. 安装到设备
adb install -r <上面生成的 apk 路径>
8. 常见问题
- 缺少
gobject-2.0/openssl.pc:补装 1.2 的桌面依赖(仅桌面构建需要)。 - 扫码权限报
barcode-scanner:allow-scan not found:该权限只在移动端,已放入src-tauri/capabilities/mobile.json,桌面构建不加载。 - 图标缺失导致
generate_context!失败:确认src-tauri/icons/icon.png存在,可用npm run tauri icon <源图>生成全套。 - NDK 找不到:检查
NDK_HOME是否指向真实存在的版本目录。