OAID SDK集成说明
<h1>OAID SDK集成说明<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Android/OAID_SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/#oaid-sdk%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E"></a></h1>
<h2>1. Android 10 OAID 描述<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Android/OAID_SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/#_1-android-10-oaid-%E6%8F%8F%E8%BF%B0"></a></h2>
<p>> Android 10 无法通过常规方式获取IMEI等设备ID,影响部分广告网络(Sigmob、快手等)正常广告加载、展示等业务,开发者需要接入 OAID SDK 才可以正常加载这些广告网络的广告。建议开发者优先集成OAID,集成方式可以参看[demo] MSA联盟官网地址: <a href="http://www.msa-alliance.cn/col.jsp?id=120"><a href="http://www.msa-alliance.cn/col.jsp?id=120">http://www.msa-alliance.cn/col.jsp?id=120</a></a>
>
> OAID SDK 不是 必要组件。此章节所提及的内容,开发者根据自身情况判断是否处理。满足以下场景下可不处理 1. 应用已接入 OAID ; 2.应用不使用快手等依赖 OAID 的广告网络。</p>
<h2>2. 引入依赖<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Android/OAID_SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/#_2-%E5%BC%95%E5%85%A5%E4%BE%9D%E8%B5%96"></a></h2>
<ul>
<li>
<p>把 msa_mdid_x.x.x.aar 或者 oaid_sdk_x.x.x.aar 拷贝到项的 libs 目录,并设置依赖,其中 x.x.x 代表版本号。</p>
<p>implementation files('libs/msa_mdid_x.x.x.aar')
或者
implementation files('libs/oaid_sdk_x.x.x.aar')</p>
</li>
</ul>
<h2>3. Assets设置<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Android/OAID_SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/#_3-assets%E8%AE%BE%E7%BD%AE"></a></h2>
<ul>
<li>
<p>将 supplierconfig.json 拷贝到项目 assets 目录下,并修改里边对应内容,特别是需要设置 appid 的部分。需要设置 appid 的部分需要去对应厂商的应用商店里注册自己的app。</p>
</li>
<li>
<p>将证书文件(<strong>应用包名.cert.pem</strong>)拷贝到项目 app/src/main/assets 目录下或在SDK初始化前通过 <strong>WindAds.setOAIDCertPem(certpemStr)</strong> 传入OAID证书Pem内容。</p>
</li>
<li>
<p><strong>仅1.0.26+版本需要配置证书</strong>。</p>
<p>> 证书需要填写 example_batch.csv 后发送到 <a href="mailto:msa@caict.ac.cn">msa@caict.ac.cn</a> 申请,注意每个包名对应一个签名,申请时需要将所需申请的全部包名填写到表格中。为避免证书过期影响 APP 获取 ID,建议证书信息可以从后台服务器获取,或 者当调用 oaid SDK 接口提示证书无效时,调用后台接口及时更新证书信息,并且 快到期时及时提前重新申请证书。</p>
</li>
</ul>
<h2>4. gradle 配置<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Android/OAID_SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/#_4-gradle-%E9%85%8D%E7%BD%AE"></a></h2>
<ul>
<li>
<p>设置 gradle 编译选项,这里可以根据自己对平台的选择进行合理配置。</p>
<p>ndk {
abiFilters 'armeabi-v7a','x86','arm64-v8a','x86_64','armeabi'
}</p>
<p>packagingOptions {
doNotStrip "<em>/armeabi-v7a/</em>.so"
doNotStrip "<em>/x86/</em>.so"
doNotStrip "<em>/arm64-v8a/</em>.so"
doNotStrip "<em>/x86_64/</em>.so"
doNotStrip "armeabi.so"
}</p>
</li>
</ul>
<h2>5. 混淆设置<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Android/OAID_SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/#_5-%E6%B7%B7%E6%B7%86%E8%AE%BE%E7%BD%AE"></a></h2>
<ul>
<li>现SDK支持oaid_sdk_1.0.10、1.0.13、1.0.22、1.0.23、1.0.25, 1.0.30, 1.1.0, 1.2.0, 1.2.1 等版本、但是媒体必须按照以下混淆配置进行设置</li>
</ul>
<p>java</p>
<pre><code># 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 &lt;methods&gt;;}</code></pre>
<h2>6.错误码<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Android/OAID_SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/#_6-%E9%94%99%E8%AF%AF%E7%A0%81"></a></h2>
<p>> 信息码(引用 InfoCode 类)</p>
<table>
<thead>
<tr>
<th>信息</th>
<th>值</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>INIT_INFO_RESULT_OK</td>
<td>1008610</td>
<td>调用成功,获取接口是同步的</td>
</tr>
<tr>
<td>INIT_INFO_RESULT_DELAY</td>
<td>1008614</td>
<td>调用成功,获取接口是异步的</td>
</tr>
<tr>
<td>INIT_ERROR_CERT_ERROR</td>
<td>1008616</td>
<td>证书未初始化或证书无效</td>
</tr>
<tr>
<td>INIT_ERROR_MANUFACTURER_NOSUPPORT</td>
<td>1008611</td>
<td>不支持的厂商</td>
</tr>
<tr>
<td>INIT_ERROR_DEVICE_NOSUPPORT</td>
<td>1008612</td>
<td>不支持的设备</td>
</tr>
<tr>
<td>INIT_ERROR_LOAD_CONFIGFILE</td>
<td>1008613</td>
<td>加载配置文件出错</td>
</tr>
<tr>
<td>INIT_ERROR_SDK_CALL_ERROR</td>
<td>1008615</td>
<td>sdk调用出错</td>
</tr>
</tbody>
</table>
<h2>7.如何检验oaid接入成功<a href="https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Android/OAID_SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/#_7-%E5%A6%82%E4%BD%95%E6%A3%80%E9%AA%8Coaid%E6%8E%A5%E5%85%A5%E6%88%90%E5%8A%9F"></a></h2>
<p>两种方法查看oaid是否接入成功:</p>
<ol>
<li>提供一下应用id,包名,及应用版本号,我们这边查一下后台日志即可;</li>
<li>Android Studio 控制台里使用logcat 过滤一下MdidSdkHelper 关键字。</li>
</ol>