adityachandak287/airmini-sync

GitHub: adityachandak287/airmini-sync

一款通过蓝牙直连 ResMed AirMini CPAP 设备并提取、解密睡眠遥测数据为标准 JSON 的独立 Android 应用。

Stars: 0 | Forks: 0

# AirMini Sync 一款独立的 Jetpack Compose Android 应用程序,通过 Bluetooth Classic (RFCOMM SPP) 直接连接到 ResMed AirMini CPAP 机器,获取解密后的遥测睡眠记录,并将其导出为标准的 JSON 格式。 这款完全独立的应用程序可在设备上直接处理经过身份验证的握手(DH Exchange)、通过 JNI C++ 库(`libfiglib.so`)进行加密流解密以及文件共享。 ## 架构与项目结构 本项目已完全迁移至 `android-app/` 下的独立 Android 应用程序结构: * **Jetpack Compose UI**:简洁、支持浅色/深色模式的 Material 布局,提供设备选择、PIN 输入、交互式终端日志记录和数据导出功能。 * **JNI 解密**:将解密包装器打包在 `/jniLibs/` 内,以便直接在 JVM runtime 中解析和解码二进制遥测数据包。 * **双构建配置**:支持开发者/调试构建与生产发布构建的并行安装。 ## 本地开发与构建 本项目在 `android-app/` 目录下包含一个终端辅助脚本 `build.sh`,用于自动处理编译器目标和 Java 配置。 ### 步骤 1:安装前置条件 确保您已安装 JDK 21 和 Android SDK 命令行工具: ``` brew install --cask temurin@21 brew install --cask android-commandlinetools ``` ### 步骤 2:构建并运行 Debug APK(推荐用于测试) Debug 版本会以包名 `com.airmini.sync.debug` 并行安装,其启动器标签为 **AirMini Sync Debug**: ``` cd android-app ./build.sh adb install -r app/build/outputs/apk/debug/app-debug.apk ``` ### 步骤 3:构建并运行已签名的 Release APK 要构建可用于生产环境的已签名 Release APK(该版本以干净的包名 `com.airmini.sync` 安装),您必须在 keystore 提示处提供密码: ``` cd android-app ./build.sh --release # 在提示符处输入你的 Keystore 密码 adb install -r app/build/outputs/apk/release/app-release.apk ``` ## 发布流水线与 CI/CD (GitHub Actions) 本仓库已在 `.github/workflows/build-apk.yml` 中配置了全自动发布流水线。 每当您向 GitHub 推送 Git tag 时,CI 流水线会自动: 1. 从 secrets 中解码您的发布 keystore。 2. 编译可用于生产环境的已签名 Release APK。 3. 自动根据自上一个 tag 以来的 commit 日志生成发布说明。 4. 如果 tag 包含修饰符(例如 `0.0.1-alpha1`),则将发布标记为 **预发布**;如果是干净的语义化版本(例如 `0.0.1`),则标记为 **正式发布**。 ### 如何触发发布: ``` # 1. 提交并将你的更改 push 到 main git push origin main # 2. 为 release 打 tag git tag 0.0.1-alpha1 # 3. Push tag 以触发 pipeline git push origin 0.0.1-alpha1 ```
标签:Jetpack Compose, JNI, 医疗数据, 安卓应用, 数据提取, 物联网, 蓝牙通信