Matter垂直品类SDK集成
一、概述
本文主要介绍如何集成Matter垂直品类SDK
二、前提条件
三、功能特性
3.1 主体功能
- 支持Aqara Matter中枢配网
- 支持Aqara Matter中枢设备控制
- 支持Matter子设备配网
- 支持Matter子设备控制
PS:当前Matter子设备无法直接通过SDK配网接入,需要借助Aqara Matter中枢(使用Aqara私有协议Magic Pair配网)进行接入后,才可以进行设备配网与控制
3.2 SDK大小
| 依赖库 | 说明 | 大小 |
|---|---|---|
| React Native(0.63.4) | React Native框架 | 10MB |
| Aqara桥接层 | SDK运行所必须的组件 | 24MB |
| 其他 | SDK运行所必须的组件 | 14MB |
| 合计 | - | 48MB |
注意:48MB为集成SDK最大增量,即第三方App的依赖和SDK的第三方依赖毫无交集时。通常情况下,会小于该值。
3.3 兼容性信息
Matter SDK需要最新版本的编译工具及编译环境,以下是您必须满足的条件:
支持的Android版本
| 参数 | 版本号 | 描述 |
|---|---|---|
| minSdkVersion | 26 | Android 8 |
| targetSdkVersion | 34 | Android 14 |
| compileSdk | 34 | Android 14 |
编译工具&环境
| 参数 | 最低版本号要求 | 描述 |
|---|---|---|
| Android Studio Version | 2024.3.1 | 非必要 |
| Android Gradle Plugin Version | 8.7 | 非必要 |
| Gradle Version | 8.9 | 必要 |
| JDK Version | 17 | 必要 |
| NDK Version | 27.0.12077973 | 非必要 |
| Kotlin Version | 2.1.0 | 必要 |
| SDK Build Tools | 34.0.0 | 必要 |
注意:不满足条件,Demo或者SDK无法正常工作。
3.3.1 新项目创建
如果您是新项目,可按照上述要求,下载最新版本的Android Studio(2024.3.1)创建新项目即可。
3.3.2 老项目升级
如果您是老项目,升级Kotlin版本至2.0后,可能会对您的代码或者业务产生影响。以下是一些可供参考的官方文档:
附录1: Google官方文档-Android Studio与AGP的版本关系
附录2: Google官方文档-AGP升级指引
附录4: Gradle官方文档-Gradle版本与Kotlin版本的对应关系
四、集成
4.1 安装Node
集成Matter SDK之前,需要先安装React Native相关的依赖项,否则无法编译、打包。建议创建新的分支进行集成。
| 依赖库 | 版本要求 |
|---|---|
| Node.js | >=14 |
如需获取更多关于React Native的资料,请参考React Native官方指引
4.1.1 macOSm
我们推荐使用Homebrew来安装Node:
安装Node
brew install node
4.1.2 windows
我们建议通过Chocolatey安装Node:
安装Node
choco install -y nodejs-lts
注意:如果你已经安装了Node,Node的版本应大于等于14
4.2 配置Matter SDK的Node依赖项
4.2.1 在项目根目录下创建package.json
在Android项目的根目录下,创建package.json文件,并复制下面的内容到文件中
{
"name": "rn_demo_0614",
"version": "0.0.1",
"private": true,
"scripts": {
"android": "react-native run-android",
"ios": "react-native run-ios",
"start": "react-native start",
"test": "jest",
"lint": "eslint ."
},
"dependencies": {
"@react-native-community/async-storage": "^1.11.0",
"lodash": "^4.17.15",
"prop-types": "^15.7.2",
"react": "17.0.1",
"react-native": "0.63.4",
"react-native-gesture-handler": "^1.5.2",
"react-native-reanimated": "^1.4.0",
"react-native-root-toast": "^3.2.0",
"react-native-screens": "^1.0.0-alpha.23",
"react-navigation": "^4.0.10",
"react-redux": "^7.1.3",
"redux": "^4.0.4",
"redux-logger": "^3.0.6",
"redux-thunk": "^2.3.0",
"reselect": "^4.0.0"
},
"devDependencies": {
"@babel/core": "7.7.4",
"@babel/runtime": "7.7.4",
"@react-native-community/eslint-config": "2.0.0",
"babel-jest": "26.6.3",
"eslint": "7.16.0",
"jest": "26.6.3",
"jetifier": "^1.6.5",
"metro-react-native-babel-preset": "0.64.0",
"react-navigation-stack": "^1.10.3",
"react-test-renderer": "17.0.1"
},
"jest": {
"preset": "react-native"
}
}
4.2.2 在项目根目录下运行命令,下载相关依赖项
通过终端执行以下命令,该命令会通过package.json下载对应的依赖,并在项目根目录生成node_modules文件夹
npm install --legacy-peer-deps
4.3 集成Matter SDK
4.3.1 编辑根目录下build.gradle 或者 settings.gradle
repositories {
maven {
url "$rootDir/node_modules/react-native/android"
}
}
4.3.2 编辑app目录下build.gradle
dependencies {
//统一初始化,请注意使用最新版本
implementation 'com.lumi.external:core:2.1.69'
implementation 'com.lumi.commonui:ui:1.4.105'
//Matter SDK,请注意使用最新版本
implementation 'com.lumi.sdk:reactnative:4.5.7'
//Matter 配网SDK,请注意使用最新版本
implementation 'com.lumi.module.access:access:3.4.127'
implementation 'com.lumi.module.smart_connect:connect:3.4.127'
//Thread 相关
implementation 'com.lumi.api:thread:1.0.21'
}
4.3 初始化
4.3.1 统一初始化
五、代码混淆
-dontwarn com.facebook.**
-keep class com.facebook.** { *; }