Android build.prop编译以及加载过程分析

1、什么是build prop?

类似windows的环境变量,编译的添加property后,我们可以在android应用层以及native层直接读取获得该键值对(key/value),它非常友好,对于所有程序都是可见的,可以区分流程分支、添加不同功能、android各层直接交互、记录数据、绕开SElinux执行自定义添加的可执行程序等等。

2、build prop来自于何方?

build.prop的生成是make系统解析build/core/Makefile:

--> build/tools/buildinfo.sh执行脚本:

--> $(TARGET_DEVICE_DIR)/system.prop的内容追加到build.prop中

-->收集ADDITIONAL_BUILD_PROPERTIES中的属性,追加到build.prop

     ADDITIONAL_BUILD_PROPERTIES:= \  

                  $(ADDITIONAL_BUILD_PROPERTIES)\  

                                 $(PRODUCT_PROPERTY_OVERRIDES

PS: 我们在system.prop或PRODUCT_PROPERTY_OVERRIDES添加自己定义的prop。

3. build prop要到哪里去?

编译文件生成:out/target/product/<board>/system/目录下

开机运行时: vendor/build.prop目录下

4. build prop如何使用?

1. Java中使用:
    import android.os.SystemProperties;
    SystemProperties.set("persist.sv.debug",”hello_data”);
    java获取属性:
    String vmHeapSize = SystemProperties.get("dalvik.vm.heapgrowthlimit", "24m");

2. Native C/C++中设置属性:
    #include "cutils/properties.h"
    property_set("persist.sv.debug", "hello_data");
    在C中取得属性:
    char encrypted_state[32];
    property_get("persist.sv.debug", encrypted_state, "");  最后一个参数是默认值。
    
3. rc文件中使用property,app直接使用系统属性打开应用,在调试串口直接设置系统属性打开应用。这样的写法也可以绕过selinux
    service testService /vendor/bin/test
	user root
	group root
	seclabel u:r:evs_app:s0
	disabled
	oneshot

    on property:test.up_enable=1
	    start testService 

    on property:test.up_enable=0
	    stop testService 

5. prop suffix:

persist:能实现关机记忆的效果
ro:
只读系统属性
net:标识着网络使用到的系统属性,当设置之后,需要设置net.change属性更新值。
usb
 :设置adb,carplay,usb限制等系统属性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值