知名第三方Recovery TWRP與OmniROM合作,將其最新的代碼託管到OmniROM的倉庫中(https://github.com/omnirom/android_bootable_recovery)。不過默認情況下,使用repo init
初始化OmniROM manifest的時候,TWRP並未被包含進去,實際下載到的bootable/recovery
是AOSP的版本。
一種解決思路是手動git clone
TWRP的源碼,不過由於它未被包含進manifest中,因此下次運行repo sync
時,它所在的目錄會被覆蓋,得不償失。
正確的辦法是,更改OmniROM的manifest文件,在其中包含TWRP。
假設當前目錄在OmniROM源碼的根目錄下。
第一步:刪除AOSP的Recovery所對應的manifest項目
打開.repo/manifest.xml
(爲.repo/manifests/default.xml
的符號鏈接),刪除或註釋掉這一行:
<project path="bootable/recovery" name="platform/bootable/recovery" groups="pdk" />
第二步:在OmniROM的manifest中加入TWRP的manifest項目
TWRP包含以下項目:
- 本體:https://github.com/omnirom/android_bootable_recovery
- Busybox:https://github.com/omnirom/android_external_busybox
其中,TWRP的使用和運行離不開Busybox,一方面是shell和常用的工具都由它提供,而另一方面TWRP的一些庫也依賴它。
打開.repo/manifests/omni-default.xml
,在<manifest>
節的尾部添加:
<!-- AnClark ADDED: Omni TWRP repositories -->
<project name="android_bootable_recovery" path="bootable/recovery" remote="omnirom" revision="android-8.1" />
<project name="android_external_busybox" path="external/busybox" remote="omnirom" revision="android-8.1" />
第三步:重新同步
回到源碼根目錄,重新同步源碼:
repo sync --force-sync -f -j4
參數中加上--force-sync
,要求repo強制同步,將產生同步衝突等問題的項目強行覆蓋掉;-f
表示連接有問題也繼續同步;-j4
表示一次開啓4個線程(根據處理器和網絡狀況而定)。
稍等片刻,TWRP的源碼就會同步到相應的目錄中,完成之後即可開始編譯了。