概述与资源

Android SDK 提供给集成 Android 原生客户端开发的开发者使用。

DeepKonw 为极验业务安全服务的基础感知构件,主要用于采集客户端的相关安全信息,为后续服务提供数据,是其他极验服务的基础

环境需求

条目 资源
开发目标 4.0以上
开发环境 Android Studio 3.3.2
系统依赖
sdk三方依赖

安装

获取 SDK

通过邮件获取

导入 SDK 到项目工程并配置开发环境

  1. 将获取的.aar文件放入工程中的libs文件夹下。

  2. 检查.aar是否被添加到Library, 需要在项目的build.gradle下添加如下代码:

    repositories {
    flatDir {
    dirs 'libs'
    }
    }
  3. 手动将 aar 包添加依赖:

    implementation(name: 'geetest_deepknow_android_vx.y.z', ext: 'aar')
  4. 添加权限

    <!-- 必选-默认申请-->
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

    <!-- 必选-6.0或以上需动态申请 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

    <!-- 可选-6.0或以上需动态申请 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  5. 混淆规则

    -dontwarn com.geetest.deepknow.**
    -keep class com.geetest.deepknow.** {
    *;
    }
    -dontwarn com.geetest.mobinfo.**
    -keep class com.geetest.mobinfo.** {
    *;
    }
  6. 若 Android studio 版本大于3.0,工程 app 中的build.gradle文件需要添加下述设置

    packagingOptions{
    doNotStrip "*/armeabi/libdeepknow-lib.so"
    doNotStrip "*/armeabi-v7a/libdeepknow-lib.so"
    doNotStrip "*/x86/libdeepknow-lib.so"
    doNotStrip "*/arm64-v8a/libdeepknow-lib.so"
    doNotStrip "*/x86_64/libdeepknow-lib.so"
    }
  7. AS原生proguard混淆会导致打release包失败?

    此问题与android studio版本无关,是由于高版本的gradle插件导致的。在gradle插件使用3.2.0以上,如不开启R8混淆器则会产生此问题,导致此问题的原因应该是加固使用的asm修改的class格式与新版d8编译器兼容性导致的。

    解决方式:在使用新版gradle插件(插件版本3.2.0以上)时,同时开启R8混淆器做混淆处理,或者使用低版本的gradle插件版本(3.1.0以下)也可编译通过。

    R8普通模式是兼容Proguard的,若原项目里已使用了proguard,在gradle.properties文件里加上android.enableR8=true即可。

    同时,R8也有完全模式,与Proguard不直接兼容,可以在gradle.properties文件中设置android.enableR8.fullMode=true即可。

代码示例

初始化与调用

初始化

ApplicationonCreate 声明周期初始化。

public static DPAPI getInstance(Context context, String app_id)

app_id 为在极验后台申请的 app_id

获取 session 数据

获取 session_id 查询当前状态

DPAPI.getInstance(getApplicationContext()).getSessionStatus(dpListener);

session_id 使用参考服务端接入文档

提交自定义数据

提交自定义数据给极验分析

DPAPI.getInstance(getApplicationContext()).submitExtraData(jsonObject, dpListener);

注意第一层必须有 “scene” 字段标识场景 id,具体见服务端文档

DPListener接口实现

实现接口操作返回数据

DPListener dpListener = new DPListener() {
@Override
public void onSessionResult(JSONObject json) {
// 回调结果, 参考 demo 或者 api 文档
}

@Override
public void onSessionStatus(boolean status) {
// 是否及时返回,可以 loading 操作。 参考 demo
}
};

关闭数据库

在退出应用程序关闭数据库连接

public DPAPI closeSQL()

日志打印

SDK提供部分日志,TAG 为 Geetest_DeepKnow。

ErrorCode

ErrorCode Description
21000 Judge接口报错
21001 初始化JSON构造失败
21002 submitExtraData 接口参数错误
21003 collector接口报错

及时查看极验输出日志