java生产日期_在Settings关于设备中添加一项 生产日期

在Settings关于装备中添加1项 生产日期

要求在初始化的时候有个默许值

可以从nvramGent中读取

Setting中的布局文件

在 packages/apps/Settings/res/xml/device_info_settings.xml中添加

style="?android:preferenceInformationStyle" android:title="@string/product_date"

android:summary="@string/device_info_default" />

在Strings.xml中定义

Production date

同时也需要提供中文的标示

写好了布局文件以后,在DeviceInfoSettings.java 中,定义1个 string,

public class DeviceInfoSettings extends SettingsPreferenceFragment implements Indexable {

...

private static final String KEY_PRODUCT_DATE="product_date";

在Oncreate中 设置summary

findPreference(KEY_PRODUCT_DATE).setSummary(Build.ProductDate);

此时,使用的是Build的1个属性来给我们需要的生产日期做赋值。

Build中添加1个属性

在frameworks/base/core/java/android/os/Build.java中

添加1个

public static final String ProductDate=SystemProperties.get("persist.sys.pdate");

这里使用的是1个系统的属性系统,定义的是persist.sys.pdate 这么1个变量

这个变量是如何被赋值?

以persist开头的属性,可以进行动态的改变。 为了到达系统开启的时候,就可以对其赋值,

现在类比系统中bootloader的版本号的方式进行赋值

属性的赋值

android系统的第1个进程是 init的进程,

在inint进程中,现在重点关注 bootloader版本赋值的进程。

在 system/core/init/init.c中可以通过搜索得到

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",

现在可以在后边添加这样的方式,来实现在init进程中就设定了生产日期

{ "ro.boot.productdate", "persist.sys.pdate", "20170111", }

init.c粗略分析

函数的调用进程

main

process_kernel_cmdline

export_kernel_boot_props

这里 main又是谁调用的呢?

在这个目录下。可以找到Android.mk

LOCAL_SRC_FILES:= \

builtins.c \

init.c \

LOCAL_MODULE:= init

这个目录下的会生成1个 init的module

这个module在 init.rc中进行指定

system/core/rootdir/init.rc

on init

sysclktz 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值