101 lines
3.8 KiB
Markdown
101 lines
3.8 KiB
Markdown
# Tauri Android 能力演示 App
|
||
|
||
一个基于 [Tauri v2](https://v2.tauri.app/) 的示例应用,用于集中演示 Tauri 在 Android 平台上可调用的常见原生能力。前端使用 Vite + TypeScript(无框架),后端为 Rust。
|
||
|
||
## 演示的能力
|
||
|
||
| 卡片 | 演示内容 | 依赖 |
|
||
| --- | --- | --- |
|
||
| Rust 命令调用 | 前端 `invoke` 调用 Rust 侧 `greet` / `system_summary` 命令 | `@tauri-apps/api` |
|
||
| 设备与系统信息 | 读取平台、系统版本、架构、主机名 | `plugin-os` |
|
||
| 原生对话框 | 消息框、确认框、文件选择器 | `plugin-dialog` |
|
||
| 系统通知 | 发送系统通知(含运行时权限申请) | `plugin-notification` |
|
||
| 文件读写 | 在应用私有目录读写文本文件 | `plugin-fs` |
|
||
| 剪贴板 | 读写系统剪贴板 | `plugin-clipboard-manager` |
|
||
| HTTP 请求 | 发起原生网络请求,绕过浏览器同源限制 | `plugin-http` |
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
tauri-demo/
|
||
├── index.html # 页面骨架
|
||
├── package.json # 前端依赖与脚本
|
||
├── vite.config.ts # Vite 配置(固定端口 1420)
|
||
├── tsconfig.json
|
||
├── src/ # 前端源码
|
||
│ ├── main.ts # 入口:定义并挂载所有能力卡片
|
||
│ ├── ui.ts # 卡片渲染组件
|
||
│ └── styles.css
|
||
└── src-tauri/ # Rust 后端与 Tauri 配置
|
||
├── Cargo.toml
|
||
├── build.rs
|
||
├── tauri.conf.json # 应用配置(含 bundle、identifier)
|
||
├── capabilities/ # 权限(capability)声明
|
||
├── icons/ # 应用图标
|
||
└── src/
|
||
├── lib.rs # 命令与插件注册、移动端入口
|
||
└── main.rs # 桌面端入口
|
||
```
|
||
|
||
## 环境要求
|
||
|
||
构建 Android APK 需要以下工具链:
|
||
|
||
- Node.js 18+(当前环境:22)
|
||
- Rust(`rustup` + `cargo`)——**当前环境未安装**
|
||
- JDK 17——已就绪:`C:\Users\occul\SynologyDrive\bin\jdk-17.0.10`
|
||
- Android SDK——已就绪:`C:\Users\occul\SynologyDrive\bin\android-sdk-windows`
|
||
- Android NDK——**当前环境缺失,需安装**
|
||
- Android Platform API 33+ 与对应 build-tools——当前最高仅 `android-30`,**需补装**
|
||
|
||
### 待补充安装项
|
||
|
||
1. **Rust 与 Android 目标**
|
||
```powershell
|
||
# 安装 rustup(https://rustup.rs),随后添加 Android 目标:
|
||
rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android
|
||
```
|
||
2. **Android NDK 与新版平台**(用 SDK Manager 或 sdkmanager)
|
||
```powershell
|
||
sdkmanager "ndk;26.1.10909125" "platforms;android-34" "build-tools;34.0.0"
|
||
```
|
||
|
||
## 环境变量
|
||
|
||
构建前需设置(PowerShell 会话内示例):
|
||
|
||
```powershell
|
||
$env:JAVA_HOME = "C:\Users\occul\SynologyDrive\bin\jdk-17.0.10"
|
||
$env:ANDROID_HOME = "C:\Users\occul\SynologyDrive\bin\android-sdk-windows"
|
||
# NDK_HOME 指向实际安装的 NDK 版本目录
|
||
$env:NDK_HOME = "$env:ANDROID_HOME\ndk\26.1.10909125"
|
||
$env:Path = "$env:JAVA_HOME\bin;$env:USERPROFILE\.cargo\bin;$env:Path"
|
||
```
|
||
|
||
## 构建与运行
|
||
|
||
```powershell
|
||
# 1. 安装前端依赖
|
||
npm install
|
||
|
||
# 2. 桌面端预览(可选,用于快速验证 UI 与命令)
|
||
npm run tauri dev
|
||
|
||
# 3. 初始化 Android 工程(首次执行,生成 src-tauri/gen/android)
|
||
npm run android:init
|
||
|
||
# 4. 连接设备/模拟器后实时调试
|
||
npm run android:dev
|
||
|
||
# 5. 打包 APK / AAB
|
||
npm run android:build
|
||
```
|
||
|
||
产物位于 `src-tauri/gen/android/app/build/outputs/` 下。
|
||
|
||
## 说明
|
||
|
||
- HTTP 卡片默认请求 `https://httpbin.org/get`,权限范围在 `src-tauri/capabilities/default.json` 中限定为 `https://*`。
|
||
- 通知能力在 Android 13+ 需要运行时授权,首次点击会弹出系统权限框。
|
||
- 文件读写位于应用私有数据目录(`BaseDirectory.AppData`),不需要额外存储权限。
|