概述与资源
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 |
产品类型错误 |
及时查看极验输出日志