Android 如何永久性開啓adb 的root權限

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 權限的判斷邏輯。android

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

第一種方法. 修改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
  • 1
  • 2
  • 3

將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行:ui

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

第二種方法. 修改adb.c 中開啓root 權限的判斷邏輯。這裏針對4.1 之後版本 和4.1之前版本有所區別。google

若是是JB 4.1 之後版本,直接修改函數 should_drop_privileges() 函數, 清空這個函數,直接返回 0 便可。返回0 即開啓root 權限。debug

[測試與確認]
  • 1

當修改完成後,只須要從新build bootimage ,而後download 便可,而後到setting 中開啓debug 選項,adb 鏈接後,會顯示 #, 即root 成功。 
若是貴司沒有拿到adb 的source, 而貴司又須要本身修改adb 的話, 那麼就麻煩貴司提交eService。由我司進一步協助貴司處理。code

[相關FAQ] 
JB 版本後user build + eng bootimage 沒法開機 
如何打開user debug選項 
JB 4.2 user 版本的開發選項不見了,如何打開adb debug開發

相關文章
相關標籤/搜索