全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 ET大脑 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件

Android集成

更新时间:2018-08-06 13:11:22

操作步骤

Android SDK 与包名(package name)+签名(keystore)绑定,package namekeystore两者修改任一,都需要在 管理控制台 上重新下载 SDK,debug 和 release 不能混用。

注意:若您需要用到 V2 方式的签名,打包时请同时勾选 V1、V2 签名(只选 V2 签名,apk 在 Android 7.0 以下都无法安装)。

下载无线认证 SDK 后,您可参考以下步骤将认证 SDK 集成到您的 Android 应用中。

步骤一: 在工程中导入 SDK

解压无线认证 SDK 包中的 client.zip 文件,将以下 Android 依赖包引入到您的应用工程中:

  • aliyun-oss-sdk-android.jar
  • FaceLivenessOpen-x.x.x.x.aar
  • NoCaptchaSDK-external-release.aar(通过解压 Android.NoCaptchaSDK.xxx.tar 获得该依赖包)
  • SecurityBodySDK-external-release.aar(通过解压 Android.SecurityBodySDK.xxx.tar 获得该依赖包)
  • SecurityGuardSDK-external-release.aar(通过解压 Android.SecurityGuardSDK.xxx.tar 获得该依赖包)
  • Okhttp.jar
  • Okio.jar
  • Rpsdk.aar
  • Windvane-mini.jar

例如,如果您使用的 AndroidStudio,可参考以下步骤:

  1. 设定依赖包所在的路径:

    1. apply plugin: 'com.android.application'
    2. repositories {
    3. flatDir {
    4. dirs '../libs'
    5. }
    6. }
  2. 设定引入的本地库所在路径,将需要引入的依赖包都方在../libs目录,包含所有需要的库。

  3. 在 gradle 文件中引入以下需要的库依赖:

    1. compile files('../libs/okhttp-3.2.0.jar')
    2. compile files('../libs/okio-1.6.0.jar')
    3. compile files('../libs/aliyun-oss-sdk-android-2.2.0.jar')
    4. compile files('../libs/windvane-min-8.0.3.2.3.jar')
    5. compile (name:'FaceLivenessOpen-2.1.6.10',ext:'aar')
    6. compile (name:'rpsdk-2.4.0.3',ext:'aar')
    7. compile (name:'SecurityGuardSDK-external-release-5.4.94',ext:'aar')
    8. compile (name:'SecurityBodySDK-external-release-5.4.66',ext:'aar')
    9. compile (name:'NoCaptchaSDK-external-release-5.4.26',ext:'aar')

关于签名图片

  1. 解压已下载的无线认证 SDK 包,获得yw_1222_*.jpg签名图片文件,该文件用于无线认证 SDK 的授权。

  2. 把该图片文件导入到工程中res\drawable\目录,如果没有这个文件夹,请先在工程中创建,否则将无法正常工作。

  3. 如果在安卓工程打包时启用了shrinkResources true,还需要在keep.xml文件中添加以下内容:

    1. <resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@drawable/yw_1222_*" />

关于 CPU 类型

无线认证 SDK 目前支持 armeabi、armeabi-v7a、arm64-v8a 和 x86 四种,请接入方按需在 build.gradle 中增加 abifilters 配置。例如,接入方仅需要支持其中 armeabi、arm64-v8a 和 x86 三种,则配置如下:

  1. defaultConfig {
  2. ndk {
  3. abiFilters "armeabi", "arm64-v8a", "x86"
  4. }
  5. }

步骤二: 添加 ProGuard 配置

