OAID接入

优质
小牛编辑
180浏览
2023-12-01

OAID 简介

因传统的移动终端设备标识如国际移动设备识别码(IMEI)等已被部分国家认定为用户隐私的一部分,并存在被篡改和冒用的风险,所以在Android 10及后续版本中非厂商系统应用将无法获取IMEI、MAC等设备信息。无法获取IMEI会在用户行为统计过程中对设备识别产生一定影响。

近日移动安全联盟针对该问题联合国内手机厂商推出补充设备标准体系方案,选择OAID字段作为IMEI等的替代字段。OAID字段是由中国信通院联合华为、小米、OPPO、VIVO等厂商共同推出的设备识别字段,具有一定的权威性,可满足用户行为统计的使用场景。

更多OAID相关信息请参考移动安全联盟官网

OAID SDK 集成

App 端请参照移动安全联盟集成文档进行OAID SDK集成,并且将百度移动统计Android SDK升级到至少3.9.8.3版本。

Android 项目中集成OAID SDK步骤

  1. 把miit_mdid_x.x.x.aar 拷贝到项目的libs目录下,并设置依赖,其中x.x.x代表版本号。(注意,要及时关注移动联盟更新文档,保持版本及时更新)

  2. 将supplierconfig.json拷贝到项目assets目录下

  3. 在项目App Module下build.gradle文件中配置依赖

     dependencies {
         implementation fileTree(dir: 'libs', include: ['*.jar'])
         implementation files('libs/miit_mdid_1.0.10.aar')
     }
    
  4. 混淆设置

     -keep class com.bun.miitmdid.core.** {*;}
    
  5. 设置gradle编译选项,这块可以根据自己对平台的选择进行合理配置

     android {
     compileSdkVersion 28
     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"
         }
     }
     }
    
  6. 初始化代码,由于安卓9以后类加载的限制,MdidSdk.InitSdk和JLibrary.InitEntry()不能在一个类里调用,还要注意包含这两个调用的类不能有依赖关系 (此为官方推荐调用方式)

    • 在应用的application的onCreate中方法调用方法

        JLibrary.InitEntry(this);
      
    • 在另一个类里调用

        MdidSdkHelper.InitSdk(this, true, new IIdentifierListener() {
            @Override
            public void OnSupport(boolean b, IdSupplier idSupplier) {
                if (idSupplier != null && idSupplier.isSupported())
                    StatService.setOaid(context, idSupplier.getOAID());
            }
        });
      

说明:

接口说明
idSupplier.isSupported()是否支持补充设备标 识符获取 ,true 为支持,false 为不支持
idSupplier.getOAID()获取OAID
StatService.setOaid(this,idSupplier.getOAID())设置OAID