文档说明

本文档以SC806-CN-00-71(msm8909平台 Android7系统)为例,描述如何修改Android Serial Number。

Serial Number说明

菜单 About phone -> Status -> Serial Number,如下图所示(图是中文系统,看"序列号"):

android获取ro._修改Android序列号(Serial Number)_第1张图片

SC806-CN-00-71默认的序列号是:12345678

通过Adb devices显示出来的设备号也是: 12345678

56bce889c509724e02c5d282fc637110.png

UI界面显示的序列号和Adb Devices显示的设备号,两者是有区别的,下面会讲到。

代码分析

Serial Number对应android系统的环境变量 ro.serialno。

查看lk的开机部分代码 bootable/bootloader/lk/app/aboot/aboot.c

下图定义了sn_buf数组,该数组是为了生成cmdline。ro.serialno的值就是通过解析cmdline得到的。

android获取ro._修改Android序列号(Serial Number)_第2张图片

SC806-CN-00-71修改了原生的android代码,把ro.serialno写死为"12345678",并没有通过target_serialno()函数去获取。

看下图,把target_serialno调用注释掉了。

android获取ro._修改Android序列号(Serial Number)_第3张图片

如果要更改序列号,修改sn_buf数组的初始值即可。

我们这里把它改成"77777777"试试。

android获取ro._修改Android序列号(Serial Number)_第4张图片

编译 aboot,烧录,显示如下图所示,Serial Number已经变成了"77777777"

android获取ro._修改Android序列号(Serial Number)_第5张图片

也可以通过cat /proc/cmdline,查看androidboot.serialno的值。

android获取ro._修改Android序列号(Serial Number)_第6张图片

现在通过adb devices查看,还是"12345678"

如果要修改adb devices设备号,修改device/qcom/common/rootdir/etc/init.qcom.usb.rc,不要写死为"12345678",改成从ro.serialno获取。

android获取ro._修改Android序列号(Serial Number)_第7张图片

编译boot,烧录。

c9e10102088bc4863c5eae7afb7cece9.png

遗留问题

从代码上分析,修改 system/core/init/init.cpp应该也可以改掉ro.serialno的值。

android获取ro._修改Android序列号(Serial Number)_第8张图片

在for循环之后,添加了

strlcpy(tmp, "77777777

更多相关文章

  1. Android ImageView圆角图片的简单实现
  2. 【Java】java和android网络编程 - 对byte数组压缩和解压缩(zip,g
  3. Android 控件背景图片和imagebutton的使用(selector)
  4. Android获取图片资源的4种方式
  5. android:scaleType 设置图片显示
  6. android --启动画面制做 png图片-->initlogo.rle

随机推荐

  1. Gradle离线配置、.android、.AndroidStud
  2. ScrollView中添加ListView
  3. android获得mac和ip
  4. android自带Base64加密解密
  5. Android之短信发送器
  6. Linux 命令行更新指定版本 android sdk
  7. Android(安卓)调用系统浏览器 出现activi
  8. android API——EditText
  9. 1、ListView自定义控件下拉刷新(一)
  10. android 测试简介