溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android怎么實現(xiàn)永久性開啟adb的root權(quán)限

發(fā)布時間:2021-05-07 14:54:47 來源:億速云 閱讀:2902 作者:小新 欄目:移動開發(fā)

小編給大家分享一下Android怎么實現(xiàn)永久性開啟adb的root權(quán)限,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Android是什么

Android是一種基于Linux內(nèi)核的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機和平板電腦,由美國Google公司和開放手機聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。

adb 的root 權(quán)限是在system/core/adb/adb.c 中控制。主要根據(jù)ro.secure 以及 ro.debuggable 等system property 來控制。

默認即檔ro.secure 為0 時,即開啟root 權(quán)限,為1時再根據(jù)ro.debuggable 等選項來確認是否可以用開啟root 權(quán)限。為此如果要永久性開啟adb 的root 權(quán)限,有兩種修改的方式:

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

2. 修改adb.c 中開啟root 權(quán)限的判斷邏輯。

下面詳細說明這兩種修改方式:

第一種方法.

修改system property ro.secure, 讓ro.secure=0。

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

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 權(quán)限, 為此您要修改system/core/adb/Android.mk 中的編譯選項 ALLOW_ADBD_ROOT, 如果沒有打開這個選項,那么adb.c 中將不會根據(jù)ro.secure 去選擇root 還是shell 權(quán)限,直接返回shell 權(quán)限。

因此您必須需要Android.mk 中的第126行:

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

第二種方法.

修改adb.c 中開啟root 權(quán)限的判斷邏輯。這里針對4.1 以后版本 和4.1以前版本有所區(qū)別。

如果是JB 4.1 以后版本,直接修改函數(shù) should_drop_privileges() 函數(shù), 清空這個函數(shù),直接返回 0 即可。返回0 即開啟root 權(quán)限。

[測試與確認]

當修改完成后,只需要重新build bootimage ,然后download 即可,然后到setting 中開啟debug 選項,adb 連接后,會顯示 #, 即root 成功。

補充知識:adb怎么判斷是否有root權(quán)限,并更改system/app內(nèi)容

一、首先判斷root權(quán)限:

adb root
結(jié)果:
C:\signapp>adb root
restarting adbd as root # 說明有root權(quán)限 ,若是adbd cannot run as root in production builds 則說明沒有root權(quán)限

二、更改system/app內(nèi)容

一般情況下system/app都會出現(xiàn)read only,所以需要adb remount(這是一個重新mount你的分區(qū)的命令,讓system分區(qū)從只讀變成可讀可寫,獲得了root權(quán)限才可運行,先執(zhí)行adb root)

在system/app中就可以隨意修改了,但是注意一點,

若想預(yù)置為系統(tǒng)應(yīng)用,則如果只是將apk拷貝到 /system/app目錄下還是不夠的,還需要 777 的權(quán)限,命令:chmod 777 target.apk

總的來說就下面幾個代碼:

adb root
adb remount
adb push target.apk /system/app

adb shell
cd ../system/app
chomd 777 target.apk

reboot

還有些地方可以通過如下命令操作:

 $ adb push SecureSetting.apk /sdcard/ // 上傳要安裝的文件,為安裝做準備。
 $ adb shell $ su // 切換到 root 用戶。如果沒有獲得 Root 權(quán)限,這一步不會成功。
 # mount //顯示當前mount情況
 # mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system // 讓分區(qū)可寫。 
 # cat /sdcard/SecureSetting.apk > /system/app/SecureSetting.apk // 這一步可以用 cp 實現(xiàn),但一般設(shè)備中沒有包含該命令。如果使用 mv 會出現(xiàn)錯誤:failed on '/sdcard/NetWork.apk' - Cross-device link。 
 chmod 777 chetou.apk
 # mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system // 還原分區(qū)屬性,只讀。 
 # exit $ exit

以上是“Android怎么實現(xiàn)永久性開啟adb的root權(quán)限”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI