1.ro.serialno不存在于任何属性文件,比如build.prop, default.prop等,而是在/system/core/init/init.c里由ro.boot.serialno 转换而来,见export_kernel_boot_props()。
2.而ro.boot.serialno的来源是/proc/cmdline,也就是linux kernel启动时被传入的cmdline, 由bootloader传入。
bootloader传进来的是androidboot.serialno, 而不是ro.boot.serialno,因为还要解析过cmdline
3.ro.serialno的用处是来保存唯一设备号,在settings->about->status里会显示,也会用在USB device name里。
about->status 里获取serialno的流程:
Build.SERIAL
->getString("ro.serialno")
->SystemProperties.get()
->SystemProperties.native_get()
->SystemProperties_getSS() in android_os_SystemProperties.cpp
->property_get() in Properties.c
->__system_property_get() in System_properties.c in bionic
获取到的前提是之前已经有设置好,也就是有调用property_set() in init.c
4.其他类似ro属性还有:
ro.boot.mode
ro.boo