使用 Android Link SDK 接入
目标
设备能通过 概述 及少量的修改就可以快速接入 Tuya IoT Core on AliCloud (hedv)项目,使设备具有连云的能力。
前置条件
已准备好 开发环境
已获取设备认证信息
步骤
使用 AndroidStudio 打开下载好的工程文件
在 Gradle Scripts 下的 local.properties 中,修改 SDK Location 配置,定位到自己电脑上 Android SDK 目录
修改认证方式(二选一)
两种方式:替换证书、采用 tcp 连接。
tcp 连接是不安全的,建议您仅在测试验证中使用。
正式环境中,建议采用 TLS 加密传输,可以采用替换证书方案。
替换证书(二选一)
一、代码替换
在 app/src/main 目录下,新建 assets 文件夹,将 tuyarootca.crt 复制到该目录下。
在 app/src/main/java/com.aliyun.alink.devicesdk 目录下,manager/InitManager.java 文件中,找到 Step4:mqtt 设置,params.mqttClientConfig = clientConfig; 前加入
// 从应用资源中加载根证书文件
try {
// 从assets目录加载证书文件为字节数组
String certFileName = "tuyarootca.crt";
java.io.InputStream assetStream = context.getAssets().open(certFileName);
// 读取字节数组
byte[] certBytes = new byte[assetStream.available()];
assetStream.read(certBytes);
assetStream.close();
// 创建字节数组输入流
clientConfig.channelRootCrtFile = new java.io.ByteArrayInputStream(certBytes);
AppLog.d(TAG, "已成功加载证书文件: " + certFileName + ",大小: " + certBytes.length + " 字节");
} catch (Exception e) {
AppLog.e(TAG, "加载根证书失败: " + e.getMessage());
}
二、手动替换 Gradle 环境下 Cache 的证书文件
在 app/src/main/java/com.aliyun.alink.devicesdk 目录下,app/DemoApplication.java 文件中 130 行,进入 MqttInitParams 定义
MqttInitParams initParams = new MqttInitParams(productKey, productSecret, deviceName, deviceSecret, MqttConfigure.MQTT_SECURE_MODE_TLS);
点击上方:Choose Source,找到 assets 目录
替换 root_s1.crt 为 tuyarootca.crt
采用 tcp 连接
在 app/src/main/java/com.aliyun.alink.devicesdk 目录下,manager/InitManager.java 文件中,找到 Step4:mqtt 设置,params.mqttClientConfig = clientConfig; 前加入
clientConfig.secureMode = 3;
并在后续三元组信息中,改为 1883 端口
取消物模型初始化(可选)
如果您不需要使用物模型相关功能,可以在 app/src/main/java/com.aliyun.alink.devicesdk 目录下,manager/InitManager.java 文件中,找到 Step5:高阶功能配置,默认均为关闭状态,其中ioTDMConfig.enableThingModel = true; 改为 false
填入自己的设备三元组信息
在res>raw>deviceinfo中填入自己设备的三元组信息
替换域名,选择端口 "mqttHost": "si-***********.tuyacloud.com:8883",(tcp 连接为 1883)
替换三元组信息
"productKey": "*********",
"deviceName": "******************",
"deviceSecret": "*************************",
编译运行
构建 Android 项目,并运行,提示“初始化成功”,或者去平台查看设备连接状态。