Android 实现永久性开启adb 的root权限
adb的root权限是在system/core/adb/adb.c中控制。主要根据ro.secure以及ro.debuggable等systemproperty来控制。
默认即档ro.secure为0时,即开启root权限,为1时再根据ro.debuggable等选项来确认是否可以用开启root权限。为此如果要永久性开启adb的root权限,有两种修改的方式:
1.修改systempropertyro.secure,让ro.secure=0。
2.修改adb.c中开启root权限的判断逻辑。
下面详细说明这两种修改方式:
第一种方法.
修改systempropertyro.secure,让ro.secure=0。
(1)修改alps/build/core/main.mk
ifneq(,$(user_variant)) #Targetissecureinuserbuilds. ADDITIONAL_DEFAULT_PROPERTIES+=ro.secure=1
将
ADDITIONAL_DEFAULT_PROPERTIES+=ro.secure=1
改成
ADDITIONAL_DEFAULT_PROPERTIES+=ro.secure=0
(2)在androidJB版本(4.1)以后,google从编译上直接去除了adbd的user版本root权限,为此您要修改system/core/adb/Android.mk中的编译选项ALLOW_ADBD_ROOT,如果没有打开这个选项,那么adb.c中将不会根据ro.secure去选择root还是shell权限,直接返回shell权限。
因此您必须需要Android.mk中的第126行:
ifneq(,$(filteruserdebugeng,$(TARGET_BUILD_VARIANT))) ===> ifneq(,$(filteruserdebugusereng,$(TARGET_BUILD_VARIANT)))
第二种方法.
修改adb.c中开启root权限的判断逻辑。这里针对4.1以后版本和4.1以前版本有所区别。
如果是JB4.1以后版本,直接修改函数should_drop_privileges()函数,清空这个函数,直接返回0即可。返回0即开启root权限。
[测试与确认]
当修改完成后,只需要重新buildbootimage,然后download即可,然后到setting中开启debug选项,adb连接后,会显示#,即root成功。
补充知识:adb怎么判断是否有root权限,并更改system/app内容
一、首先判断root权限:
adbroot
结果:
C:\signapp>adbroot
restartingadbdasroot#说明有root权限,若是adbdcannotrunasrootinproductionbuilds则说明没有root权限
二、更改system/app内容
一般情况下system/app都会出现readonly,所以需要adbremount(这是一个重新mount你的分区的命令,让system分区从只读变成可读可写,获得了root权限才可运行,先执行adbroot)
在system/app中就可以随意修改了,但是注意一点,
若想预置为系统应用,则如果只是将apk拷贝到/system/app目录下还是不够的,还需要777的权限,命令:chmod777target.apk
总的来说就下面几个代码:
adbroot
adbremount
adbpushtarget.apk/system/appadbshell
cd../system/app
chomd777target.apkreboot
还有些地方可以通过如下命令操作:
$adbpushSecureSetting.apk/sdcard///上传要安装的文件,为安装做准备。 $adbshell$su//切换到root用户。如果没有获得Root权限,这一步不会成功。 #mount//显示当前mount情况 #mount-oremount,rw-tyaffs2/dev/block/mtdblock3/system//让分区可写。 #cat/sdcard/SecureSetting.apk>/system/app/SecureSetting.apk//这一步可以用cp实现,但一般设备中没有包含该命令。如果使用mv会出现错误:failedon'/sdcard/NetWork.apk'-Cross-devicelink。 chmod777chetou.apk #mount-oremount,ro-tyaffs2/dev/block/mtdblock3/system//还原分区属性,只读。 #exit$exit
以上这篇Android实现永久性开启adb的root权限就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。