編輯:關於Android編程
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
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行:
ifneq (,(filteruserdebugeng,(TARGET_BUILD_VARIANT)))
===> ifneq (,(filteruserdebugusereng,(TARGET_BUILD_VARIANT)))
第二種方法. 修改adb.c 中開啟root 權限的判斷邏輯。這裡針對4.1 以後版本 和4.1以前版本有所區別。
如果是JB 4.1 以後版本,直接修改函數 should_drop_privileges() 函數, 清空這個函數,直接返回 0 即可。返回0 即開啟root 權限。
[測試與確認]
當修改完成後,只需要重新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
在同組項目進行共享時,容易把本地的配置文件比如*.iml等文件上傳至共享服務器,這樣會對隊友造成巨大的麻煩,為了解決這個問題,可以使用下面方法解決,下面以上傳到服務器的a
1. 第一種,使用 TabHost + ViewPager 實現該方法會有一個Bug,當設置tabHost.setCurrentTab()為0時,ViewPager不顯示
相信大家在android開發的過程中總會遇到要在Activity中間傳遞數據的情況,當然,遇到需要在Intent中傳遞對象的情況也不可避免,所以我就so了一下相關的知識,
自定義圓形ImageView圓形ImageView在頭像顯示用的比較普遍了,今天對於實現圓形ImageView做個總結;主要思路是 重寫 onDraw() ;方法有兩個: