概述与资源
Android SDK 提供给集成 Android 原生客户端开发的开发者使用。
DeepKonw为极验业务安全服务的基础感知构件,主要用于采集客户端的相关安全信息,为后续服务提供数据,是其他极验服务的基础
环境需求
| 条目 | 资源 |
|---|---|
| 开发目标 | 4.0 以上 |
| 开发环境 | Android Studio 3.3.2 |
| 系统依赖 | 无 |
sdk 三方依赖 |
无 |
安装
获取 SDK
通过邮件获取
导入 SDK 到项目工程并配置开发环境
将获取的
.aar文件放入工程中的libs文件夹下。检查
.aar是否被添加到Library, 需要在项目的build.gradle下添加如下代码:repositories {
flatDir {
dirs 'libs'
}
}手动将
aar包添加依赖:implementation(name: 'geetest_deepknow_android_vx.y.z', ext: 'aar')
添加权限
<!-- 必选-默认申请-->
<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" />混淆规则
-dontwarn com.geetest.deepknow.**
-keep class com.geetest.deepknow.** {
*;
}
-dontwarn com.geetest.mobinfo.**
-keep class com.geetest.mobinfo.** {
*;
}若
Android studio版本大于3.0,工程app中的build.gradle文件需要添加下述设置packagingOptions{
doNotStrip "*/*/libdeepknow-lib.so"
}
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即可。
代码示例
初始化与调用
初始化
在 Application 的 onCreate 声明周期初始化。
public static DPAPI getInstance(Context context, String app_id) |
app_id为在极验后台申请的app_id
获取 session 数据
获取 session_id 查询当前状态
DPAPI.getInstance(getApplicationContext()).getSessionStatus(dpListener); |
session_id使用参考服务端接入文档
提交自定义数据
提交自定义数据给极验分析(定制接口,获取 session_id 请调用 getSessionStatus 接口)
DPAPI.getInstance(getApplicationContext()).submitExtraData(jsonObject, dpListener); |
注意第一层必须有
"scene"字段标识场景id,具体见服务端文档
DPListener 接口实现
实现接口操作返回数据
DPListener dpListener = new DPListener() { |
关闭数据库
在退出应用程序关闭数据库连接
public DPAPI closeSQL() |
日志打印
SDK 提供部分日志,TAG 为 Geetest_DeepKnow。
ErrorCode
ErrorCode |
Description |
|---|---|
| 21000 | Judge接口报错 |
| 21001 | 初始化 JSON 构造失败 |
| 21002 | submitExtraData 接口参数错误 |
| 21003 | collector接口报错 |
及时查看极验输出日志