栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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//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限制等系统属性

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/572219.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号