基于LineageOS源码构建Android-x86:复用现有源码的方法问询
我之前也遇到过类似的大体积源码复用问题,结合你的场景,下面是经过验证的解决方案,能帮你避免重新下载70GiB的重复内容:
1. 先备份原有LineageOS的Manifest配置
为了不破坏原有的LineageOS构建环境,第一步先把当前的manifest设置备份下来:
cd .repo/manifests git checkout -b lineage-15.1-backup cd ../..
之后如果需要回到LineageOS构建,只要切换这个备份分支就行。
2. 解决Repo初始化报错问题
你遇到的remote github not defined错误,是因为Android-x86的oreo-x86 manifest引用了github这个远程仓库,但原LineageOS的manifest配置里没有定义它。可以通过以下两种方式解决:
方式一:强制初始化并跳过验证
直接执行带--no-repo-verify参数的初始化命令,跳过配置验证:
repo init -u git://git.osdn.net/gitroot/android-x86/manifest -b oreo-x86 --no-repo-verify
方式二:手动添加缺失的Remote配置
如果方式一还是报错,就手动编辑.repo/config文件,添加github远程仓库的定义:
<remote name="github" fetch="https://github.com/" review="review.lineageos.org" />
添加后再重新执行Android-x86的repo初始化命令。
3. 同步源码(自动复用现有文件)
执行同步命令时,Repo会自动识别已有的相同文件,只下载Android-x86特有的补丁和差异内容:
repo sync -j$(nproc)
因为两个分支都基于Android Oreo(8.1),大部分核心源码完全一致,这一步只会下载少量差异文件,节省大量时间和空间。
4. 切换回LineageOS构建环境(可选)
之后如果需要回到原LineageOS项目,只要切换回备份的manifest分支再同步即可:
cd .repo/manifests git checkout lineage-15.1-backup cd ../.. repo sync -j$(nproc)
错误原因说明
原LineageOS的manifest配置里没有定义github这个远程仓库,但Android-x86的oreo-x86分支manifest需要通过这个remote拉取部分依赖仓库,直接初始化时Repo无法找到对应配置就会报错,添加remote或跳过验证就能解决这个问题。
内容的提问来源于stack exchange,提问作者Marc Ranolfi

