Android

集成要求

环境要求

条目说明
兼容版本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成功/
2000path为空请设置path参数
22xx内部错误请联系同盾技术支持
4001调用so文件失败,可能是SDK依赖的so文件已经缺失请检查当前设备所使用的架构是否有配置到项目中
4002调用SDK失败请检查apisign模块是否引入到项目中