知名第三方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的源码就会同步到相应的目录中,完成之后即可开始编译了。
网友评论