Android? user版本启动ADB,并设置root权限
遇到的问题:
user版本莫名重启(调查发现是发生了kernel panic),由于没有Log,无法直接调查。
调查思路:
1.通过修改kernel config,将SERIAL_CONFIG设置成y打开log,但是如果是由于时序引起的重启,打开log之后问题可能不会再现 2.由于重启时,Android会将rawdump存起来,可以通过导出rawdump文件解析出当时的log
导出工具:
ADB,但是adb pull需要root权限,user版本默认是关闭的
修改方法:
1.android/build/make/core/main.mk
默认打开adb,不认证,设置root权限:
@@ -263,11 +263,11 @@ enable_target_debugging := true
tags_to_install :=
ifneq (,$(user_variant))
# Target is secure in user builds.
- ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1
+ ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0
ADDITIONAL_DEFAULT_PROPERTIES += security.perf_harden=1
ifeq ($(user_variant),user)
- ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=1
+ ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=0
endif
ifeq ($(user_variant),userdebug)
@@ -275,7 +275,7 @@ ifneq (,$(user_variant))
tags_to_install += debug
else
# Disable debugging in plain user builds.
- enable_target_debugging :=
+ #enable_target_debugging :=
endif
# Disallow mock locations by default for user builds
@@ -297,7 +297,7 @@ ifeq (true,$(strip.$(enable_target_debugging)))
ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.lockprof.thershold=500
else # !enable_target_debugging
#Target is less debuggable and adbd is off by default
- ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0
+ ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1
endif # !enable_target_debugging
2.可能需要修改devices/common中其他的ro.secure=0
(因为刚开始调查的时候不知道是否有影响,所以都进行了修改) grep -snR ro.secure
3.android/system/core/init/selinux.cpp
修改selinx权限,默认返回permissive:
@@ -104,6 +04,7 @@ EnforcingStatus StatusFromCmdline() {
}
bool IsEnforcing() {
+ return false;
if(ALLOW_PERMISSIVE_SELINUX) {
return StatusFromCmdline() == SELINUX_ENFORCING;
}
至此,user版本就可以直接使用adb的root权限进行操作了。
解析rawdump:
adb pull /dev/block/by-name/rawdump python minidump.py -s rawdump result/ python minidump.py -d result/md_KLOGBUF.BIN 解析出dmesg.txt
|