-
Notifications
You must be signed in to change notification settings - Fork 27
5.IntegrationAndroidSecurely
LeanCloud Android SDK 从 6.1.0 版本开始,除了支持通过 appId + appKey 完成初始化,还提供一种更加安全的使用方式,支持仅仅通过 appId 来初始化应用,避免核心配置信息在客户端泄漏可能带来的潜在风险。
下面我们来详细说明新版本的新集成方式。
在开发应用前,开发者需要到 LeanCloud 官网注册账号并创建应用,这些基本的流程我们在此略过。
Android 开发者在使用 LeanCloud 服务前必须将签名证书的指纹配置到应用后台,为此需要根据应用打包采用的签名证书在本地生成签名证书指纹。
这需要满足以下 2 个条件:
- 已创建应用程序的签名文件,签名证书创建可参考生成签名证书。
- 当前开发机器已经安装 JDK。
具体操作步骤如下:
- 打开命令行工具,执行命令
keytool -list -v -keystore <keystore-file>其中 为应用签名文件的完整路径,注意按命令行提示进行操作。 - 获取对应的 SHA256 指纹,例如。
- 登录 LeanCloud 控制台,选择目标应用。
- 进入「设置 - 安全中心」,在「Android 安全设置」项下,填入应用包名和前一步获得的 SHA256 指纹。
- 点击保存按钮将信息保存到云端。
推荐大家使用包依赖管理工具来安装 SDK,可以参考原文档:SDK 安装指南。 修改当前项目的 build.gradle 文件,加入如下依赖:
implementation ('cn.leancloud:storage-android:{current-version}@aar'){
exclude group: 'com.alibaba', module: 'fastjson'
exclude group: 'org.ligboy.retrofit2', module: 'converter-fastjson'
}
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'com.alibaba:fastjson:1.1.71.android'
implementation 'org.ligboy.retrofit2:converter-fastjson-android:2.1.0'
与之前的版本不同,新的 SDK 支持只使用 appId 来完成初始化。
向 Application 类的 onCreate 方法添加如下代码:
import cn.leancloud.AVOSCloud;
public class MyLeanCloudApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// 提供 this、App ID、Server Host 作为参数
AVOSCloud.initializeSecurely(this, "{{appId}}", "https://xxx.example.com");
}
}
至此,客户端的所有改动已经完成,开发者可以如以往一样调用 LeanCloud 服务了。
新的 Android SDK 会使用新的方式来进行请求签名,与 LeanCloud 云端进行数据交互。如果开发者没有在客户端直接调用云引擎中的云函数,那么所有的集成都已经完成了,可以忽略本章内容。如果您在 Android 客户端调用过 AVCloud#callFunctionInBackground 或者 AVCloud#callRPCInBackground,为了保证 SDK 发出的请求能被云引擎正确处理,您还需要升级云引擎的 runtime 库并重新部署云引擎实例。
现在支持 Android SDK 新认证方式的云引擎 runtime SDK 版本如下:
- Python SDK:2.2.1 and later
- Node.js SDK:3.4.1 and later
- Java SDK(engine-core):6.1.0 and later
- PHP SDK:0.11.1 and later
大家更新云引擎代码依赖的版本,通过 lean publish 进行发布即可。
如果您当前使用的 runtime SDK 版本满足要求,那么只需要对云引擎实例进行重新发布即可。