• Android 如何永久性开启adb 的root权限【转】


    本文转载自:https://www.2cto.com/kf/201702/593999.html

    adb 的root 权限是在system/core/adb/adb.c 中控制。主要根据ro.secure 以及 ro.debuggable 等system property 来控制。

    默认即档ro.secure 为0 时,即开启root 权限,为1时再根据ro.debuggable 等选项来确认是否可以用开启root 权限。为此如果要永久性开启adb 的root 权限,有两种修改的方式:

    1. 修改system property ro.secure, 让ro.secure=0。

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

    ?

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

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

    (1)修改alps/build/core/main.mk

    1
    2
    3
    ifneq (,$(user_variant))
      # Target is secure in user builds.
      ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1

    将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 权限。
    因此您必须需要Android.mk 中的第126行:

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

    第二种方法. 修改adb.c 中开启root 权限的判断逻辑。这里针对4.1 以后版本 和4.1以前版本有所区别。

    如果是JB 4.1 以后版本,直接修改函数 should_drop_privileges() 函数, 清空这个函数,直接返回 0 即可。返回0 即开启root 权限。

    1
    2
    <code>[测试与确认]
    </code>

    当修改完成后,只需要重新build bootimage ,然后download 即可,然后到setting 中开启debug 选项,adb 连接后,会显示 #, 即root 成功。
    如果贵司没有拿到adb 的source, 而贵司又需要自己修改adb 的话, 那么就麻烦贵司提交eService。由我司进一步协助贵司处理。

    [相关FAQ]
    JB 版本后user build + eng bootimage 无法开机
    如何打开user debug选项
    JB 4.2 user 版本的开发选项不见了,如何打开adb debug

  • 相关阅读:
    Tomcat基于MSM+Memcached实现Session共享
    Zabbix简介及安装
    redis简介
    Ansible详解(二)
    Ansible详解(一)
    WAMP3.1.10/Apache 设置站点根目录
    最长回文子串--轻松理解Manacher算法
    一篇文章彻底了解Java垃圾收集(GC)机制
    java内存模型详解
    Java中23种设计模式--超快速入门及举例代码
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/8430090.html
Copyright © 2020-2023  润新知