從Android 6.0開始,Root變得沒有以前那么容易了。6.0之前,對於以前的手機,Root其實很簡單,只需要官方解鎖,刷入第三方Recovery(如TWRP Recovery),然后通過Recovery刷入SuperSU包即可。
然而,到了6.0,如果還是這么做,手機會卡第一屏。這是由於Google對Android 6.0修改了新的安全機制導致的。解決卡屏的方法,SuperSU的作者已經給出,就是給boot.img里ramdisk下的sepolicy打補丁。
雖然,最新測試版的SuperSU已經試圖加入自動修改sepolicy,但現在還處於早期,可能會存在不穩定因素。而且2.6x的SuperSU不再將su和SuperSU.apk放在/system下,而是轉而放到/data下,這樣會導致一旦wipe data,Root就沒了。
這里提供2.7x版本SuperSU的主帖,想研究的可以去看下:http://bbs.zecoki.com/thread-16496-1-1.html
因此,在SuperSU新版進入正式階段,現在比較好的方法還是SuperSU 2.52配修改版boot.img(即sepolicy打過補丁的boot.img)。
下面就來講下sepolicy的修改方法。
首先提供之后會用到的工具:
adb工具:需要的轉到http://bbs.zecoki.com/thread-16659-1-1.html
你還需要另一台Android手機,系統版本4.4+,且已經使用SuperSU 2.50或更高版本獲取了Root權限。
下面是具體步驟:
1、使用Android Image Kitchen解包想要Root的系統里的boot.img
2、在ramdisk文件夾下獲取sepolicy文件,並將該文件放到adb工具所在文件夾中
3、將已經Root的手機連接電腦,並打開USB調試
4、電腦端運行CMD,並cd到adb所在目錄,執行:
- adb push sepolicy /data/local/tmp/sepolicy
如果提示沒有權限,也可以手動把sepolicy文件拷貝到手機里,然后通過RE管理器等軟件移動到/data/local/tmp/sepolicy或其他路徑,如果在其他路徑,后面執行的命令也需要對應修改
5、繼續執行:
- adb shell su -c "supolicy --file /data/local/tmp/sepolicy /data/local/tmp/sepolicy_out"
- adb shell su -c "chmod 0644 /data/local/tmp/sepolicy_out"
6、再執行:
- adb pull /data/local/tmp/sepolicy_out sepolicy_out
或者去該目錄下將其拷貝出來
7、獲取的sepolicy_out文件即為修改好的sepolicy,將其改名成sepolicy,替換到ramdisk下
8、通過Android Image Kitchen打包boot.img
至此,修改完成。接下來,你只需要將修改好的boot.img和SuperSU 2.52刷入手機即可獲取Root權限了。