概述与资源
Android SDK
提供给集成 Android
原生客户端开发的开发者使用。
DeepKonw 为极验业务安全服务的基础感知构件,主要用于采集客户端的相关安全信息,为后续服务提供数据,是其他极验服务的基础,
如果只需求无感知判断的用户部署此 SDK
即可。如果需求行为验证服务,部署完成此 SDK
后,还需部署 验证UI 相关构件,请参考 sensebot-部署参考
环境需求
条目 | 资源 |
---|---|
开发目标 | 4.0以上 |
开发环境 | Android Studio 3.3.0 |
系统依赖 | 无 |
sdk三方依赖 | 无 |
安装
获取 SDK
导入 SDK 到项目工程并配置开发环境
在demo的
libs
包下,将获取的.aar
文件拖拽到工程中的libs
文件夹下。在拖入
.aar
到libs文件夹后, 还要检查.aar
是否被添加到 Library, 要在项目的build.gradle下添加如下代码:repositories {
flatDir {
dirs 'libs'
}
}手动将
aar
包添加依赖:implementation(name: 'geetest_deepknow_android_vx.y.z', ext: 'aar')
androidx
兼容包在对应的文件夹添加权限
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />若 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
方法里面进行初始化(第二个参数传 null
即可)。
DPAPI.getInstance(this,null); |
并且在 AndroidManifest
文件中声明这个 Application
android:name=".MyApplication" |
组装数据
在执行点击操作之前,对具体的控件进行操作:
// 其中的第一个参数为具体的 view,第二个参数为使用的 activity 的名字。 |
事件发生
在执行事件的时候,执行:
// 其中的第一个参数为具体的所要填充的内容, 第二个参数为回调。 |
接口实现
实现接口进行校验。
private DPJudgementListener judgementListener = new DPJudgementListener() { |
输入参数实现
DPJudgementBean judgementBean=new DPJudgementBean(gtId,interactive,attr); |
参数说明
参数 | 类型 | 说明 |
---|---|---|
gtId | String | DeepKnow 申请的 id |
interactive | int | 交互场景类型 |
attr | Map |
冗余参数 |
全局事件发生
在全局执行事件的时候,执行:
//其中的参数为回调。 |
全局接口实现
实现接口进行校验。
private DpListener dpListener = new DpListener() { |
与 SenseBot 验证结合使用(可选步骤)
根据业务实际需要, 将 DeepKnow
与 SenseBot
结合
集成请参考 DeepKnow with SenseBot
混淆规则
-dontwarn com.geetest.deepknow.** |
日志打印
SDK提供部分日志。
ErrorCode
ErrorCode | Description |
---|---|
20001 | 具体的JudgementBean为null |
20002 | 传入的参数id为null |
20003 | 传入的参数idValue为null |
20004 | Judgement接口返回值为null |
20005 | Judgement接口返回值格式错误 |
20006 | Judgement接口请求错误 |
及时查看极验输出日志