跳到主要内容
版本:v4

TapADN SDK 集成 OAID SDK 最佳实践

说明

发布日期:2025 年 3 月 4 日

功能介绍

  • TapADN SDK 初始化时 getDevOaid() 不传入值。见SDK 初始化
  • 媒体通过配置 MSA OAID SDK 的相关资源,TapADN SDK 会在初始化之后自动获取 OAID。

使用方式

需要接入 3.16.3.45 及以上版本 SDK。

Android 原生 SDK 的集成

  • 优先选择高版本的 OAID 接入,可以显著提升 OAID 的获取成功率,下面会以 2.5.1 版本的集成作为例子。
  • 如果个人开发者实在无法申请到 OAID 证书,可以选择使用 1.0.23 版本的 SDK,接入方式见下面 1.0.23 的集成。

2.5.1 版本的集成

1、准备工作

在开始集成前,先要在移动安全联盟官网进行账号的注册和证书的申请。详细可以参考这篇文章

2、依赖配置

在应用「App主模块」的 libs 目录下放入 oaid_sdk_2.5.1.aar 并且在 build.gradle 文件中添加依赖代码。

repositories{
flatDir{
dirs 'src/main/libs','libs'
}
}
dependencies {
...
implementation files('libs/oaid_sdk_2.5.1.aar')
...
}
3、Assets 配置

在应用「App主模块」的 src/main/assets 下放入 supplierconfig.json 文件,并且把申请到的证书文件命名为 ${应用包名}.cert.pem 也一起放入目录下。

// supplierconfig.json
{
"supplier":{
"vivo":{
"appid":""
},
"xiaomi":{
"appid":""
},
"huawei":{
},
"oppo":{
}
}
}

OAID 证书文件

// ${应用包名}.cert.pem
-----BEGIN CERTIFICATE-----
// 这里复制申请的证书信息
-----END CERTIFICATE-----
4、Gradle 配置

设置 gradle 编译选项,这里可以根据自己对平台的选择进行合理配置

ndk {
abiFilters 'armeabi-v7a','x86','arm64-v8a','x86_64','armeabi'
}
packagingOptions {
doNotStrip "*/armeabi-v7a/*.so"
doNotStrip "*/x86/*.so"
doNotStrip "*/arm64-v8a/*.so"
doNotStrip "*/x86_64/*.so"
doNotStrip "armeabi.so"
}
5、混淆配置(启用混淆配置时需要添加)
# oaid sdk 2.5.1
# sdk
-keep class com.bun.miitmdid.** { *; }
-keep interface com.bun.supplier.** { *; }
-keep class androidx.core.**{*;}
# asus
-keep class com.asus.msa.SupplementaryDID.** { *; }
-keep class com.asus.msa.sdid.** { *; }
# freeme
-keep class com.android.creator.** { *; }
-keep class com.android.msasdk.** { *; }
# huawei
-keep class com.huawei.hms.** {*;}
-keep interface com.huawei.hms.** {*;}
# lenovo
-keep class com.zui.deviceidservice.** { *; }
-keep class com.zui.opendeviceidlibrary.** { *; }
# meizu
-keep class com.meizu.flyme.openidsdk.** { *; }
# nubia
-keep class com.bun.miitmdid.provider.nubia.NubiaIdentityImpl
# oppo
-keep class com.heytap.openid.** { *; }
# samsung
-keep class com.samsung.android.deviceidservice.** { *; }
# vivo
-keep class com.vivo.identifier.** { *; }
# xiaomi
-keep class com.bun.miitmdid.provider.xiaomi.IdentifierManager
# zte
-keep class com.bun.lib.** { *; }
# coolpad
-keep class com.coolpad.deviceidsupport.** { *; }
# EEBBK
# None
# honor
-keep class com.hihonor.** {*; }
6、载入 OAID SDK 安全库

示例代码

public class CustomApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 载入安全库代码
try {
System.loadLibrary("msaoaidsec");
} catch (Throwable tr) {
}
...
}
}

配置清单文件

    <application
android:allowBackup="false"
...
android:name=".CustomApplication"
>
...
</application>
7、验证结果
  • 初始化 TapADN 时打开调试日志(属性enableDebug),见SDK 初始化
  • 调用 SDK 的初始化方法,筛选 oaid-flow 标签查看 adb logcat 里的输出日志, 如果看到 「The OAID configuration of media is complete:xxxxxxx」 字样就是获取成功了。
Init task enqueue:isMainThread(false),threadId:3341
ExpOAIDClient prepare invoke
ExpOAIDClient Certificate configuration starts
ExpOAIDClient certificate configuration successful
Init success
Fetch task enqueue:isMainThread(false),threadId:3341
ExpOAIDClient Fetch start
ExpOAIDClient Call MSA Interface(InitSdk) to Fetch OAID
ExpOAIDClientMSA Fetch Callback onSupport invoked
ExpOAIDClient MSA Fetch OAID Result_2:xxxxx-xxx-xxx-xxxx-xxxxxxxx
Fetch success onSuccess:xxxxx-xxx-xxx-xxxx-xxxxxxxx
The OAID configuration of media is complete:xxxxx-xxx-xxx-xxxx-xxxxxxxx

