OAID SDK 集成说明

OAID SDK 集成说明

背景信息

OAID

自 2.4.6 版本起,SDK 不再统一集成 OAID

Android 10 无法通过常规方式获取 IMEI 等设备ID,影响部分广告的加载、展示等业务,开发者需要接入 OAID SDK 才可以正常加载这些广告网络的广告。建议开发者优先集成 OAID

OAID SDK 1.0.25 版本起引入了证书机制,需要开发者申请证书信息并在应用初始化时配置证书信息,详见MSA联盟open in new window

集成指引

引入依赖

SDK 压缩包内提供了oaid_sdk_1.0.25版本,其他版本请访问MSA联盟open in new window

dependencies {
    implementation files('libs/oaid_sdk_x.y.z.aar')
}

配置 Assets

supplierconfig.json拷贝到项目 assets 目录下,并修改里边对应内容,特别是需要设置 appid 的部分。需要设置 appid 的部分需要去对应厂商的应用商店里注册自己的app

提示

1.0.26 及更高版本在拷贝supplierconfig.json后,还需要按照官方文档拷贝证书文件(应用包名.cert.pem)拷贝到项目 assets 目录下,并在初始化时配置证书信息

配置 Gradle

build.gradleandroid节点defaultConfig节点内添加以下内容:

android {

    defaultConfig {
        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"
    }

}

配置混淆规则

在当前工程的混淆配置文件中追加以下内容:

点击展开混淆配置
# 1.0.25之后

# sdk
-keep class com.bun.miitmdid.** { *; }
-keep interface com.bun.supplier.** { *; }

# 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.ads.** { *; }
-keep interface com.huawei.hms.ads.** {*; }
# 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.** { *; }

# 1.0.25 之前
-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>;}

错误码说明

CODE说明
INIT_INFO_RESULT_OK1008610调用成功,获取接口是同步的
INIT_INFO_RESULT_DELAY1008614调用成功,获取接口是异步的
INIT_ERROR_CERT_ERROR1008616证书未初始化或证书无效
INIT_ERROR_MANUFACTURER_NOSUPPORT1008611不支持的厂商
INIT_ERROR_DEVICE_NOSUPPORT1008612不支持的设备
INIT_ERROR_LOAD_CONFIGFILE1008613加载配置文件出错
INIT_ERROR_SDK_CALL_ERROR1008615sdk调用出错

接入状态检查

可以通过以下两种方式排查应用的 OAID SDK 是否接入成功:

  • 提供用户ID 给到我们进行排查
  • Logcat中过滤tag:MdidSdkHelper观察日志输出