All Projects → gzu-liyujiang → Android_cn_oaid

gzu-liyujiang / Android_cn_oaid

Licence: other
适用于国内各大Android手机厂商的开放匿名设备标识(OAID)解决方案,可替代移动安全联盟提供的 SDK 闭源方案(miit_mdid_xxx.aar)。

Programming Languages

java
68154 projects - #9 most used programming language

Labels

Projects that are alternatives of or similar to Android cn oaid

graphql-type-uuid
UUID scalar type for GraphQL.js
Stars: ✭ 23 (-93.78%)
Mutual labels:  uuid
user
A domain layer providing basic user management
Stars: ✭ 14 (-96.22%)
Mutual labels:  uuid
cyksuid
Fast Python implementation of KSUID (K-Sortable Globally Unique IDs) using Cython
Stars: ✭ 29 (-92.16%)
Mutual labels:  uuid
eav-bundle
A Symfony bundle for basic EAV management
Stars: ✭ 19 (-94.86%)
Mutual labels:  uuid
Butterfly
分布式ID生成器框架:超高性能的发号器框架。通过引入多种新的方案,彻底解决雪花算法的时间回拨等问题,并将雪花算法原生QPS提高最少十几~二十倍
Stars: ✭ 111 (-70%)
Mutual labels:  uuid
ulid-creator
A Java library for generating Universally Unique Lexicographically Sortable Identifiers (ULID)
Stars: ✭ 38 (-89.73%)
Mutual labels:  uuid
fuuid
Functional UUIDs for Python.
Stars: ✭ 145 (-60.81%)
Mutual labels:  uuid
Xyuuid
iOS14 UUID KeyChain DeviceInfo IDFA UDID
Stars: ✭ 301 (-18.65%)
Mutual labels:  uuid
micell
A collection of functions for front-end development
Stars: ✭ 16 (-95.68%)
Mutual labels:  uuid
twitch-chat-visualizer
A Node.js Project. Would you like to see your chat stream with a custom design? This is for you!
Stars: ✭ 14 (-96.22%)
Mutual labels:  uuid
Xid.Net
Ported from https://github.com/rs/xid - A fast, low allocation, zero config, thread-safe 12 byte UUID generator based on the Mongo Object Id algorithm.
Stars: ✭ 17 (-95.41%)
Mutual labels:  uuid
ksuid-go
K-Sortable globally Unique ID
Stars: ✭ 15 (-95.95%)
Mutual labels:  uuid
uuix
A tiny (<1KB) and fast UUID (v4) generator for Crystal
Stars: ✭ 17 (-95.41%)
Mutual labels:  uuid
godot-uuid
Unique identifier generation v4 for Godot Engine
Stars: ✭ 96 (-74.05%)
Mutual labels:  uuid
shortuuid.rb
Convert UUIDs & numbers into space efficient and URL-safe Base62 strings, or any other alphabet.
Stars: ✭ 38 (-89.73%)
Mutual labels:  uuid
gobarber-api-gostack11
API GoBarber / NodeJS / Express / Typescript / SOLID
Stars: ✭ 39 (-89.46%)
Mutual labels:  uuid
secrets.clj
A library designed to generate cryptographically strong random numbers.
Stars: ✭ 64 (-82.7%)
Mutual labels:  uuid
Uniuri
Go package uniuri generates random strings good for use in URIs to identify unique objects.
Stars: ✭ 336 (-9.19%)
Mutual labels:  uuid
Newid
A sequential id generator that works across nodes with no collisions
Stars: ✭ 255 (-31.08%)
Mutual labels:  uuid
vue-uuid
Add UUID to Vue instance.
Stars: ✭ 55 (-85.14%)
Mutual labels:  uuid

Android_CN_OAID

Release APK Gradle Package

本项目抹平了各大 Android 手机厂商获取 OAID(开放匿名标识)的差异性,轻松通过几句代码即可获取不同手机的 OAID,可作为移动安全联盟官网提供的 SDK 闭源方案(miit_mdid_xxx.aar)的替代方案。

接入指引

最新版本:jitpack

依赖配置

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

在没有用到移动安全联盟 SDK 的情况下,依赖如下:

dependencies {
    implementation 'com.github.gzu-liyujiang.Android_CN_OAID:OAID_ASUS:版本号' //华硕
    implementation 'com.github.gzu-liyujiang.Android_CN_OAID:OAID_BUN:版本号' //中兴、卓易
    implementation 'com.github.gzu-liyujiang.Android_CN_OAID:OAID_HEYTAP:版本号' //欧珀、一加
    implementation 'com.github.gzu-liyujiang.Android_CN_OAID:OAID_SAMSUNG:版本号' //三星
    implementation 'com.github.gzu-liyujiang.Android_CN_OAID:OAID_UODIS:版本号' //华为
    implementation 'com.github.gzu-liyujiang.Android_CN_OAID:OAID_ZUI:版本号' //联想、摩托罗拉
    implementation 'com.github.gzu-liyujiang.Android_CN_OAID:OAID_IMPL:版本号' //具体实现
}