1.0.23 版本的集成

下载地址

1、依赖配置

在应用「App主模块」的 libs 目录下放入 oaid_sdk_1.0.23.aar 并且在 build.gradle 文件中添加依赖代码。

repositories{
flatDir{
dirs 'src/main/libs','libs'
}
}
dependencies {
...
implementation files('libs/oaid_sdk_1.0.23.aar')
...
}
2、Gradle 配置

同 2.5.1 接入的相关内容

3、Assets 配置

在应用「App主模块」的 src/main/assets 下放入 supplierconfig.json 文件, 参考 2.5.1 接入的配置。

4、混淆配置(启用混淆配置时需要添加)
# oaid sdk 1.0.23
-dontwarn com.bun.**
-keep class com.bun.** {*;}
-keep class a.**{*;}
-keep class XI.CA.XI.**{*;}
-keep class XI.K0.XI.**{*;}
-keep class XI.XI.K0.**{*;}
-keep class XI.vs.K0.**{*;}
-keep class XI.xo.XI.XI.**{*;}
-keep class com.asus.msa.SupplementaryDID.**{*;}
-keep class com.asus.msa.sdid.**{*;}
-keep class com.huawei.hms.ads.identifier.**{*;}
-keep class com.samsung.android.deviceidservice.**{*;}
-keep class com.zui.opendeviceidlibrary.**{*;}
-keep class org.json.**{*;}
-keep public class com.netease.nis.sdkwrapper.Utils {public <methods>;}
5、载入 OAID SDK 安全库

同 2.5.1 接入的相关内容

6、验证结果
  • 初始化 TapADN 时打开调试日志(属性enableDebug),见SDK初始化
  • 调用 SDK 的初始化方法,筛选 oaid-flow 标签查看 adb logcat 里的输出日志, 如果看到 「The OAID configuration of media is complete:xxxxxxx」 字样就是获取成功了。
Init task enqueue:isMainThread(false),threadId:3382
ExpOAIDClient prepare invoke
don't need load cert
ExpOAIDClient The currentVersion does not require configuration of certificates
Init success
Fetch task enqueue:isMainThread(false),threadId:3382
ExpOAIDClient Fetch start
ExpOAIDClient Call MSA Interface(InitSdk) to Fetch OAID
ExpOAIDClientMSA Fetch Callback OnSupport invoked
ExpOAIDClient MSA Fetch OAID Result_1:22b72984-d109-435e-8305-a31090a6ecb5
Fetch success onSuccess:22b72984-d109-435e-8305-a31090a6ecb5
The OAID configuration of media is complete:22b72984-d109-435e-8305-a31090a6ecb5

Unity SDK 的集成

2.5.1 版本的集成

1、准备工作

在开始集成前,先要在 移动安全联盟官网 进行账号的注册和证书的申请。详细可以参考这篇文章:详细可以参考这篇文章

2、依赖配置

在 Unity 工程的 Assets/Plugins/libs 目录下放入 oaid_sdk_2.5.1.aar 文件。

3、Assets 配置
  • 构建并导出 Android 项目
    • 在 Unity 中,打开你的项目,确保平台切换为 Android (File > Build Settings > 选择 Android 并点击 Switch Platform),然后点击 Build 或 Build And Run,生成一个 Android Studio 项目。
    • 选择一个文件夹路径来保存 Android 项目(例如:MyAndroidProject)。
  • 将准备好的 supplierconfig.json 和命名为 ${应用包名}.cert.pem 的证书文件拷贝到 Android 工程的 ${App 模块}/src/main/assets 目录下。
4、载入 OAID SDK 安全库
  • 构建并导出 Android 项目
    • 在 Unity 中,打开你的项目,确保平台切换为 Android (File > Build Settings > 选择 Android 并点击 Switch Platform),然后点击 Build 或 Build And Run,生成一个 Android Studio 项目。
    • 选择一个文件夹路径来保存 Android 项目(例如:MyAndroidProject)。
  • 创建自定义的 Application 类
public class CustomApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 载入安全库代码
try {
System.loadLibrary("msaoaidsec");
} catch (Throwable tr) {
}
...
}
}
  • 更新清单文件配置
    <application
android:allowBackup="false"
...
android:name=".CustomApplication"
>
...
</application>
5、「其它配置项」以及「验证结果」

参考 Android 原生 SDK 的集成方式以及验证方式。

1.0.23 版本的集成

1、依赖配置

在 Unity 工程的 Assets/Plugins/libs 目录下放入 oaid_sdk_1.0.23.aar 文件。

2、载入 OAID SDK 安全库

参考 Unity 2.5.1 集成的 「载入 OAID SDK 安全库」配置。

3、Assets 配置

在应用「App主模块」的 src/main/assets 下放入 supplierconfig.json 文件

4、「其它配置项」以及「验证结果」

参考 Android 原生 SDK 的集成方式。