欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 运维知识 > android >内容正文

android

android 获取serialno-凯发k8官方网

发布时间:2024/10/8 android 0 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 android 获取serialno_[android]关于android 唯一设备号(ro.serialno) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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.boot.baseband

ro.boot.bootloader

ro.boot.hardware

static void export_kernel_boot_props(void)

{

char tmp[prop_value_max];

int ret;

unsigned i;

struct {

const char *src_prop;

const char *dest_prop;

const char *def_val;

} prop_map[] = {

{ "ro.boot.serialno", "ro.serialno", "", },

{ "ro.boot.mode", "ro.bootmode", "unknown", },

{ "ro.boot.baseband", "ro.baseband", "unknown", },

{ "ro.boot.bootloader", "ro.bootloader", "unknown", },

};

for (i = 0; i < array_size(prop_map); i ) {

ret = property_get(prop_map[i].src_prop, tmp);

if (ret > 0)

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

else

property_set(prop_map[i].dest_prop, prop_map[i].def_val);

}

ret = property_get("ro.boot.console", tmp);

if (ret)

strlcpy(console, tmp, sizeof(console));

/* save a copy for init's usage during boot */

property_get("ro.bootmode", tmp);

strlcpy(bootmode, tmp, sizeof(bootmode));

/* if this was given on kernel command line, override what we read

* before (e.g. from /proc/cpuinfo), if anything */

ret = property_get("ro.boot.hardware", tmp);

if (ret)

strlcpy(hardware, tmp, sizeof(hardware));

property_set("ro.hardware", hardware);

snprintf(tmp, prop_value_max, "%d", revision);

property_set("ro.revision", tmp);

摘自android kitkat 4.4

总结

以上是凯发k8官方网为你收集整理的android 获取serialno_[android]关于android 唯一设备号(ro.serialno)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

网站地图