Android SDK集成文档
接入指南
引入&配置SDK
1、友盟合规助手SDK为开发者提供了两种引入SDK方式:自动集成和手动集成。自动集成是指配置Android端maven依赖,手动集成是指在下载页下载SDK后导入App工程。
2、友盟合规助手SDK的配置包含权限配置、混淆配置。
权限配置是指合规助手SDK所需要使用的App权限,SDK不会主动申请权限,依赖于开发者申请。
混淆配置是指App如果使用了应用混淆,需要保证合规助手SDK不被混淆,否则SDK内部的反射功能无法正常运行。
初始化SDK
重要说明:当前友盟合规助手SDK必须和友盟统计SDK(umeng-common包)一起配合使用。单独集成合规助手SDK无法使用U-Sec产品功能。
合规助手SDK中com.uyumao.nns.zmd.ZmdManager接口类提供如下初始化函数init:
public static void init(Context context, String appkey, InitCompleteListener listener);开发者应在正式初始化友盟统计SDK(umeng-common)之后,再调用合规助手SDK初始化函数。
SDK主要功能接口介绍
初始化完成异步通知接口
合规助手SDK初始化函数提供如下异步通知接口,SDK会在初始化过程结束后回调此接口initComplete函数,开发者可以通过实现此接口initComplete回调接口函数,将需监测三方SDK初始化动作延迟到SDK回调initComplete接口函数之后完成。
public interface InitCompleteListener {
void initComplete();
}调试日志开关
在com.uyumao.nns.zmd.ZmdManager接口类中提供如下调试日志开关设置函数setLogEnabled:
public static void setLogEnabled(boolean flag);建议开发者在SDK集成阶段打开调试日志,SDK会将集成阶段一些常见的错误、信息,通过调试日志输出到logcat日志供开发者查看。
Android_ID关闭采集接口
com.uyumao.nns.zmd.ZmdManager接口类中提供如下接口函数disableCollectAid(),此函数必须在调用UMConfigure.init初始化函数之前调用。
// 禁止SDK采集Android_ID
public static void disableCollectAid();OAID关闭采集接口
com.uyumao.nns.zmd.ZmdManager接口类中提供如下接口函数disableCollectOaid(),此函数必须在调用UMConfigure.init初始化函数之前调用。
// 禁止SDK采集OAID
public static void disableCollectOaid();集成流程
引入SDK
SDK ABI接口(CPU架构)说明
合规助手SDK目前支持armeabi-v7a、arm64-v8a两种主流ABI,不支持
armeabi、x86等现今已较少使用的老旧CPU架构ABI。
maven自动集成(推荐)
通过在Android Studio工程build.gradle配置脚本中添加maven线上依赖,导入最新版本组件化统计SDK。
maven依赖配置
在工程build.gradle配置脚本中buildscript和allprojects段中添加【友盟+】SDK新maven仓库地址。
maven { url 'https://repo1.maven.org/maven2/' }buildscript {
repositories {
google()
jcenter()
maven { url 'https://repo1.maven.org/maven2/' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url 'https://repo1.maven.org/maven2/' }
}
}在工程App对应build.gradle配置脚本dependencies段中添加合规助手SDK库和友盟common SDK依赖:
dependencies {
implementation fileTree(include:['*.jar'], dir:'libs')
// 下面各SDK根据宿主App是否使用相关业务按需引入。
// 合规助手SDK、友盟统计SDK(uemng-common、umeng-asms)。
implementation 'com.umeng.umsdk:common:+'//必选
implementation 'com.umeng.umsdk:asms:+'//必选
implementation 'com.umeng.umsdk:nns:+' //合规助手SDK。使用U-Sec功能请务必集成,common需搭配v9.7.3及以上版本,asms需搭配v1.8.3及以上版本。需配置混淆,以避免依赖库无法生效,见本文下方【混淆设置】部分。
手动集成: 下载SDK包
访问【友盟+】官网组件化SDK下载地址,选择Android平台下载页面,选择合规助手SDK进行下载。
将下载的SDK zip包解压缩,得到common和nns目录。
umeng-common-9.x.x.aar // 统计SDK(必选,从common目录下获取)。
umeng-nns-x.x.x.aar //合规助手SDK(从nns目录下获取)。使用U-Sec功能请务必集成,common需搭配v9.7.3及以上版本,asms需搭配v1.8.3及以上版本。需配置混淆,以避免依赖库无法生效,见本文下方【混淆设置】部分。
umeng-asms-vx.x.x.aar // 注意:因友盟官网SDK下载页面离线asms包仅支持armeabl(Arm v5)单CPU架构,不支持armeabi-v7a、arm64-v8a两种CPU架构,所以需选择如下两种方法之一获取支持armeabi-v7a、arm64-v8a两种CPU架构的umeng-asms包(不能直接使用官方下载zip包中common目录下umeng-asms-armeabi-vx.x.x.aar包)。
1. 从maven仓库下载最新版本umeng-asms全架构包离线集成到应用中。(推荐方法)
2. 从友盟官方asms包各CPU架构so库下载地址下载最新版本umeng-asms jar包的各CPU架构so库,按照您应用需要,自行选择所需CPU架构so集成。
Android Studio集成
选择SDK功能组件并下载,解压.zip文件得到相应组件包(aar包),在Android Studio的项目工程libs目录中拷入相关组件aar包,右键Android Studio的项目工程 —> 选择Open Module Settings —> 在 Project Structure弹出框中 —> 选择 Dependencies选项卡 —> 点击左下“+” —> 选择组件包类型 —> 引入相应的包。
注意:目前合规助手SDK只支持armeabi-v7a、arm64-v8a两种主流CPU架构,如果您的应用需要支持其它的CPU架构,无法使用合规助手SDK。
配置SDK
权限授予
合规助手SDK需要宿主APP授予如下权限:
权限 | 用途 |
INTERNET | 允许应用程序联网和发送统计数据的权限,以便提供统计分析服务。 |
下面给出AndroidManifest.xml清单文件示例:
<manifest ……>
<uses-sdk android:minSdkVersion="8"></uses-sdk>
<uses-permission android:name="android.permission.INTERNET"/>
<application ……>混淆设置
如果您的应用使用了代码混淆,请添加如下配置,以避免合规助手SDK和友盟统计SDK被错误二次混淆导致SDK不可用。
-keep class com.umeng.** {*;}
-keep class org.repackage.** {*;}
-keep class com.uyumao.** { *; }
-keepclassmembers class * {
public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}SDK接口使用
合规初始化
友盟统计SDK合规调用参见umeng-common SDK初始化合规三步走。
合规助手SDK本身需在友盟统计SDK正式初始化函数调用之后被调用。
接口介绍
合规助手SDK接口类:
// 统一对外接口类,初始化函数和调试日志开关函数都由此接口类提供
com.uyumao.nns.zmd.ZmdManagerSDK初始化函数
初始化函数原型:
// 参数列表:
// context: 宿主应用ApplicationContext上下文
// appkey: 友盟申请对应appkey
// listener: 初始化完成通知回调对象。需开发者实现接口对象作为参数传入。
// 无论SDK初始化是否成功,此回调都会被调用。
public static void init(Context context, String appkey, InitCompleteListener listener);InitCompleteListener回调接口:
public interface InitCompleteListener {
// 注意:SDK初始化动作完成后(无论成功还是失败),
// SDK都会在后台工作线程内回调此接口函数(由开发者自行实现),
// 开发者不应在此函数内执行耗时操作。
void initComplete();
}
SDK初始化示例:
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
final Context appContext = this.getApplicationContext();
UMConfigure.setLogEnabled(true); // 应用上线前需注释或删除此行
UMConfigure.preInit(appContext, "6673dxxxxxxxxxxxxxx36345", "UMENG");
final ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
executor.schedule(new Runnable() {
@Override
public void run() {
UMConfigure.init(appContext, "6673dxxxxxxxxxxxxxx36345", "UMENG", UMConfigure.DEVICE_TYPE_PHONE, null);
// 打开合规助手SDK调试日志开关
ZmdManager.setLogEnabled(true); // 应用上线前需注释或删除此行
// 初始化合规助手SDK
ZmdManager.init(appContext, "6673dxxxxxxxxxxxxxx36345", new InitCompleteListener() {
@Override
public void initComplete() {
Log.i("[nns_demo]", "initComplete");
}
});
}
}, 3, TimeUnit.SECONDS);
}
}SDK调试日志开关接口
调试日志开关函数原型:
// 参数列表:
// flag: true-打开SDK调试日志; false-关闭SDK调试日志
// SDK调试日志默认关闭,需开发者手动打开
// 注意:应用上线前请务必关闭SDK调试日志
public static void setLogEnabled(boolean flag);调试日志tag:
UM_ZMD
SDK调试日志内容示例:
---------------------------- PROCESS STARTED (4820) for package com.umeng.nns_demo ----------------------------
2024-07-15 15:08:37.153 4820-4894 UM_ZMD com.umeng.nns_demo I ZmdManager:监控器加载完毕。合规助手SDK功能兼容性特别说明
合规助手SDK使用Android系统API接口切面Hook技术实现,不保证在所有品牌机型Android设备上都可100%兼容。
当前兼容品牌机型列表:
手机型号 | 手机型号(内部型号) | ROM | ROM版本 | Android版本 |
荣耀X50 | HONOR ALI-AN00 | MagicUI | MagicOS_8.0.0 | Android 14 |
HUAWEI Mate 30 | HUAWEI TAS-AN00 | HarmonyOS | 2.0.0 | Android 10 |
vivoY52s | vivo V2057A | Funtouch | 11.5 | Android 10 |
荣耀9x | HONOR HLK-AL00 | EMUI | EmotionUI_12.0.0 | Android 10 |
华为nova5Pro | HUAWEI SEA-AL10 | HarmonyOS | 2.0.0 | Android 10 |
华为P40Pro | HUAWEI ELS-AN00 | HarmonyOS | 4.0.0 | Android 12 |
华为P40 | HUAWEI ANA-AN00 | HarmonyOS | 3.0.0 | Android 12 |
荣耀50 | HONOR NTH-AN00 | MagicUI | MagicOS_7.0.0 | Android 12 |
HUAWEI Mate 30 Pro | HUAWEI LIO-AN00 | HarmonyOS | 3.0.0 | Android 12 |
荣耀x30 | HONOR ANY-AN00 | MagicUI | 5 | Android 11 |
华为Mate 40 Pro | HUAWEI NOH-AN00 | HarmonyOS | 3.0.0 | Android 12 |
vivo Y33e | vivo V2166A | Funtouch | 13 | Android 12 |
荣耀70 | HONOR FNE-AN00 | MagicUI | MagicOS_7.0.0 | Android 12 |
Redmi K40 | Redmi M2012K11AC | MIUI | V816 | Android 13 |
红米note11 | Redmi 21091116AC | MIUI | V125 | Android 11 |
荣耀60 | HONOR LSA-AN00 | MagicUI | MagicOS_7.0.0 | Android 12 |
注:不在此列表里的机型,还未做过兼容性测试,因此兼容性未知。
在未通过兼容性测试机型上,SDK会输出如下日志:
---------------------------- PROCESS STARTED (4820) for package com.umeng.nns_demo ----------------------------
2024-07-15 15:08:41.273 5320-5394 UM_ZMD com.umeng.nns_demo I ZmdManager:未适配机型,监控器未安装。合规助手SDK仅在应用release版本中使能监控功能。在debug版本应用中,SDK会输出如下日志:
---------------------------- PROCESS STARTED (4820) for package com.umeng.nns_demo ----------------------------
2024-07-15 15:19:21.273 5320-5394 UM_ZMD com.umeng.nns_demo I ZmdManager:当前为Debug运行模式,监控器放弃加载。集成示例工程
集成验证可以参考如下示例工程。