跳转到主要内容
PRODUCT DOCUMENTS

快速找到所需文档,高效完成接入与排障

浏览产品文档与友盟 Skill,展开目录并阅读正文。

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.ZmdManager

SDK初始化函数

初始化函数原型:

// 参数列表:
// 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运行模式,监控器放弃加载。

集成示例工程

集成验证可以参考如下示例工程。