iotsaas/Android/README.md
2995840376 0ce191c448 chore: 初始化 iotsaas 版本库基线
纳入范围:
- backend/  Spring Boot 多模块后端(iot-common/device/rule/data/alarm/auth)
- frontend/admin/  Vue3 + Element Plus 管理后台
- Android/   涂鸦原生 APP (com.xhai.iot)
- backend/sql/  Flyway 风格迁移脚本(V2~V21)
- docs/       对接文档与设计文档

排除范围:
- 构建产物: node_modules/ target/ build/ dist/ .gradle/
- 签名密钥: *.jks *.keystore (严禁入库)
- 本机配置: Android/local.properties
- 运行日志: logs/ *.log
- AI 协作本地数据 .codebuddy/ 与第三方 demo tuya-demo/

.gitattributes 统一以 LF 存储, Windows 批处理保留 CRLF
2026-10-27 12:00:41 +08:00

103 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# XHai 智能物联 - Android 客户端
基于涂鸦 **Thing Smart Home SDK 7.5.0** 原生开发的 Android 客户端。
实现:**用户登录(iotsaas 后端)+ 涂鸦账号绑定/授权**。
---
## 一、功能范围(当前阶段)
| 功能 | 状态 | 说明 |
|------|------|------|
| 用户登录 | ✅ | 对接 iotsaas 后端 `POST /api/v1/auth/member/login` |
| 用户注册 | ✅ | 对接 `POST /api/v1/auth/member/register` |
| 涂鸦账号绑定 | ✅ | 涂鸦原生 SDK 登录,绑定后同步 `tuya_user_binding` |
| 涂鸦账号解绑 | ✅ | 对接 `POST /api/v1/tuya/auth/unbind` |
| 绑定状态查询 | ✅ | 对接 `GET /api/v1/tuya/auth/status` |
| 设备管理/控制 | ⏳ | 走通绑定后再开发 |
---
## 二、环境要求
- **Android Studio**(Hedgehog 或更新版本)
- **JDK 17**(涂鸦 SDK 需要)
- **Android SDK**(API 34)
- **NDK**(`arm64-v8a`、`armeabi-v7a`)
---
## 三、涂鸦平台配置(必须完成)
> ⚠️ **关键**:涂鸦 SDK 初始化要求 `AppKey`、`AppSecret`、**包名**、**签名 keystore 的 SHA256** 四项全部与涂鸦平台登记一致,否则报 `illegal client`。
### 1. 确认 App 授权信息
登录 [涂鸦开发者平台](https://developer.tuya.com/cn/) → 云开发 → 你的项目 → **App 授权**:
- **AppKey**(Client ID):`wuvw788psccvxndpyxnv`
- **AppSecret**(Client Secret):需确认
- **包名**:`com.xhai.iot`
### 2. 配置签名证书 SHA256
涂鸦 SDK 校验应用签名。必须把**打包用 keystore 的 SHA256** 配置到涂鸦平台对应 App 的"Android 签名证书"里。
本项目已生成开发用 keystore:`app/xhai_iot.jks`(密码 `xhai123456`,alias `xhai`)
- **SHA256**:`F0:D1:85:41:CD:D2:21:E2:84:77:FF:E1:A4:CF:F7:19:41:D4:8A:BD:B7:77:83:F2:C0:DB:CE:FB:69:25:F6:13`
- **SHA1**(涂鸦 identifier 用):`0C44B4A0C696BC823B5BEFD52B16CFBF7D169B78`
> ⚠️ **注意**:涂鸦平台"App授权"里的 identifier(SHA1+包名)必须与打包签名一致。若涂鸦后台已配置了其他 keystore 的 SHA1,请使用那个 keystore 替换 `app/xhai_iot.jks`,或在涂鸦后台更新 SHA1。
---
## 四、构建步骤
### 方式一:Android Studio(推荐)
1. 用 Android Studio 打开 `f:/work/iotsaas/Android` 文件夹
2. Android Studio 会自动下载 Gradle、AGP、涂鸦 SDK 依赖(需网络)
3. 等待首次 Gradle Sync 完成
4. 连接手机,点击 Run
### 方式二:命令行
```bash
cd Android
gradle assembleDebug
```
---
## 五、关键配置文件
| 文件 | 作用 |
|------|------|
| `app/build.gradle` | 依赖、签名、ABI 配置 |
| `app/src/main/AndroidManifest.xml` | AppKey/AppSecret、Activity 注册 |
| `app/src/main/java/.../data/ApiConfig.java` | 后端地址、涂鸦密钥 |
| `app/src/main/java/.../TuyaApplication.java` | 涂鸦 SDK 初始化 |
| `app/src/main/java/.../ui/TuyaBindActivity.java` | 涂鸦登录+绑定 |
---
## 六、API 对接(iotsaas 后端)
| 后端接口 | 方法 | 作用 |
|---------|------|------|
| `/api/v1/auth/member/login` | POST | 登录 |
| `/api/v1/auth/member/register` | POST | 注册 |
| `/api/v1/tuya/auth/status` | GET | 涂鸦绑定状态 |
| `/api/v1/tuya/auth/bind-native` | POST | 绑定同步 |
| `/api/v1/tuya/auth/unbind` | POST | 解绑 |
> 所有涂鸦接口需要 `Authorization: Bearer <token>` 头。
---
## 七、常见问题
### Q1: 启动报 `illegal client`
检查 AppKey/AppSecret/包名/keystore SHA256 四项与涂鸦平台是否一致。
### Q2: 绑定同步失败
检查后端是否已登录(token 有效)、`tuya_user_binding` 是否写入。
### Q3: 涂鸦登录失败
确认涂鸦账号存在、网络正常、SDK 已初始化成功。