android序列号怎么修改,修改Android序列号(Serial Number)

文档说明

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

Serial Number说明

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

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

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

9f9644e067455c7a786db4e388cded03.png

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

代码分析

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

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

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

76f7a2927fef992dbd70c98ce99c9342.png

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

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

bb23e10056d443e594cd494b4bde152e.png

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

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

bfb5f1518b94f96e086fe8a5e67a50b9.png

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

b69578465f73b21498d1059de7d7da20.png

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

40c2e7602284e04129bf3e3659c9ca36.png

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

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

15d9be6f703d1bb704d0818315d03ac6.png

编译boot,烧录。

af5c4cebb2786956822f85c5df8edf76.png

遗留问题

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

8240d0bdda534331c4ee8b0ca29e00dc.png

在for循环之后,添加了

strlcpy(tmp, "77777777", sizeof("77777777"));

property_set(prop_map[i].dst_prop, tmp);

修改之后编译boot,烧录。但是串口调试log会提示:

property_set(“ro.serialno”, “99999999”) failed

给ro.serialno赋值失败。

没仔细研究property_set()函数。

代码路径和patch

bootable/bootloader/lk/app/aboot/aboot.c

device/qcom/common/rootdir/etc/init.qcom.usb.rc

下面是两个patch:

https://uploader.shimo.im/f/xXaBxqBTb9EyR6va.patch?attname=aboot.patch&download

https://uploader.shimo.im/f/f6dcm5ZeD3QY3cia.patch?attname=init.qcom.usb.rc.patch&download

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值