门锁SDK集成
一、概述
本文主要介绍如何集成门锁SDK
二、前提条件
三、功能特性
3.1 主体功能
- 支持Aqara门锁配网
- 支持Aqara门锁控制
3.2 SDK大小
依赖库 | 说明 | 大小 |
---|---|---|
React Native(0.63.4) | React Native框架 | 10MB |
Aqara桥接层 | SDK运行所必须的组件 | 24MB |
其他 | SDK运行所必须的组件 | 14MB |
合计 | - | 48MB |
注意:48MB为集成SDK最大增量,即第三方App的依赖和SDK的第三方依赖毫无交集时。通常情况下,会小于该值。
3.3 支持设备品类
详情查看设备清单
四、集成
门锁垂直品类SDK主要通过React Native的技术栈来实现设备入网和设备控制
4.1 安装Node
集成门锁SDK之前,需要先安装React Native相关的依赖项,否则无法编译、打包。建议创建新的分支进行集成。
依赖库 | 版本要求 |
---|---|
Node.js | 16.20.2 |
JDK | 1.8 |
如需获取更多关于React Native的资料,请参考React Native官方指引
4.1.1 macOS
我们推荐使用Homebrew来安装Node:
安装Node
brew install node
4.1.2 windows
我们建议通过Chocolatey安装Node:
安装Node
choco install -y nodejs-lts
注意:如果你已经安装了Node,Node的版本应大于等于14
4.2 配置门锁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 集成门锁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.33'
//门锁SDK,请注意使用最新版本
implementation 'com.lumi.sdk:reactnative:4.1.14'
}
4.3.3 编辑AndroidManifest.xml
<application>
...
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/custom_file_paths" />
</provider>
</application>
custom_file_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<paths>
<cache-path path="" name="camera_photos"/>
<external-path path="" name="camera_photos" />
<files-path path="" name="camera_photos" />
<root-path path="" name="camera_photos" />
<external-files-path name="share_files" path="."/>
</paths>
</resources>
4.4 初始化
4.4.1 统一初始化
五、代码混淆
-dontwarn com.facebook.**
-keep class com.facebook.** { *; }