Android(安卓)adbd配置
1、adbd配置:
android中,想要配置开机启动adbd或者adb具有root权限,需在根目录下的default.prop中修改,不同于system/build.prop,这个文件修改后重启就会恢复原本的值。
在源码中,他并不是一个已经存在的文件,而是在编译脚本中来生成的。通常,他里面的这些属性,是控制着一些安全性的。让我们看下这个文件:
## ADDITIONAL_DEFAULT_PROPERTIES#ro.secure=1ro.allow.mock.location=0ro.debuggable=0persist.sys.usb.config=mtp
其中:
(1)ro.secure=0意味着只能用普通用户登录adb,ro.secure=1,这以root用户登录。该值在build/core/main.mk中修改
(2)ro.debuggable在build编译系统中,会根据这个值来生成persist.sys.usb.config。该值在build/core/main.mk中修改
(3)persist.sys.usb.config则会在init.usb.rc中用到,会指定那种属性配置可以启动adbd。
另外,当我们想要配置adb的端口号,可以设置属性service.adb.tcp.port来进行指定
2、default.prop的生成:
全编脚本中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: $@ @mkdir -p $(dir $@) $(hide) echo "#" > $@; echo "# ADDITIONAL_DEFAULT_PROPERTIES" >> $@; echo "#" >> $@; $(hide) $(foreach line,$(ADDITIONAL_DEFAULT_PROPERTIES), echo "$(line)" >> $@;) build/tools/post_process_props.py $@
所以从上面可以看到,这个文件中的内容,都是在编译脚本中根据宏来控制的。
如果是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调试了。
更多相关文章
- ionic build android 结果卡在下载gradle
- Instant Run详解
- Android(安卓)使用shell screencap / screenshot命令截屏
- Android属性动画初步
- Android:可复制内容的TextView、EditText
- android listview 圆角的兑现方案,模仿Iphone的UITableView
- Android(安卓)之 API级别
- Android样式研究
- 【Android源码】Android(安卓)UI 之一步步教你自定义控件