Excel中如何计算字符串的长度(excel求字符串长度)
1418
2022-05-29
理解概念
1、基本描述
系统属性可以简单的理解为系统层级的全局变量,以key-value的形式保存, key-value 都是字符串。这些属性可能是有些资源的使用状态,进程的执行状态,系统的特有属性等。
2、命名规则
几种特殊前缀的属性
ro :只读属性,不能修改。
persist :修改属性后,重启依然有效。数据会保存到 /data/property 目录。其他前缀的属性被设置后,只是保存在内在中而已,并没有保存到磁盘,所以重启后就恢复默认值了。
ctrl :用来启动和停止服务。每一项服务必须在 init.rc 中定义。init 一旦收到设置 ctrl.start 属性的请求,属性服务将使用该属性值作为服务名找到该服务,启动该服务。这项服务的启动结果将会放入 init.svc.<服务名> 属性中。
3、读写方法
在 Android 系统中有一个 Property Service 服务, 这个服务对外提供了两个接口:
SystemProperties.get(String key, String def) # 读取系统属性 SystemProperties.set(String key, String val) # 设置系统属性
1
2
有两个命令行对这两个接口进行了封装,我们可以直接在adb shell 中输入:
getprop key # 读取系统属性 setprop key val # 设置系统属性
1
2
4、组织结构
系统启动的时候会从几个配置文件中加载属性的默认值,大概有以下几个文件, 在不同Android版本系统上可能不一样:
/default.prop 或者是 /prop.default, /vendor/default.prop /system/build.prop /vendor/build.prop /data/local.prop /data/property/*
1
2
3
4
5
6
系统会按先后顺序依次加载以上文件,后加载的属性将覆盖原先的值。
default.prop 的值是通过 build/tools 目录下的 buildinfo.sh 和 vendor_buildinfo.sh 生成的。
源码中添加系统属性定义
在我们之前配置的product中添加自定义属性,在源码根目录device/mi/pure下,对应Build规则在build/make/core/Makefile,编译后输出到out/target/product/pure下,最终随系统启动加载对应的文件。
下面记录了添加属性过程
1、添加到/system/build.prop
hinzer@ubuntu:pure$ pwd /home/hinzer/source/android-10/device/mi/pure hinzer@ubuntu:pure$ cat system.prop ro.pure.version=1.0 # 定义属性 hinzer@ubuntu:pure$ cat BoardConfig.mk include $(SRC_TARGET_DIR)/board/generic_x86_64/BoardConfig.mk TARGET_SYSTEM_PROP += device/mi/pure/system.prop # 添加到 TARGET_SYSTEM_PROP 变量
1
2
3
4
5
6
7
8
2、添加到/vendor/build.prop
hinzer@ubuntu:pure$ pwd /home/hinzer/source/android-10/device/mi/pure hinzer@ubuntu:pure$ cat product01.mk $(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_x86_64.mk) PRODUCT_NAME := product01 # product名(与文件保持一致) PRODUCT_DEVICE := pure # device名,BoardConfig.mk相关 # 配置属性 PRODUCT_PROPERTY_OVERRIDES += \ ro.vendor.pure.name=qiushao \ persist.vendor.pure.name=qiushao \ vendor.pure.name=qiushao
1
2
3
4
5
6
7
8
9
10
11
12
13
14
编译
hinzer@ubuntu:android-10$ source ./build/envsetup.sh hinzer@ubuntu:android-10$ lunch product01-eng hinzer@ubuntu:android-10$ make -j4
1
2
3
验证
1、查看out/target目录
# 验证 `/system/build.prop` hinzer@ubuntu:android-10$ cat out/target/product/pure/system/build.prop | grep ro.pure ro.pure.version=1.0 # 验证 `/vendor/build.prop` hinzer@ubuntu:android-10$ cat out/target/product/pure/vendor/build.prop | grep pure.name ro.vendor.pure.name=qiushao persist.vendor.pure.name=qiushao vendor.pure.name=qiushao
1
2
3
4
5
6
7
8
9
2、启动虚拟机系统查看属性
hinzer@ubuntu:android-10$ emulator hinzer@ubuntu:android-10$ adb devices List of devices attached emulator-5554 device hinzer@ubuntu:android-10$ adb reboot # 重启一下,重置系统属性 hinzer@ubuntu:android-10$ adb shell getprop ro.pure.version 1.0 hinzer@ubuntu:android-10$ adb shell getprop ro.vendor.pure.name qiushao hinzer@ubuntu:android-10$ adb shell getprop persist.vendor.pure.name qiushao # 只读属性不可改 hinzer@ubuntu:android-10$ adb shell getprop ro.vendor.pure.name qiushao hinzer@ubuntu:android-10$ adb shell setprop ro.vendor.pure.name hinzer setprop: failed to set property 'ro.vendor.pure.name' to 'hinzer' # 修改属性,重启后恢复原属性值 hinzer@ubuntu:android-10$ adb shell setprop persist.vendor.pure.name hinzer hinzer@ubuntu:android-10$ adb shell getprop persist.vendor.pure.name hinzer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
参考资料
Android系统开发入门-3.添加系统属性
Android
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。