2022最新android设备uuid、udid使用教程
前言
udid:
UDID是Unique Device Identifier的缩写,中文意思是设备唯一标识.
uuid:
UUID是Universally Unique Identifier的缩写,中文意思是通用唯一识别码.
简言之:udid对应某个硬件设备,一个硬件设备的唯一标识。而uuid除了表达硬件的唯一标识,还能用来标识软件的标识,比如手机上不同的app的UUID是互斥的
android设备怎么获得udid呢?
这里面,我们主要目的是想获得一台android设备对一个的一个唯一的标识码,即udid.
对于Android平台而言,没有稳定的API可以让开发者获取到这样的设备ID。
开发者通常会遇到这样的困境:随着项目的演进,越来越多的地方需要用到设备ID;然而随着Android版本的升级,获取设备ID却越来越难了。
加上Android平台碎片化的问题,获取设备ID之路,可以说是步履维艰。
获取设备标识的API屈指可数,而且都或多或少有一些问题。
android设备id通常有以下几种(但是不一定唯一,刷机后可能就变了)
1. IMEI
IMEI本该最理想的设备ID,具备唯一性,恢复出厂设置不会变化(真正的设备相关),可通过拨打*#06# 查询手机的imei码。
然而,获取IMEI需要 READ_PHONE_STATE 权限,估计大家也知道这个权限有多麻烦了。
尤其是Android 6.0以后, 这类权限要动态申请,很多用户可能会选择拒绝授权。我们看到,有的APP不授权这个权限就无法使用, 这可能会降低用户对APP的好感度。
而且,Android 10.0 将彻底禁止第三方应用获取设备的IMEI(即使申请了 READ_PHONE_STATE 权限)。所以,如果是新APP,不建议用IMEI作为设备标识;
如果已经用IMEI作为标识,要赶紧做兼容工作了,尤其是做新设备标识和IMEI的映射。
2. 设备序列号(SN号)
在Android 7.1或更早系统(SDK<=25),java可通过android.os.Build.SERIAL获得,由厂商提供。
如果厂商比较规范的话,设备序列号+Build.MANUFACTURER应该能唯一标识设备。但现实是并非所有厂商都按规范来,尤其是早期的设备。
最致命的是,Android 8.0及 以上(SDK>=26),android.os.Build.SERIAL 总返回 “unknown”;若要获取序列号,可调用Build.getSerial() ,但是需要申请 READ_PHONE_STATE 权限。
到了Android 10.0(SDK>=29)以上,则和IMEI一样,也被禁止获取了。
android ndk获取sn号方法:
//读取序号
__system_property_get("ro.serialno",m_szDevID);
LOGE("%s", m_szDevID);
大多android设备都有wifi模块,因此,wifi模块的MAC地址就可以作为设备标识。基于隐私考虑,官方不建议获取
获取MAC地址也是越来越困难了,Android 6.0以后通过 WifiManager 获取到的mac将是固定的:02:00:00:00:00:00
7.0之后读取 /sys/class/net/wlan0/address 也获取不到了(小米6)。
4. ANDROID_ID
Android ID 是获取门槛最低的,不需要任何权限,64bit 的取值范围,唯一性算是很好的了。
但是不足之处也很明显:
1、刷机、root、恢复出厂设置等会使得 Android ID 改变;
2、Android 8.0之后,Android ID的规则发生了变化:
对于升级到8.0之前安装的应用,ANDROID_ID会保持不变。如果卸载后重新安装的话,ANDROID_ID将会改变。
对于安装在8.0系统的应用来说,ANDROID_ID根据应用签名和用户的不同而不同。ANDROID_ID的唯一决定于应用签名、用户和设备三者的组合。
两个规则导致的结果就是:
第一,如果用户安装APP设备是8.0以下,后来卸载了,升级到8.0之后又重装了应用,Android ID不一样;
第二,不同签名的APP,获取到的Android ID不一样。
其中第二点可能对于广告联盟之类的有所影响(如果彼此是用Android ID对比数据的话),所以Google文档中说“请使用Advertising ID”,
不过大家都知道,Google的服务在国内用不了。
对Android ID做了约束,对隐私保护起到一定作用,并且用来做APP自己的活跃统计也还是没有问题的。
总结
目前用到的还是以sn号和mac地址为主,还有的会用soc号作为android设备的udid
2022最新android设备uuid、udid使用教程相关推荐
- iOS上架之android设备uuid、udid使用教程
前言 udid: UDID是Unique Device Identifier的缩写,中文意思是设备唯一标识. uuid: UUID是Universally Unique Identifier的缩写,中 ...
- 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第六章:数据存储
第 6 章 数据存储 本章介绍Android 4种存储方式的用法,包括共享参数SharedPreferences.数据库SQLite.存储卡文 件.App的全局内存,另外介绍Android重要组件-应 ...
- 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第五章:中级控件
第 5 章 中级控件 本章介绍App开发常见的几类中级控件的用法,主要包括:如何定制几种简单的图形.如何使用几种选择按钮.如何高效地输入文本.如何利用对话框获取交互信息等,然后结合本章所学的知识,演示 ...
- android设备uuid、udid
前言 udid: UDID是Unique Device Identifier的缩写,中文意思是设备唯一标识. uuid: UUID是Universally Unique Identifier的缩写,中 ...
- 2022 最新 Android studio添加阿里云Aliyun Maven仓库
2022 最新 Android studio添加阿里云Aliyun Maven仓库 网上看了很多的文章,都是老文章,要不就是AS是老版本,我是个新手,也不懂AS老了有啥好的,所以下载AS的时候,默认就 ...
- 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第三章:简单控件
第 3 章 简单控件 本章介绍了App开发常见的几类简单控件的用法,主要包括:显示文字的文本视图.容纳视图的常用布局.响应点击的按钮控件.显示图片的图像视图等.然后结合本章所学的知识,演示了一个实战项 ...
- 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第一章:Android开发环境搭建
第 1 章 Android开发环境搭建 本章介绍了如何在个人电脑上搭建Android开发环境,主要包括:Android开发的发展历史是怎样的.Android Studio的开发环境是如何搭建的.如何创 ...
- 2022年Android官方模拟器安装Xposed教程+测试工具PatDroid安装教程
碎碎念:截至笔者写此教程的2022.10.10,xposed官网貌似已经G了(?),网上有的教程已经过时,有的是针对奇怪的商用的Android模拟器的教程(以科研工作者的角度来说),在此环境下出一篇A ...
- 获取android设备唯一编号_如何获取Android设备唯一标识码教程
ID的全称是(Virtual identity electronic identification),中文名为通用账户,是俗称的网络身份证.它是一种互联网身份认证协议,其具有唯一性和信息不可否认性.I ...
最新文章
- Github的Tom大鸟:我是如何拒绝微软30w的诱惑,专注于Github事业
- python cvxpy包安装教程
- oracle自定义函数获取省份,oracle自定义函数查询数据字典项
- 对于理想的团队模式的设想和对软件流程的理解
- java模拟atm 课程设计_急求,关于Java课程设计ATM创建实现
- 更新json文件_忽略packagelock.json?
- 只读变量(常量)和位置变量
- pytorch 吸烟检测yolov5s
- 相机裁剪旋转_怎么旋转视频画面角度
- ACL2020 奇葩论文标题大赏
- IOS 7 Xcode 5 免IDP证书 真机调试
- C#获取当前路径的七种方法
- 学习笔记 Logistic阻滞人口预测模型
- 女子人身安全防卫指南
- Apktool反编译
- Java解惑之长整型
- 全国计算机二级很难得吗,全国计算机二级考试难吗?
- 操作系统春招面试复习之:存储管理
- pe如何自动加载外置工具_WINPE如何做到启动后自动运行外置程序里面指定的程序...
- Flash Socket 的基本通讯协议流程例子
热门文章
- css 绝对定位元素挡住下方元素点击解决办法
- 星火计划ROS机器人Spark
- vue3学习—ReactivityAPI
- golang defer实现
- Google Zxing 只扫描二维码或者只扫描条形码
- 深度学习环境配置Win10+CUDA+cuDNN+Tensorflow2.0+PyTorch1.2+Python3.7.6
- Laravel5.8.x / 8.5.9反序列化复现学习
- return 1和return 0的区别
- 计算机二级3月考试标语,2021年第48次全国计算机等级考试-20210715092005.doc-原创力文档...
- 营销做好“市场调研”“全景代入”即可超越同行