集成要求
环境要求
条目 | 说明 |
---|---|
兼容版本 | Android 5.0及以上系统 |
支持架构 | armeabi, armeabi-v7a, arm64-v8a, x86, x86_64 |
集成步骤
安装配置
添加仓库
在项目根目录的 build.gradle
加入maven库的配置
allprojects {
repositories {
...
mavenCentral()
}
}
如果您的 Gradle 版本是 7 或更高版本,请将下方配置添加到工程的 settings.gradle
repositories {
...
mavenCentral()
}
添加依赖
在应用主模块的 build.gradle
中,声明SDK包依赖
dependencies {
implementation 'com.trustdecision.android:mobrisk:4.3.5.1'
implementation 'com.trustdecision.android:apisign:1.0.7'
}
配置ABI类型
SDK目前支持多种ABI类型,建议接入方在主模块build.gradle
文件内添加 abiFilters
配置选择所需要的架构类型,具体架构,请以您自己需要支持的架构为准!
defaultConfig {
...
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
}
接口签名
SDK支持两种类型的接口:query和body,请根据需要保护的接口传参来调用SDK API。
方法定义
// 适用于键值对形式的入参
public static TDAPISignResult sign(Context context, String path, Map<String,String> query);
// 适用于body形式字节流或者字符串形式的入参
public static TDAPISignResult sign(Context context, String path, String body);
结构体定义
public class TDAPISignResult {
// 签名结果
private String sign;
// 签名状态码
private int code;
// 异常信息
private String msg;
}
最佳实践
Query方式
待保护的API形如:https://cn.apitd.net/de/v1?name=jacky&age=12
Map<String,String> query = new HashMap<>();
query.put("name","jacky");
query.put("age","12");
TDAPISignResult signResult = TDRisk.sign(context, "de/v1", query);
if(signResult.code() == 0) {
// 获取签名并使用
String signature = signResult.signature();
} else {
// 获取错误信息和状态码
String message = signResult.message();
int = code signResult.code()
// 继续业务逻辑,此处签名可以用空字符替代
}
Body方式
待保护的API形如:https://cn.apitd.net/de/v1 并且在body内传递了大字符串: sdsdsdsds...ihhfywehnas
TDAPISignResult signResult = TDRisk.sign(context, "de/v1", "sdsdsdsds...ihhfywehnas");
if(signResult.code() == 0) {
// 获取签名并使用
String signature = signResult.signature();
} else {
// 获取错误信息和状态码
String message = signResult.message();
int = code signResult.code()
// 继续业务逻辑,此处签名可以用空字符替代
}
状态检查
通过加签返回的结构体拿到的状态码为0,则加签成功
TDAPISignResult.code == 0
混淆打包
如果开发者需要使用 proguard 进行混淆打包,请在 proguard 配置文件添加如下代码:
-keep class com.trustdecision.**{*;}
状态码
错误码 | 错误信息 | 处理方式 |
---|---|---|
0 | 成功 | / |
2000 | path为空 | 请设置path参数 |
2001 | body或者query参数为空 | 请设置body或者query参数 |
22xx | 内部错误 | 请联系同盾技术支持 |
4001 | 调用so文件失败,可能是SDK依赖的so文件已经缺失 | 请检查当前设备所使用的架构是否有配置到项目中 |
4002 | 调用SDK失败 | 请检查apisign模块是否引入到项目中 |