# 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)