您的位置:首页 > 移动开发 > Android开发

recovery user版本adbd具有root权限

2016-11-01 16:22 686 查看
1) 修改build/core/main.mk

ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1
改为  ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0


2) 在android JB 版本(4.1) 以后,google 从编译上直接去除了adbd 的user 版本root 权限, 为此您要修改system/core/adb/Android.mk 中的编译选项ALLOW_ADBD_ROOT, 如果没有打开这个选项,那么adb.c 中将不会根据ro.secure 去选择root 还是shell 权限,直接返回shell 权限。

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 的限制. 修改external/sepolicy/Android.mk, 将su label 默认编译进入sepolicy.

sepolicy_policy.conf := $(intermediates)/policy.conf
$(sepolicy_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
$(sepolicy_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
$(sepolicy_policy.conf) : $(call build_policy, $(sepolicy_build_files))
@mkdir -p $(dir $@)
$(hide) m4 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
-D target_build_variant=$(TARGET_BUILD_VARIANT) \
-D force_permissive_to_unconfined=$(FORCE_PERMISSIVE_TO_UNCONFINED) \
-s $^ > $@
将-D target_build_variant=$(TARGET_BUILD_VARIANT) 改成 -D target_build_variant=eng


recovery的文件系统对应的LOCAL_MODULE为sepolicy.recovery

kernel的文件系统对应的LOCAL_MODULE为sepolicy

可以在build/core/Makefile查看编译规则
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android adbd root