如果您的应用使用了 ProGuard 进行代码混淆,为了保证实人认证服务需要的一些类不被混淆,需要在 ProGuard 配置文件中添加相关指令。

  1. 根据您接入方式的情况,判断是否使用了 ProGuard 进行代码混淆:

    • Eclipse

      如果在project.properties中指定了 ProGuard 配置(例如,在project.properties中包含proguard.config=proguard.cfg语句),则表明已使用 ProGuard 进行代码混淆,混淆配置在 proguard.cfg 文件中:

      proguard

    • Android Studio

      如果在 build.gradle 中配置了 proguardFiles,并且启用了 minifyEnabled 方法,则表明已使用 proguard-rules.pro 这个配置文件进行代码混淆。例如:

      1. buildTypes {
      2. release {
      3. minifyEnabled true
      4. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
      5. }
      6. }
  2. 在相应的 ProGuard 配置文件中添加以下配置信息,保证实人认证服务需要的类不被混淆:

    1. -keep class com.taobao.securityjni.**{*;}
    2. -keep class com.taobao.wireless.security.**{*;}
    3. -keep class com.ut.secbody.**{*;}
    4. -keep class com.taobao.dp.**{*;}
    5. -keep class com.alibaba.wireless.security.**{*;}
    6. -keep class com.alibaba.security.rp.**{*;}
    7. -keep class com.alibaba.sdk.android.**{*;}
    8. -keep class com.alibaba.security.biometrics.**{*;}
    9. -keep class android.taobao.windvane.**{*;}

步骤三: 使用 SDK

  1. 初始化

    一般在应用启动时进行。

    1. import com.alibaba.security.rp.RPSDK;
    2. RPSDK.initialize(appContext);
  2. 进入认证

    1. RPSDK.start(verifyToken, ParametersActivity.this,
    2. new RPSDK.RPCompletedListener() {
    3. @Override
    4. public void onAuditResult(RPSDK.AUDIT audit) {
    5. Toast.makeText(ParametersActivity.this, audit + "", Toast.LENGTH_SHORT).show();
    6. if(audit == RPSDK.AUDIT.AUDIT_PASS) { //认证通过
    7. }
    8. else if(audit == RPSDK.AUDIT.AUDIT_FAIL) { //认证不通过
    9. }
    10. else if(audit == RPSDK.AUDIT.AUDIT_IN_AUDIT) { //认证中,通常不会出现,只有在认证审核系统内部出现超时,未在限定时间内返回认证结果时出现。此时提示用户系统处理中,稍后查看认证结果即可。
    11. }
    12. else if(audit == RPSDK.AUDIT.AUDIT_NOT) { //未认证,用户取消
    13. }
    14. else if(audit == RPSDK.AUDIT.AUDIT_EXCEPTION){ //系统异常
    15. }
    16. }
    17. });

    说明

    • 其中,verifyToken参数由接入方的服务端调用实人认证服务的 GetVerifyToken 接口获得。
    • 在 RPSDK.start 接口调用的回调会返回用户认证完之后的各种状态。

常见问题

  1. 调起无线认证 SDK,进入认证页面展示“UNKNOWN_ERROR”。

    处理建议:查看 logcat,若 ErrorCode = 1208 或 1215 或 1411,说明当前开发包与在管理控制台下载 SDK 时上传包的包名(package name)签名(keystore)不一致,请在管理控制台重新上传当前开发包,用新下载 SDK 中的yw_1222_*.jpg签名图片文件替换开发包中原有的文件。

    注意:工程上,通常对 IDE 中直接运行(debug)和正式打包(release)会配置不同的签名(keystore),在 IDE 中直接编译运行的是 debug 包,其签名图片文件和 release 包是不同的。

  2. 项目中之前引入的组件与无线认证 SDK 中的组件有重复,例如 SecurityGuardSDK、aliyun-oss-sdk-android 等。

    处理建议:若 SecurityGuardSDK 组件有重复,删除低版本,但保留两个版本的yw_1222_*.jpg签名图片文件;若 aliyun-oss-sdk-android 等其他组件有重复,删除低版本即可。

  3. 项目中之前引入的 SecurityEnvSDK 组件与无线认证 SDK 中的 SGMain 组件报 duplicate symbol 冲突。

    处理建议:SecurityEnvSDK 组件是 SGMain 组件的早先版本,删除 SecurityEnvSDK,但保留两个组件的yw_1222_*.jpg签名图片文件。

  4. APP 采用了插件机制,集成无线认证 SDK要注意什么。

    处理建议:建议把无线认证 SDK 放到主 Bundle 下。

本文导读目录