【Android_CN_OAID】安卓设备唯一标识解决方案,可作为移动安全联盟统一 SDK (miit_mdid_xxx.aar)的替代方案。

Android_CN_OAID

安卓设备唯一标识解决方案,可作为移动安全联盟统一 SDK (miit_mdid_xxx.aar)的替代方案。
注意,这个项目的初衷主要是针对个人开发者的APP,个人开发者使用不了 MSA 的SDK,企业的APP应该去用 MSA 的 SDK
本项目提供了国内各大手机厂商获取 OAID(开放匿名设备标识)及海外手机平台获取 AAID(安卓广告标识)的便携接口,
另外也提供了 IMEI/MEID、AndroidID、WidevineID、PseudoID、GUID 等常见的设备标识的获取方法。

接入指引

最新版本参见 JitPack/Android_CN_OAID更新日志 | JavaDoc

依赖配置

如果你的项目 Gradle 配置是在 7.0 以下,需要在 build.gradle 文件中加入:

allprojects {
    repositories {
        // JitPack 远程仓库
        maven { url 'https://jitpack.io' }
    }
}

如果你的 Gradle 配置是 7.0 及以上,则需要在 settings.gradle 文件中加入:

dependencyResolutionManagement {
    repositories {
        // JitPack 远程仓库
        maven { url 'https://jitpack.io' }
    }
}

然后直接使用如下依赖即可:

dependencies {
    implementation 'com.github.gzu-liyujiang:Android_CN_OAID:最新版本号'
}

注意事项

  • 4.2.5.1 版本以后直接使用了华为官方广告标识服务SDK,与移动安全联盟 SDK 共存 的话可参考如下配置(PS:暂时没太多经历逆向华为的SDK重构包名来共存):
dependencies {
    implementation('com.github.gzu-liyujiang:Android_CN_OAID:最新版本号') {
        // 如果使用了移动安全联盟SDK,共存的话需排除掉本项目依赖的华为官方广告标识服务SDK,因为移动安全联盟SDK也依赖了华为的SDK
        // 如果华为官方广告标识服务SDK下载失败或编译报错的话,可考虑在 build.gradle 中增加以下配置:
        // repositories { maven {url 'https://developer.huawei.com/repo/'} }
        // runtimeOnly "com.huawei.hms:ads-identifier:3.4.62.300"
        exclude group: 'com.huawei.hms', module: 'ads-identifier' 
    }
}
  • 4.1.1 开始默认加入了 READ_PHONE_STATEWRITE_SETTINGSWRITE_EXTERNAL_STORAGE 权限以便适配低版本安卓系统。
  • 遵循最小必要原则保护用户隐私,若项目中没用到 IMEI 及 GUID,那么可酌情在 AndroidManifest.xml 中加入如下代码移除相关权限:
<manifest>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" tools:node="remove" />
</manifest>

代码示例

获取多个可能的设备标识,结合服务端引入拜占庭容错方案得到可靠的稳定的设备唯一标识:

  • 第一步:
    // 在`Application#onCreate`里初始化,注意APP合规性,若最终用户未同意隐私政策则不要调用
    @Override
    public void onCreate() {
        super.onCreate();
        if (privacyPolicyAgreed) {
            DeviceIdentifier.register(this);
        }
    }
  • 第二步:
         // 获取IMEI,只支持Android 10之前的系统,需要READ_PHONE_STATE权限,可能为空
        DeviceIdentifier.getIMEI(this);
        // 获取安卓ID,可能为空
        DeviceIdentifier.getAndroidID(this);
        // 获取数字版权管理ID,可能为空
        DeviceIdentifier.getWidevineID();
        // 获取伪造ID,根据硬件信息生成,不会为空,有大概率会重复
        DeviceIdentifier.getPseudoID();
        // 获取GUID,随机生成,不会为空
        DeviceIdentifier.getGUID(this);
        // 是否支持OAID/AAID
        DeviceID.supportedOAID(this);
        // 获取OAID/AAID,同步调用
        DeviceIdentifier.getOAID(this);
        // 获取OAID/AAID,异步回调
        DeviceID.getOAID(this, new IGetter() {
            @Override
            public void onOAIDGetComplete(String result) {
                // 不同厂商的OAID/AAID格式是不一样的,可进行MD5、SHA1之类的哈希运算统一
            }

            @Override
            public void onOAIDGetError(Exception error) {
                // 获取OAID/AAID失败
            }
        });

混淆规则

本库自带consumer-rules.pro如下混淆规则,不混淆厂商的相关接口及类。若通过远程依赖的方式引用,则无需进行额外配置:

-keep class repeackage.com.asus.msa.SupplementaryDID.** { *; }
-keep interface repeackage.com.asus.msa.SupplementaryDID.** { *; }
-keep class repeackage.com.bun.lib.** { *; }
-keep interface repeackage.com.bun.lib.** { *; }
-keep class repeackage.com.heytap.openid.** { *; }
-keep interface repeackage.com.heytap.openid.** { *; }
-keep class repeackage.com.samsung.android.deviceidservice.** { *; }
-keep interface repeackage.com.samsung.android.deviceidservice.** { *; }
-keep class repeackage.com.zui.deviceidservice.** { *; }
-keep interface repeackage.com.zui.deviceidservice.** { *; }
-keep class repeackage.com.coolpad.deviceidsupport.** { *; }
-keep interface repeackage.com.coolpad.deviceidsupport.** { *; }
-keep class repeackage.com.android.creator.** { *; }
-keep interface repeackage.com.android.creator.** { *; }
-keep class repeackage.com.google.android.gms.ads.identifier.internal.** { *; }
-keep interface repeackage.com.google.android.gms.ads.identifier.internal.* { *; }
-keep class com.huawei.hms.ads.** {*; }
-keep interface com.huawei.hms.ads.** {*; }
-keep class repeackage.com.oplus.stdid.** {*; }
-keep interface repeackage.com.oplus.stdid.** {*; }

支持情况

厂商或品牌系统或框架
华为(Huawei、Honor)HMS Core 2.6.2+ 、Google Play Service 4.0+
小米(XiaoMi、Redmi、BlackShark)MIUI 10.2+、Google Play Service 4.0+
维沃(VIVO、IQOO)Funtouch OS 9+、OriginOS 1.0+、Google Play Service 4.0+
欧珀(OPPO、Realme)ColorOS 7.0+、Google Play Service 4.0+
三星(Samsung)Android 10+、Google Play Service 4.0+
联想(Lenovo)ZUI 11.4+、Google Play Service 4.0+
华硕(ASUS)Android 10+、Google Play Service 4.0+
魅族(Meizu)Android 10+、Google Play Service 4.0+
一加(OnePlus)Android 10+、Google Play Service 4.0+
努比亚(Nubia)Android 10+、Google Play Service 4.0+
酷派(Coolpad)CoolOS、Google Play Service 4.0+
酷赛(Coosea )Android 10+、Google Play Service 4.0+
卓易(Droi )Freeme OS、Google Play Service 4.0+
其他(ZTE、HTC、Motorola、……)SSUI、Google Play Service 4.0+

注:本项目的 OAID 获取接口主要参考北京数字联盟公开的代码以及逆向分析参考移动安全联盟的 SDK、HUAWEI Ads SDK、小米 DeviceId.jar、Google Play Services SDK 等。

效果预览

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考资料

OAID 是移动智能终端补充设备标识体系中的一员,官方定义为 Open Anonymous Device Identifier(开放匿名设备标识符),
华为称之为 Open Advertising ID (开放广告标识符),谷歌称之为 Android Advertising ID (安卓广告标识符)。

远程真机

许可协议

Copyright (c) 2016-present. gzu-liyujiang<1032694760@qq.com> and All Contributors.

The software is licensed under the Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
    http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
PURPOSE.
See the Mulan PSL v2 for more details.
1、指数名称:北京大学数字普惠金融指数 2、课题组:本指数北京大学数字金融研究中心蚂蚁科技集团研究院组成的联合课题组负责编制,课题组顾问包括北京大学数字金融研究中心主任黄益平,蚂蚁集团研究院院长李振华。第一期指数2011-2015)课题组成员主要包括:郭峰、孔涛、王靖一、张勋、程志云、阮方圆、孙涛、王芳。第二期到第六期指数(2016-2023)课题组成员主要包括:郭峰、王靖一、程志云、李勇国、王芳。课题组也获得了北京大学蚂蚁集团多位同事的技术支持。 3、指数属性:这套指数包括数字普惠金融指数,以及数字金融覆盖广度数字金融使用深度以及普惠金融数字化程度;此外使用深度指数中还包含支付、信贷、保险、信用、投资、货币基金等业务分类指数;但由于监管公司数据安全审核等方面的原因,2019-2023的信用货币基金分指数,没有对外公布。 4、指数范围:中国内地31个省(直辖市、自治区,简称“省”)、337个地级以上城市(地区、自治州、盟等,简称“城市”),以及约2800个县(县级市、旗、市辖区等,简称“县域”);部分地区数据存在缺失;港澳台地区数据暂未包括。 5、时间跨度:省级城市级指数时间跨度为2011-2023,县域指数时间跨度为2014-2023。 6、地区代码说明:在2011-2023期间,中国部分地区进行了“撤地设市”“县(市)改区”等改革,调整了地区名称行政区划代码,但并不影响本指数统计;本表中城市代码同时保留了20142018两个版本,县域名称行政区划代码则以2014底的代码为准,以方便使用者合并其他经济社会数据进行分析。 7、引用说明:欢迎各界人士使用指数,如有使用本数据,请注明所用数据为“北京大学数字普惠金融指数”;同时烦请按照以下文献引用方式引用我们的成果:郭峰、王靖一、王芳、孔涛、张勋、程志云,《测度中国数字普惠金融发展: 指数编制与空间特征》,《经济学季刊》,2020第19卷第4期,第1401-1418页。 8、指数包括: index_aggregate(数字金融发展总指数), coverage_breadth(数字金融覆盖广度指数,二级维度3-1), usage_depth(数字金融使用深度指数,二级维度3-2), payment(电子支付指数),insurance(网络保险指数), monetary_fund,investment(网络投资指数), credit(网络信贷指数), credit_investigation, digitization_level(普惠金融数字化程度指数,二级维度3-3)
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值