若项目中直接或间接地使用了移动安全联盟的 SDK,则可能需要取消相关有冲突的依赖项,例如,取消和“msa_mdid_1.0.22.aar”有冲突的项依赖如下:

dependencies {
    //implementation 'com.github.gzu-liyujiang.Android_CN_OAID:OAID_ASUS:版本号'  //华硕
    //implementation 'com.github.gzu-liyujiang.Android_CN_OAID:OAID_BUN:版本号'  //中兴、卓易
    implementation 'com.github.gzu-liyujiang.Android_CN_OAID:OAID_HEYTAP:版本号'  //欧珀、一加
    //implementation 'com.github.gzu-liyujiang.Android_CN_OAID:OAID_SAMSUNG:版本号'  //三星
    implementation 'com.github.gzu-liyujiang.Android_CN_OAID:OAID_UODIS:版本号'  //华为
    implementation 'com.github.gzu-liyujiang.Android_CN_OAID:OAID_ZUI:版本号'  //联想、摩托罗拉
    implementation 'com.github.gzu-liyujiang.Android_CN_OAID:OAID_IMPL:版本号'  //具体实现
}

代码示例

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

        // 获取DID/IMEI/MEID,只支持Android 10之前的系统,需要READ_PHONE_STATE权限,可能为空
        DeviceID.getUniqueID(context);
        // 获取安卓ID,可能为空
        DeviceID.getAndroidID(context);
        // 获取伪造ID,根据硬件信息生成,不会为空,有大概率会重复
        DeviceID.getPseudoID();
        // 获取GUID,随机生成,存到SharedPreferences,不会为空,但APP卸载后将丢失
        DeviceID.getGUID(context);

获取 OAID:DeviceID.with(context).doGet(new IOAIDGetter() { ... });

        IDeviceId deviceId = DeviceID.with(context);
        if (!deviceId.supportOAID()) {
            // 不支持OAID,须自行生成GUID。
            return;
        }
        deviceId.doGet(new IOAIDGetter() {
            @Override
            public void onOAIDGetComplete(@NonNull String oaid) {
                // 不同厂商的OAID格式是不一样的,可进行MD5、SHA1之类的哈希运算统一
            }

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

混淆规则

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

-keep class com.asus.msa.SupplementaryDID.** { *; }
-keep interface com.asus.msa.SupplementaryDID.** { *; }
-keep class com.bun.lib.** { *; }
-keep interface com.bun.lib.** { *; }
-keep class com.heytap.openid.** { *; }
-keep interface com.heytap.openid.** { *; }
-keep class com.samsung.android.deviceidservice.** { *; }
-keep interface com.samsung.android.deviceidservice.** { *; }
-keep class com.uodis.opendevice.aidl.** { *; }
-keep interface com.uodis.opendevice.aidl.** { *; }
-keep class com.zui.deviceidservice.** { *; }
-keep interface com.zui.deviceidservice.** { *; }

厂商支持

厂商 版本
小米(Xiaomi) MIUI 10.2 及以上
黑鲨(BlackShark) MIUI 10.2 及以上
维沃(VIVO) Funtouch OS 9 及以上
华为(Huawei) HMS 2.6.2 及以上
欧珀(OPPO) Color OS 7.0 及以上
联想(Lenovo) ZUI 11.4 及以上
摩托罗拉(Motorola) ZUI 11.4 及以上
华硕(ASUS) Android 10 及以上
魅族(Meizu) Android 10 及以上
三星(Samsung) Android 10 及以上
努比亚(Nubia) Android 10 及以上
一加(OnePlus) Android 10 及以上
中兴(ZTE) Android 10 及以上
卓易(Freeme OS) Android 10 及以上

注:本项目的 OAID 获取接口主要参考北京数字联盟公开的代码并逆向分析参考移动安全联盟的 SDK,酷派、乐视、真我、锤子等厂商截止目前(2021.01.19)并未见到移动安全联盟有支持,也未查阅到厂商相关公开资料,需自行生成 GUID。

效果预览

  • 支持OAID的情况
  • 支持OAID的情况
  • 支持OAID的情况
  • 支持OAID的情况
  • 不支持OAID的情况
  • 不支持OAID的情况
  • 不支持OAID的情况

参考资料

OAID 即 Open Anonymous Identifier,开放匿名标识符,是移动智能终端补充设备标识体系中的一员。

许可协议

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/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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].