Android设备的序列号是通过获取Property“ro.serialno”的值取得的。“ro.serialno”的值一般来源于内核启动参数中的"ro.boot.serialno"。


在rk3368 Android6.0中,uboot读取idblock的IDBLOCK_SN偏移地址获取序列号----->保存到env变量“fbt_sn#”----->保存到env变量“androidboot.serialno”----->设置到内核CMDLINE----->android init程序解析/proc/cmdline----->保存到Property“ro.boot.serialno”----->映射保存到Property“ro.serialno“

rk3368的序列号(Property“ro.serialno“)来源主要有以下几种:
1. init解析/proc/cmdline获取

init 读取内核cmdline(/proc/cmdline),解析“androidboot.serialno”并赋值给“ro.boot.serialno”,然后通过映射赋值给“ro.serialno“。 但在rk3368系统中只有TARGET_BOARD_PLATFORM为sofia3gr的设备才会走这个流程。

2. 改变property“sys.serialno”的值触发修改ro.serialno

当property “sys.serialno”的值改变时,设置Property“ro.serialno”的值为“sys.serialno”的值。

init.rk30board.rc

# set ro.serialno
on property:sys.serialno=*setprop ro.serialno ${sys.serialno}
......
service drmservice /system/bin/drmserviceclass mainoneshot

drmservice会改变sys.serialno的值

drmservice启动时会获取序列号保存到/data/misc/wifi/serialno,并且会设置“sys.serialno”的值,从而触发init.rk30board.rc中ro.serialno值的更新。

drmservice获取序列号的来源可能是来自idblock(读取/dev/rknand_sys_storage)、算法自动生成(根据wifi mac地址),主要看宏定义SERIALNO_FROM_IDB是否打开。

system/core/drmservice/drmservice.c
#define SERIALNO_FROM_IDB 0

烧录序列号工具: RKTools/windows/UpgradeDllTool_v1.35

Android设备的序列号与ro.serialno相关推荐

  1. Android设备硬件序列号(SN、串号)分析

    Android设备硬件序列号(SN.串号)的序列号是怎么获取的,以全志A64平台来一步步跟代码分析: 在设置->关于设备->状态信息中,显示的信息来自android.os.Build.SE ...

  2. android 设备序列号_如何查找您的Android设备的序列号

    android 设备序列号 Your device's serial number is a unique code that the manufacturer gives the phone. No ...

  3. 页面调用ADB操作Android设备

    新手上路,请多关照.如本文有何不足之处,还望前辈们多多指教! 本文来通过实现一个从页面点击按钮,然后删除Android设备上指定文件的功能来简单介绍一下从页面操作Android设备的流程. 首先,下面 ...

  4. android 获取serialno_[Android]关于Android 唯一设备号(ro.serialno)

    1.ro.serialno不存在于任何属性文件,比如build.prop, default.prop等,而是在/system/core/init/init.c里由ro.boot.serialno 转换 ...

  5. Android rom开发:自定义序列号ro.serialno

    本文基于Android 5.1版本SDK. 客户需求:自定义sn,统一规则编号. 第一部分:背景知识 Android的sn由SystemProperties.get("ro.serialno ...

  6. 获得Android设备的唯一序列号

    理论部分 1.每个设备都有一个唯一序列号,Android设备也不例外,PC上用Mac地址 实践部分 1.核心代码: Secure.getString(getContentResolver(),Secu ...

  7. 不需权限获得Android设备唯一标识序列号

    关键方法 public static String getUniqueSerialNumber() {String phoneName = Build.MODEL;// Galaxy nexus 品牌 ...

  8. Android Studio 调试的时候出现 Access denied finding property “ro.serialno“

    我虚拟机和物理机都安装了Android Studio,发现虚拟机中调试不是那么方便,然后想使用物理机开发,使用的小米MI4 系统是安卓11,在物理机中一直提示:libc:Access denied f ...

  9. Android 7.0 写入ro.serialno小结

    项目需要,需要写入ro.serialno属性.借鉴了网上的文档,现把这个知识点做个备忘小结. 1.原理:ro.serialno是init从bootcmdline读取androidboot.serial ...

最新文章

  1. 别了比特币,BCH将领导加密货币!
  2. centos java tomcat_centos配置Tomcat以指定的身份(非root)运行
  3. 从门禁系统的使用体验看良好的交互设计原则
  4. angular父组件通过@ViewChild 主动获取子组 件的数据和方法
  5. 蓝桥杯练习系统习题-算法训练2
  6. LILY 英语携手神策数据 数据赋能少儿英语学习创新体验
  7. hive启动时出现javax.jdo.JDODataStoreException: Error executing SQL query
  8. P5371-[SNOI2019]纸牌【矩阵乘法】
  9. JDK 13中的JEP 355文本块
  10. 如何处理Oracle客户端查询乱码问题
  11. C++ set insert的返回值
  12. 开发者在对项目失去信心后,该做什么?
  13. 关于u8, u16, u32, u64
  14. mysql block是什么,php – MySQL PDO – try {block}里面应该是什么?
  15. tomcat日志按天分割
  16. 内网渗透-WindowsLinux痕迹清除
  17. 应用启动图标未读消息数显示 工具类
  18. 【实践与问题解决28】最全超分辨率(SR)数据集介绍以及多方法下载链接
  19. 什么是GRAY色彩空间
  20. 关于SCO Unix 串口通讯

热门文章

  1. 《吴思文集》的网址如下:
  2. 【渝粤教育】电大中专电子商务网站建设与维护 (29)作业 题库
  3. 软件测试行业薪资排名第五!一线城市,月薪多少才够上了及格线?
  4. JSON基础和JSON的主要作用
  5. 【信息保护论】信息保护与密码学
  6. Python参考手册(第4版)pdf
  7. Winsows Server 2019 安装 PostgreSQL
  8. 机器学习中的数学——连续型随机变量的测度
  9. K-means聚类以及利用K-means来压缩图像
  10. Megacli命令的使用总结