#测试需要用user版本,性能相关调试也需要user版本,但user版本默认没有root和remount,影响调试效率#
一、开启user版本adb及adb root
build/core/main.mk
# 修改点1
# 此属性主要影响开启adb是否需要弹窗点授权
ifeq ($(user_variant),user)
- ADDITIONAL_SYSTEM_PROPERTIES += ro.adb.secure=1
+ ADDITIONAL_SYSTEM_PROPERTIES += ro.adb.secure=0
endif
# 修改点2
# 此属性主要影响是否允许adb root,另外还会默认将USB配置上adb功能
else # !enable_target_debugging
# Target is less debuggable and adbd is off by default
- ADDITIONAL_SYSTEM_PROPERTIES += ro.debuggable=0
+ ADDITIONAL_SYSTEM_PROPERTIES += ro.debuggable=1
endif # !enable_target_debugging
# 修改点3
# 影响adb 等debug工具是否参与编译打包进super.img 这会导致打包进一些额外的工具
# Disable debugging in plain user builds.
- enable_target_debugging :=
+ enable_target_debugging := true
另外如果需要无需执行adb root,默认就是root,可以将ro.secure改为1
# 可选修改
# 修改点,不判断debugable 和 secure直接返回false
packages/modules/adb/daemon/main.cpp
@@ -74,6 +74,7 @@ static bool should_drop_privileges() {
//
// ro.secure:
// Drop privileges by default. Set to 1 on userdebug and user builds.
+ return false;
二、开启adb remount
packages/modules/adb/Android.bp
# 修改点1,让原本只有debug版本才编译进去的remount默认就参与编译
phony {
name: "adbd_system_api",
required: [
"libadbd_auth",
...
"reboot",
+ "remount",
],
product_variables:[
debuggable:{
required: [
"remount",
],
},
}
system/core/fs_mgr/Android.bp
# 修改点
# 允许disable verify
# 将文件中几处VERITY=0改为1
cppflags: [
- "-DALLOW_ADBD_DISABLE_VERITY=0",
+ "-DALLOW_ADBD_DISABLE_VERITY=1",
],
总结:新Android user版本开启root和remount修改的地方和老版本差异很大,特别是adb由原来的一个二进制文件变为了一个package,代码路径也发生了变化,但核心原理没有变化。另外平台差异、系统版本差异,修改会略有不同。