android中,在/目录下,通常会有一个属性文件default.prop,不同于system/build.prop,这个文件修改后重启就会恢复原本的值,因为他是在boot.img中的。
在源码中,他并不是一个已经存在的文件,而是在编译脚本中来生成的。
通常,他里面的这些属性,是控制着一些安全性的,例如可不可以用adb来进行调试。

## ADDITIONAL_DEFAULT_PROPERTIES#ro.secure=1ro.allow.mock.location=0ro.debuggable=0persist.sys.usb.config=mtp

全编脚本中make命令会调用build/core/main.mk,在里面可以看到一段关于debuggable的编译选项,赋值ADDITIONAL_DEFAULT_PROPERTIES;

ifeq (true,$(strip $(enable_target_debugging)))  # Target is more debuggable and adbd is on by default  ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1  # Include the debugging/testing OTA keys in this build.  INCLUDE_TEST_OTA_KEYS := trueelse # !enable_target_debugging  # Target is less debuggable and adbd is off by default  ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0endif # !enable_target_debugging

在build/core/Makefile中会执行post_process_props.py脚本文件,post_process_props.py会根据main.mk中的ro.debuggable指定的值来生成default.prop的persist.sys.usb.config;

# default.propINSTALLED_DEFAULT_PROP_TARGET := $(TARGET_ROOT_OUT)/default.propALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_DEFAULT_PROP_TARGET)ADDITIONAL_DEFAULT_PROPERTIES :=     $(call collapse-pairs, $(ADDITIONAL_DEFAULT_PROPERTIES))ADDITIONAL_DEFAULT_PROPERTIES +=     $(call collapse-pairs, $(PRODUCT_DEFAULT_PROPERTY_OVERRIDES))ADDITIONAL_DEFAULT_PROPERTIES := $(call uniq-pairs-by-first-component,     $(ADDITIONAL_DEFAULT_PROPERTIES),=)$(INSTALLED_DEFAULT_PROP_TARGET):    @echo Target buildinfo: [email protected]    @mkdir -p $(dir [email protected])    $(hide) echo "#" > [email protected];             echo "# ADDITIONAL_DEFAULT_PROPERTIES" >> [email protected];             echo "#" >> [email protected];    $(hide) $(foreach line,$(ADDITIONAL_DEFAULT_PROPERTIES),         echo "$(line)" >> [email protected];)    build/tools/post_process_props.py [email protected]

所以从上面可以看到,这个文件中的内容,都是在编译脚本中根据宏来控制的。

如果是debug版本的话,default.prop会是这样的。

## ADDITIONAL_DEFAULT_PROPERTIES#ro.secure=0ro.allow.mock.location=1ro.debuggable=1persist.sys.usb.config=mtp,adb

从中看到persist.sys.usb.config=mtp,adb。而在init.rc中,我们可以看到这样的注释

#adbd is controlled via property triggers in init.platform.usb.rc
所以去init.platform.usb.rc下可以看到adb服务的自启动条件
on property:sys.usb.config=mass_storage,adb
start adbd
on property:sys.usb.config=mtp,adb
start adbd
on property:sys.usb.config=ptp,adb
start adbd

所以,当default.prop为debug版本中那样,adbd会开机启动,这样,我们就可以使用adb调试了。

更多相关文章

  1. Android(安卓)UI中的style和theme以及AlertDialog
  2. Android应用程序组件Content Provider简要介绍和学习计划
  3. Android中如何在命令行中查看某个文件的内容
  4. Android(安卓)- R资源未找到至java文件报错
  5. Android属性动画上手实现各种动画效果,自定义动画,抛物线等
  6. 2013年01月06日
  7. Android(安卓)Studio SVN版本控制
  8. Android(安卓)主流屏幕以及适配
  9. android项目R文件丢失怎么办

随机推荐

  1. android WARNING: Application does not
  2. Android 关于WebView的相关属性
  3. 解决Eclipse3.6中Android 代码自动补全卡
  4. [Android] Android 使用 Greendao 操作 d
  5. Android(安卓)Sqlite 相关汇总
  6. Android实现自定义的 时间日期 控件
  7. 模仿天天动听的seekbar
  8. Android Studio中点击按钮跳转到其他页面
  9. Android MediaScannerJNI源码详解
  10. Android ViewPager 左右滑动-3