104 lines
3.8 KiB
Markdown
104 lines
3.8 KiB
Markdown
# JE-Skin (SvelteKit + Tauri)
|
||
|
||
## 环境要求
|
||
|
||
- Node.js 18+(建议 LTS)
|
||
- Rust stable(`rustup` + `cargo`)
|
||
- Windows 下请确保已安装 WebView2 Runtime 和 MSVC C++ 构建工具
|
||
- Android 构建需要 Android SDK + NDK
|
||
|
||
## 安装依赖
|
||
|
||
```sh
|
||
npm install
|
||
```
|
||
|
||
## 运行方式
|
||
|
||
1. 仅启动前端(Vite)
|
||
|
||
```sh
|
||
npm run dev
|
||
```
|
||
|
||
默认地址是 `http://localhost:5173`。
|
||
|
||
2. 启动 Tauri 桌面应用(前端 + Rust)
|
||
|
||
```sh
|
||
npm run tauri dev
|
||
```
|
||
|
||
## 构建
|
||
|
||
构建前端静态资源:
|
||
|
||
```sh
|
||
npm run build
|
||
```
|
||
|
||
构建 Tauri 桌面安装包:
|
||
|
||
```sh
|
||
npm run tauri build
|
||
```
|
||
|
||
构建 Android APK / AAB:
|
||
|
||
```sh
|
||
npx tauri android build
|
||
```
|
||
|
||
产物路径:
|
||
- APK: `src-tauri/gen/android/app/build/outputs/apk/universal/release/app-universal-release.apk`
|
||
- AAB: `src-tauri/gen/android/app/build/outputs/bundle/universalRelease/app-universal-release.aab`
|
||
|
||
Release APK 默认使用 debug keystore 签名(`src-tauri/gen/android/app/je-skin-debug.keystore`),可直接 `adb install` 到设备。
|
||
|
||
## 代码检查
|
||
|
||
```sh
|
||
npm run check
|
||
```
|
||
|
||
## v0.5.0 修改记录
|
||
|
||
### Android USB 串口接入
|
||
|
||
- **Tauri 插件注册**:Android 端通过 Rust builder 注册 `usb-serial` 插件,移除 `MainActivity` 中的手动加载逻辑
|
||
- **USB 设备枚举**:使用 `usb-serial-for-android` 的 `UsbSerialProber` 识别串口设备,并返回设备名、厂商 ID、产品 ID、权限状态等信息
|
||
- **USB 权限申请**:完善 Android USB 授权回调,支持按设备名、vendorId/productId 解析设备并处理授权后的打开流程
|
||
- **串口数据桥接**:Kotlin 端打开 USB serial port 后通过 Unix socketpair 将 fd 交给 Rust,Rust 端继续复用 `serial_connect_fd` 数据采集链路
|
||
- **资源释放**:关闭连接时同步释放桥接 fd、USB serial port 和 `UsbDeviceConnection`,避免重复打开后的资源残留
|
||
|
||
### Tauri 权限与构建
|
||
|
||
- 新增 `src-tauri/permissions/usb-serial/default.toml`,声明 Android USB serial 插件命令和前端所需本地命令权限
|
||
- `default.json` 增加 USB serial 与本地命令权限,兼容 snake_case / camelCase 插件命令名
|
||
- Android Gradle 仓库加入 JitPack,用于解析 USB serial 驱动依赖
|
||
- ProGuard 增加 Tauri 插件注解、`UsbSerialPlugin` 和 `com.hoho.android.usbserial` 保留规则,避免 release 包混淆后插件命令失效
|
||
- Android 构建下 `serial_enum` 返回空列表,并仅保留 fd 连接入口,避免桌面串口枚举依赖进入 Android 编译路径
|
||
|
||
## v0.4.0 修改记录
|
||
|
||
### 移动端性能优化
|
||
|
||
- **SignalChart / SummaryCurve**:在 `@media (max-width: 900px)` 下移除 SVG 路径上的 `filter: drop-shadow()`,避免移动端 GPU 软件回流导致卡顿
|
||
- **SignalChart**:隐藏 `.scan-haze`(`mix-blend-mode: screen` 合成开销大),简化面板 `background` / `box-shadow`
|
||
- **SummaryCurve**:移动端移除 `.summary-line` 和 `.summary-dot` 的 drop-shadow 滤镜
|
||
- **页面级**:移动端隐藏 `.hud-noise`(`feTurbulence` SVG 滤镜是最大性能杀手),降低 `.hud-vignette` 透明度,简化 `.hud-gradient`
|
||
- 移除 inactive 面板的 `filter: blur()` 过渡动画
|
||
- 移除 transition 中的 `filter` 属性,添加 `will-change: d` 优化路径更新
|
||
|
||
### 移动端 UI 调整
|
||
|
||
- **隐藏三大金刚**:`@media (max-width: 900px)` 下隐藏标题栏右侧的最小化/最大化/关闭按钮(Android 系统自带窗口管理)
|
||
|
||
### Android 打包
|
||
|
||
- Release 构建配置使用 debug keystore 签名,输出签名 APK 而非 unsigned
|
||
|
||
## 推荐 IDE 插件
|
||
|
||
[VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer)
|