2024年4月18日发(作者:)

[Description]

如何永久性开启adb 的root权限

[Keyword]

user debug root adb adbd

[Solution]

* adb 的root 权限是在system/core/adb/adb.c 中控制。主要根据 以

及 able 等system property 来控制。

默认即档 为0 时,即开启root 权限,为1时再根据able 等

选项来确认是否可以用开启root 权限。为此如果要永久性开启adb 的root 权限,有两

种修改的方式:

1. 修改system property , 让=0。

2. 修改adb.c 中开启root 权限的判断逻辑。

* 在L 版本上adb 会受到SELinux 的影响, 所以需要调整SELinux policy 设置.

下面详细说明这两种修改方式:

第一种方法. 修改system property , 让=0。

(1)修改alps/build/core/

ifneq (,$(user_variant))

# Target is secure in user builds.

ADDITIONAL_DEFAULT_PROPERTIES += =1

将ADDITIONAL_DEFAULT_PROPERTIES += =1 改成

ADDITIONAL_DEFAULT_PROPERTIES += =0 即可。

(2)在android JB 版本(4.1) 以后,google 从编译上直接去除了adbd 的user 版本

root 权限, 为此您要修改system/core/adb/ 中的编译选项

ALLOW_ADBD_ROOT, 如果没有打开这个选项,那么adb.c 中将不会根据 去

选择root 还是shell 权限,直接返回shell 权限。因此您必须需要 中的第

126行:

ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))

===> ifneq (,$(filter userdebug user eng,$(TARGET_BUILD_VARIANT)))

(3)在android L (5.0) 以后, google 默认开启SELinux enforce mode, 需要在user

build 上将su label 默认build 进SEPolicy.

放开SELinux 的限制. 更新alps/external/sepolicy/ 116 行, 将su

label 默认编译进入sepolicy.