纳入范围: - 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
103 lines
3.6 KiB
Markdown
103 lines
3.6 KiB
Markdown
# 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 已初始化成功。
|