# demo-android **Repository Path**: da-ji/demo-android ## Basic Information - **Project Name**: demo-android - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-29 - **Last Updated**: 2026-06-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 图书管理 Demo — 真机 Android 版 这个项目是一个**完整的 Android App**,运行在真机上,使用真实的 DCloud uni-app SDK。 ## 与原工程对照 | 文件 | 对应原工程 | 说明 | |------|-----------|------| | `DemoApplication.java` | `RobotApplication.java` | 入口,启动 Ktor | | `DemoApp.kt` | `RobotApplication.kt` | Ktor 启动/停止 | | `BookModule.java` | `RFIDTestFeatureImpl.java` | 真实 UniModule(`@UniJSMethod`) | | `dcloud_uniplugins.json` | 同文件 | 模块注册表 | | `__uniappview.html` | `__uniappview.html` | DCloud WebView 中的前端页面 | | `manifest.json` | `manifest.json` | uni-app 配置 | | `BookService.kt` | `RobotControlService` 等 | 业务逻辑单例 | | `BookRepository.kt` | Room DAO | SQLite 数据访问 | | `BookRoutes.kt` | `InventoryRoutes.kt` | Ktor HTTP 路由 | | `Routing.kt` | `Routing.kt` | 中央路由配置 | ## 双通道架构 ``` ┌── uni-app 前端(DCloud WebView)──────────────┐ │ │ │ 通道 1:uni.requireNativePlugin('BookModule') │ │ ↓ │ │ dcloud_uniplugins.json → BookModule.java │ │ ↓ │ │ @UniJSMethod(uiThread=false) │ │ addBook(paramsJson, callback) │ │ ↓ │ │ new Thread → BookService.getInstance() │ │ ↓ │ │ mMainHandler.post → callback.invoke(json) │ │ │ │ 通道 2:fetch('http://127.0.0.1:9797/...') │ │ ↓ │ │ Ktor CIO Server → BookRoutes.kt │ │ ↓ │ │ call.receive() │ │ ↓ │ │ BookService.getInstance().addBook(...) │ │ ↓ │ │ call.respond(ApiResponse(...)) │ │ │ │ 两条通道共用同一个 BookService 单例! │ │ 共用同一份 SQLite 数据! │ └────────────────────────────────────────────────┘ ``` ## 编译和安装 ```bash # 1. 确保环境 export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export ANDROID_HOME=/home/daji/Android/Sdk # 2. 编译 cd demo-android ./gradlew assembleDebug # 3. APK 位置 ls -lh app/build/outputs/apk/debug/app-debug.apk # 4. 安装到手机(USB 连接) adb install app/build/outputs/apk/debug/app-debug.apk # 5. 或者直接 adb 安装运行 adb install -r app/build/outputs/apk/debug/app-debug.apk adb shell am start -n com.example.demoandroid/io.dcloud.PandoraEntry # 6. 查看日志 adb logcat | grep -E "DemoApp|BookModule|BookRepo" ``` ## 关键代码位置 想学习这套架构,按这个顺序读: 1. **`dcloud_uniplugins.json`** — 13 行,模块注册 2. **`DemoApplication.java`** — 35 行,启动入口 3. **`BookModule.java`** — 175 行,**核心!** UniModule 实现,每个方法都标注了与原工程的对照 4. **`__uniappview.html`** — 288 行,前端页面,同时调用两条通道 5. **`BookService.kt`** — 52 行,被两条通道共享的业务逻辑 6. **`BookRepository.kt`** — 110 行,SQLite 数据访问 7. **`BookRoutes.kt`** — 80 行,Ktor HTTP 路由