接入前准备

更新时间:2018-01-30 15:13:55

1、SDK各文件说明

解压Android SDK,共有如下几个文件。(注:aar文件的版本号可能会有不同)

图-1

各文件说明(xxx为版本号)

文件 功能
SecurityGuardSDK-xxx.aar 主框架SDK
AVMPSDK-xxx.aar 虚拟机解释引擎插件
SecurityBodySDK-xxx.aar 人机识别插件
yw_1222_0335.jpg 主框架配置文件
yw_1222_0335_mwua.jpg 虚拟机引擎配置文件

2、导入aar文件

在Android Studio中导入上述的三个aar文件。

图-2

步骤描述:

① 将SDK中所有的aar文件都复制到项目的libs目录下。(如果没有libs目录,则手工创建之)

② 点击该Module的build.gradle文件,在其中增加如上图3、4的配置。

③ 将libs目录作为查找依赖的源。

  1. repositories{
  2. flatDir {
  3. dirs 'libs'
  4. }
  5. }

④ 增加编译依赖。(注意:aar文件版本号可能会有不同,以实际下载到的为主)

  1. dependencies {
  2. compile (name:'AVMPSDK-external-release-xxx', ext:'aar')
  3. compile (name:'SecurityBodySDK-external-release-xxx', ext:'aar')
  4. compile (name:'SecurityGuardSDK-external-release-xxx', ext:'aar')
  5. }

3、drawable文件夹中导入jpg文件

将SDK目录下的yw_1222_0335_mwua.jpg和yw_1222_0335.jpg图片文件放到Android应用工程的drawable目录下。(注:如果默认没有drawable目录,则手工创建之。)

图-3

4、过滤ABI(删除多余架构SO)

移动端风险识别SDK目前只提供了armeabi架构的SO,因此,需要对最终导出的ABI进行过滤,否则会造成APP的崩溃或功能异常。具体操作如下:

  1. 删除Android工程lib目录下除了armeabi文件夹之外的所有其他CPU架构文件夹,包括armeabi-v7a、x86、x86_64、arm64-v8a、mips、mips64等。最终,只保留armeabi目录。
  2. 在工程的build.gradle配置文件中增加过滤规则,被abiFilters指定的架构即会被包含在APK里面。我们在这里只指定armeabi架构,示例代码如下:
  1. defaultConfig {
  2. applicationId "com.xx.yy"
  3. minSdkVersion xx
  4. targetSdkVersion xx
  5. versionCode xx
  6. versionName "x.x.x"
  7. ndk {
  8. abiFilters "armeabi"
  9. }
  10. }
注意:只保留armeabi架构的SO,不会影响APP的任何兼容性,并且还能大大减小APP的体积。

如下是手机淘宝APP的ABI情况,同样,也只有armeabi架构的目录:

图-4

5、添加APP权限

如果是Android Studio项目,并且使用aar方式集成,那么则不需要在项目中额外配置权限,因为在aar中我们已经声明了相关权限。

如果是Eclipse项目,需要在AndroidMenifest.xml文件中添加下列权限配置:

  1. <uses-permission android:name="android.permission.INTERNET"/>
  2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  3. <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  4. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
  5. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  6. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  7. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  8. <uses-permission android:name="android.permission.WRITE_SETTINGS"/>

6、添加ProGuard配置

如果使用了proguard进行混淆,也根据接入方式的不同而分为Eclipse和AndrodStudio两种情况。

6.1、Android Studio

如果在build.gradle中配置了proguardFiles,并且开启了minifyEnabled,如图所示,则表明使用proguard-rules.pro这个配置文件进行混淆。

图-5

6.2、Eclipse

如果在project.properties中指定了proguard配置,比如在project.properties中有如下的语句:proguard.config=proguard.cfg,则表明使用了proguard进行混淆,混淆配置在proguard.cfg文件中:

图-6

6.3、添加keep规则

为了保证我们需要的一些类不被混淆,因此需要在proguard的配置文件中添加一些指令,也就是加入以下规则到proguard的配置文件里面:

  1. -keep classcom.taobao.securityjni.**{*;}
  2. -keep classcom.taobao.wireless.security.**{*;}
  3. -keep classcom.ut.secbody.**{*;}
  4. -keep classcom.taobao.dp.**{*;}
  5. -keep classcom.alibaba.wireless.security.**{*;}