# 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`),不需要额外存储权限。