概述与资源
Android SDK 提供给集成 Android 原生客户端开发的开发者使用。
环境需求
| 条目 |
资源 |
| 开发目标 |
4.0以上 |
| 开发环境 |
Android Studio 3.0.1 |
| 系统依赖 |
v7包,design包 |
| sdk三方依赖 |
无 |
安装
获取SDK
点击下载demo及sdk
导入SDK到项目工程并配置开发环境
在demo的libs包下,将获取的.aar文件拖拽到工程中的libs文件夹下。
在拖入.aar到libs文件夹后, 还要检查.aar是否被添加到Library,要在项目的build.gradle下添加如下代码:
repositories { flatDir { dirs 'libs' } }
|
并且要手动将aar包添加依赖:
compile(name: 'geetest_deepknow_android_vx.y.z', ext: 'aar') compile(name: 'geetest_sensebot_android_vx.y.z', ext: 'aar')
|
添加权限
<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"
|
在调用验证地方的 onCreate 方法里面初始化
SEAPI seapi = new SEAPI(this);
|
组装数据
在执行点击操作之前,对具体的控件进行操作:
DPAPI.getInstance(getApplicationContext()).ignoreDPView(btn,"activityName");
|
事件发生
在执行事件的时候,执行:
seapi.onVerify(judgementBean,baseSEListener);
|
接口实现
实现接口进行校验。
private BaseSEListener baseSEListener = new BaseSEListener() {
@Override public void onShowDialog() { Log.i(TAG,"onShowDialog-->SDK show loading dialog!"); }
@Override public void onError(String errorCode, String error) { Log.i(TAG,"onError-->errorCode:"+errorCode+", error: "+error); Toast.makeText(getApplicationContext(), error, Toast.LENGTH_SHORT).show(); }
@Override public void onCloseDialog(int num) { Log.i(TAG, "onCloseDialog-->" + num); }
@Override public void onDialogReady() { Log.i(TAG,"onDialogReady-->SDK show captcha webview dialog! "); }
@Override public void onResult(String token) { Log.i(TAG,"onResult: "+token); } };
|
输入参数实现
DPJudgementBean judgementBean=new DPJudgementBean(gtId,interactive,attr);
|
参数说明
| 参数 |
类型 |
说明 |
| gtId |
String |
deepknow id |
|
| interactive |
int |
交互场景类型 |
|
| attr |
Map<String,Object> |
冗余参数 |
|
全局事件发生
在全局执行事件的时候,执行:
DPAPI.getInstance(getApplicationContext()).setDpListener(dpListener);
|
全局接口实现
实现接口进行校验。
private DpListener dpListener = new DpListener() {
@Override public void onResult(String token) { }
|
页面关闭
在页面关闭调用此方法
@Override protected void onDestroy() { super.onDestroy(); seapi.destroy(); }
|
混淆规则
-dontwarn com.geetest.deepknow.** -keep class com.geetest.deepknow.** { *; } -dontwarn com.geetest.mobinfo.** -keep class com.geetest.mobinfo.** { *; } -dontwarn com.geetest.sensebot.** -keep class com.geetest.sensebot.** { *; } -dontwarn com.bangcle.andJni.** -keep class com.bangcle.andJni.** { *; }
|
日志打印
SDK提供部分日志。
ErrorCode
geeguard errorcode
| ErrorCode |
Description |
| 20001 |
具体的JudgementBean为null |
| 20002 |
传入的参数id为null |
| 20003 |
传入的参数idValue为null |
| 20004 |
Judgement接口返回值为null |
| 20005 |
Judgement接口返回值格式错误 |
| 20006 |
Judgement接口请求错误 |
sensebot errorcode
| ErrorCode |
Description |
| 10200 |
传入参数错误 |
| 10201 |
webview加载错误 |
| 10202 |
deepknow内部错误 |
| 10203 |
SE内部错误 |
| 10204 |
webview加载超时 |
| 10205 |
webview内部错误 |
| 10206 |
产品类型错误 |
及时查看极验输出日志
概述与资源
Android SDK 提供给集成 Android 原生客户端开发的开发者使用。
环境需求
| 条目 |
资源 |
| 开发目标 |
4.0以上 |
| 开发环境 |
Android Studio 3.0.1 |
| 系统依赖 |
v7包,design包 |
| sdk三方依赖 |
无 |
安装
获取SDK
点击下载demo及sdk
导入SDK到项目工程并配置开发环境
在demo的libs包下,将获取的.aar文件拖拽到工程中的libs文件夹下。
在拖入.aar到libs文件夹后, 还要检查.aar是否被添加到Library,要在项目的build.gradle下添加如下代码:
repositories { flatDir { dirs 'libs' } }
|
并且要手动将aar包添加依赖:
compile(name: 'geetest_deepknow_android_vx.y.z', ext: 'aar') compile(name: 'geetest_sensebot_android_vx.y.z', ext: 'aar')
|
添加权限
<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"
|
在调用验证地方的 onCreate 方法里面初始化
SEAPI seapi = new SEAPI(this);
|
组装数据
在执行点击操作之前,对具体的控件进行操作:
DPAPI.getInstance(getApplicationContext()).ignoreDPView(btn,"activityName");
|
事件发生
在执行事件的时候,执行:
seapi.onVerify(judgementBean,baseSEListener);
|
接口实现
实现接口进行校验。
private BaseSEListener baseSEListener = new BaseSEListener() {
@Override public void onShowDialog() { Log.i(TAG,"onShowDialog-->SDK show loading dialog!"); }
@Override public void onError(String errorCode, String error) { Log.i(TAG,"onError-->errorCode:"+errorCode+", error: "+error); Toast.makeText(getApplicationContext(), error, Toast.LENGTH_SHORT).show(); }
@Override public void onCloseDialog(int num) { Log.i(TAG, "onCloseDialog-->" + num); }
@Override public void onDialogReady() { Log.i(TAG,"onDialogReady-->SDK show captcha webview dialog! "); }
@Override public void onResult(String token) { Log.i(TAG,"onResult: "+token); } };
|
输入参数实现
DPJudgementBean judgementBean=new DPJudgementBean(gtId,interactive,attr);
|
参数说明
| 参数 |
类型 |
说明 |
| gtId |
String |
deepknow id |
|
| interactive |
int |
交互场景类型 |
|
| attr |
Map<String,Object> |
冗余参数 |
|
全局事件发生
在全局执行事件的时候,执行:
DPAPI.getInstance(getApplicationContext()).setDpListener(dpListener);
|
全局接口实现
实现接口进行校验。
private DpListener dpListener = new DpListener() {
@Override public void onResult(String token) { }
|
页面关闭
在页面关闭调用此方法
@Override protected void onDestroy() { super.onDestroy(); seapi.destroy(); }
|
混淆规则
-dontwarn com.geetest.deepknow.** -keep class com.geetest.deepknow.** { *; } -dontwarn com.geetest.mobinfo.** -keep class com.geetest.mobinfo.** { *; } -dontwarn com.geetest.sensebot.** -keep class com.geetest.sensebot.** { *; } -dontwarn com.bangcle.andJni.** -keep class com.bangcle.andJni.** { *; }
|
日志打印
SDK提供部分日志。
ErrorCode
geeguard errorcode
| ErrorCode |
Description |
| 20001 |
具体的JudgementBean为null |
| 20002 |
传入的参数id为null |
| 20003 |
传入的参数idValue为null |
| 20004 |
Judgement接口返回值为null |
| 20005 |
Judgement接口返回值格式错误 |
| 20006 |
Judgement接口请求错误 |
sensebot errorcode
| ErrorCode |
Description |
| 10200 |
传入参数错误 |
| 10201 |
webview加载错误 |
| 10202 |
deepknow内部错误 |
| 10203 |
SE内部错误 |
| 10204 |
webview加载超时 |
| 10205 |
webview内部错误 |
| 10206 |
产品类型错误 |
及时查看极验输出日志