• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Android_CN_OAID: 安卓设备唯一标识解决方案,可完全替代移动安全联盟统一 SDK 闭源方 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

Android_CN_OAID

开源软件地址:

https://gitee.com/li_yu_jiang/Android_CN_OAID

开源软件介绍:

Android_CN_OAID

Release APKGradle Package

安卓设备唯一标识解决方案,可作为移动安全联盟统一 SDK (miit_mdid_xxx.aar)的替代方案。本项目提供了国内各大手机厂商获取 OAID(开放匿名设备标识)及海外手机平台获取 AAID(安卓广告标识)的便携接口,另外也提供了 IMEI/MEID、AndroidID、WidevineID、PseudoID、GUID 等常见的设备标识的获取方法。

  • GitHub:https://github.com/gzu-liyujiang/Android_CN_OAID
  • 码云(GitEE):https://gitee.com/li_yu_jiang/Android_CN_OAID

接入指引

最新版本:jitpack更新日志 | JavaDoc

依赖配置

allprojects {    repositories {        maven { url 'https://www.jitpack.io' }    }}

4.0.0 以前的版本 不建议再使用,请尽快升级到最新版本。4.0.0 版本以后重新调整了与移动安全联盟 SDK 共存的方案 ,直接使用如下依赖即可:

dependencies {    implementation 'com.github.gzu-liyujiang:Android_CN_OAID:<version>'}

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.uodis.opendevice.aidl.** { *; }-keep interface repeackage.com.uodis.opendevice.aidl.** { *; }-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.** { *; }

支持情况

厂商或品牌系统或框架
华为(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(开放匿名设备标识符)

  • 华为手机 huawei
  • 荣耀手机 hono
  • 小米手机 xiaomi
  • 红米手机 redmi
  • 黑鲨手机 blackshark
  • 维沃手机 vivo_iqoo
  • 欧珀手机 oppo
  • 真我手机 realm
  • 三星手机 samsung
  • 魅族手机 meizu
  • 联想手机 lenovo
  • 一加手机 oneplus
  • 华硕手机 asus
  • 努比亚机 待验证
  • 酷派手机 待验证
  • 酷赛手机 待验证
  • 卓易手机 待验证

AAID(安卓广告标识符)

  • 谷歌手机 google
  • 中兴手机 zte
  • 摩托罗拉 motorola
  • 索尼手机 sony
  • 诺基亚机 nokia
  • HTC 手机 htc
  • LG 手机 lge

不支持 OAID 或 AAID

  • 用户关闭了广告标识符

disabled

  • 以下厂商或品牌手机截止2021年8月26日已验证尚不支持:
锤子(Smartisan)、360(360)、奇酷(QiKu)、海信(Hisense)、金立(Gionee)、美图(Meitu)、糖果(SOAP)、格力(Gree)、朵唯(Doov)、优思(Uniscope)、夏普(SHARP)、乐视(LeTV)、维图(VOTO)、宏碁(Acer)、TCL(TCL)、……

参考资料

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

远程真机

许可协议

Copyright (c) 2019-2021 gzu-liyujiang <[email protected]>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/MulanPSL2THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULARPURPOSE.See the Mulan PSL v2 for more details.

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap