门锁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.** { *; }