1. 程式人生 > >Android模擬器Root

Android模擬器Root

Android模擬器Root

前言

安卓開發,免不了要用到root許可權檢視data/data/com.xxx.xxx/裡的檔案內容進行操作,雖然android的核心是linux系統,但是在的android中並沒有提供su檔案,所以無法進行linux下的sudo命令。我們需要向root的系統中新增su檔案,同時改變su的許可權。

需要的準備的資料

  1. supersu.apk 手機root後進行授權管理的軟體
  2. supersu.zip 包括su二進位制檔案等
    下載地址http://www.supersu.com/download,頁面中分為APK和ZIP兩個部分,分別對應上面的兩個檔案,如果不想使用GooglePlay下載apk,可以下載History裡的最後一版。本文用的版本為SuperSU V2.79 ,Recovery V2.79 Flashable.zip
    本文所有操作均在Mac OS下執行。

操作步驟

一、進入Android SDK的安裝目錄

Android SDK在我的電腦上目錄為:/Users/[系統使用者名稱]/Library/Android/
開啟terminal進入到安裝目錄的tools目錄

$ cd /Users/[系統使用者名稱]/Library/Android/sdk/tools/

為什麼要進到這個目錄呢?因為下一步要用到的emulator命令在這個目錄裡,這樣方便操作。

二、以可寫方式啟動模擬器

$ emulator -avd Pixel_XL_API_26 -writable-system

注:Pixel_XL_API_26為模擬器名稱,可以先執行$ emulator -list-avds命令獲取所有模擬器名稱列表。
這時候會顯示
emulator: WARNING: System image is writable
說明啟動可寫方式成功,但此時terminal處於等待狀態,無法再進行操作,如果關閉當前terminal,開啟的模擬器也會隨之關閉。所以需要再重新開啟一個terminal進行後續操作。

三、安裝Supersu.apk

進入到剛剛下載的supersu.apk的目錄,然後執行如下命令

$ adb -e install SuperSU-v2.79-20161205182033

如果顯示如下資訊,說明安裝成功。

SuperSU-v2.79-20161205182033.apk: 1 fi.... 184.7 MB/s (6581871 bytes in 0.034s)
	pkg: /data/local/tmp/SuperSU-v2.79-20161205182033.apk
Success

注意:!!!將super.apk 安裝到模擬器後先不要執行此App!!!

四、向系統新增su檔案

將下載好的supersu.zip 檔案解壓,你能看到裡面有很多資料夾中都包含su檔案。我的模擬器模擬器是Androidx86,所以我在x86資料夾下找到su.pie檔案,如果你的android版本是5.1和大於5.1版本的系統使用su.pie比su檔案更合適,可以避免出現一些不必要的問題。
其實用AVD Manager建立的話那個ABI就是的 對應的目錄名稱
另外x86_64就是x64,x86對應的是x86
還有如果資料夾內沒有su.pie,沒必要一定找那個,su也可以的,只不過優先su.pie的意思。
在這裡插入圖片描述
接下來執行如下命令:
首先要確保進入abi對應的su.pie所在目錄
命令的大致意思為:在root狀態下 adb remount 的意思是 重新掛載系統分割槽,使系統分割槽重新可寫,一般情況下system下面的檔案斯不允許只讀的。通過push的方式將su.pie拷貝到/system/xbin/su檔案中

$ adb root
adbd is already running as root
$ adb remount
remount succeeded
$ adb -e push su.pie /system/xbin/su
adb: error: cannot stat 'su.pie': No such file or directory
$ ls
libsupol.so	su		suinit		sukernel	supolicy
$ adb -e push su /system/xbin/su
su: 1 file pushed. 25.3 MB/s (104680 bytes in 0.004s)

看上面的命令是執行在x64的模擬器上,在push su.pie的時候報錯了,不存在這個檔案,所以在x64架構下直接su就可以了。

五、修改su檔案許可權

執行如下命令:

$ adb -e shell
[email protected]_x86_64:/ # su root
[email protected]_x86_64:/ # cd /system/xbin
[email protected]_x86_64:/system/xbin # chmod 06755 su
[email protected]_x86_64:/system/xbin # ls -l

檢視su的許可權如果是下面的結果則表示成功修改許可權:

-rwsr-sr-x root     shell      104680 2008-02-29 10:33 su

六、安裝su二進位制檔案,設定後臺守護程式

# su --install
# su --daemon&

顯示類似如下結果則表示成功

[1] 4323

七、設定SELinux的限制

設定SELinux的限制,主要是關閉SELinux,這個命令的具體執行位置沒有具體的固定,但貌似在最後執行沒有什麼問題

$ setenforce 0

八、安裝Root Explorer

安裝這個軟體後即可進行系統目錄的檔案操作了。軟體請自行搜尋下載。

寫在最後

如果開啟supersu提示錯誤,可能是su檔案不匹配造成的。請嘗試從第一步重新安裝。在初次開啟supersu時,可能提示版本更新,可以直接忽略。選擇new user就行。在開啟root explorer進行系統目錄操作時,會提示root授權,點選grant即可。
還有就是root後無法通過Avd manager進行啟動,需要使用命令列啟動

emulator -avd Pixel_XL_API_26 -writable-system

至此模擬器就成功root。盡情享受吧。