cm13编译中的local manifest写法

来源:互联网 发布:淘宝过了售后期怎么办 编辑:程序博客网 时间:2024/05/22 17:45

转载注明出处:

背景

cm13官方支持小米3W,最近就想自己做rom编译,刷到小米3W上,参考网上的编译教程。
ps:
CyanogenMod的官网www.cyanogenmod.org已经关闭了,新的官网地址为https://www.lineageos.org/

问题

同步完cm-13的代码后,执行

source build/envsetup.shbreakfast cancro

发现报错

buildbot@085008b6fe59:~/android$ breakfast cancroincluding vendor/cm/vendorsetup.shbuild/core/product_config.mk:234: *** Can not locate config makefile for product "cm_cancro".  Stop.Device cancro not found. Attempting to retrieve device repository from CyanogenMod Github (http://github.com/CyanogenMod).Found repository: android_device_xiaomi_cancroDefault revision: cm-13.0Checking branch infoTraceback (most recent call last):  File "build/tools/roomservice.py", line 258, in <module>    result = json.loads(urllib.request.urlopen(githubreq).read().decode())  File "/usr/lib/python2.7/urllib2.py", line 127, in urlopen    return _opener.open(url, data, timeout)  File "/usr/lib/python2.7/urllib2.py", line 410, in open    response = meth(req, response)  File "/usr/lib/python2.7/urllib2.py", line 523, in http_response    'http', request, response, code, msg, hdrs)  File "/usr/lib/python2.7/urllib2.py", line 448, in error    return self._call_chain(*args)  File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain    result = func(*args)  File "/usr/lib/python2.7/urllib2.py", line 531, in http_error_default    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)urllib2.HTTPError: HTTP Error 403: Forbiddenbuild/core/product_config.mk:234: *** Can not locate config makefile for product "cm_cancro".  Stop.** Don't have a product spec for: 'cm_cancro'** Do you have the right repo manifest?

网上编译教程中倒是提到了这里可能报错:

Different maintainers setup their device inheritance rules differently. Some require a vendor directory to be populated before breakfast will even succeed. If you receive an error here about vendor makefiles, then jump down to the next section Extract proprietary blobs. The first portion of breakfast should have succeeded at pulling in the device tree and the extract blobs script should be available. After completing that section, you can rerun breakfast cancro

但是人家也说了,first portion of breakfast should have succeeded at pulling in the device tree,而且下一步的操作Extract proprietary blobs,需要用到device/xiaomi/cancro下的extract-files.sh脚本,我这里执行完breakfast后,并没有看到相应的device/xiaomi/cancro目录。查看另外一个教程,里面提到了一个LocalManifest文件

下载设备相关源码 :
– 步骤作用 : 该步骤下载 小米4 手机的 设备的特定配置 和 内核源码;
– 创建 LocalManifest 文件 : 使用一个可选择的 命令 breakfast 去创建你的 LocalManifest 配置文件;
– 源码定位 : 为了执行该操作, 你需要在 CyanogenMod 的 GitHub 地址 (https://github.com/CyanogenMod) 中找到你的设备源码位置, 并且在你本地的 LocalManifest 中列举出所有的 定义在 cm.dependencies 中的 代码仓库;
– 了解更多命令细节 : 如果你想要知道更多关于 source build/envsetup.sh 命令的细节, 或者简单的了解下 breakfast, brunch, launch 命令, 你可以到 Evsetup Help (https://wiki.cyanogenmod.org/w/Envsetup_help) 页面;

以及另外一篇文章

6.添加小米4C专用源码同步地址
mkdir ~/android/cm13/.repo/local_manifests
gedit ~/android/cm13/.repo/local_manifests/local_manifests.xml

也就是说我应该在.repo的local_manifests路径下创建local_manifests.xml文件,文件的内容是机型对应的源码信息。但是这里的文件内容,即上面所说的cm.dependencies中的代码仓库,应该去哪里找呢?

解决方法

在尝试了各种搜索,却只能找到一些其他机型的local_manifests.xml,最接近的也才是小米4C,并没有自己想要的小米3W的local_manifest.xml文件。
转机出现在搜索cm.dependencies,发现很多工程里有这个文件。再回去看CyanogenMod github中的项目android_device_xiaomi_cancro,里面也有这个文件

[ {   "repository": "android_device_qcom_common",   "target_path": "device/qcom/common" }, {   "repository": "android_kernel_xiaomi_cancro",   "target_path": "kernel/xiaomi/cancro" }]

到这里就清晰了,小米3W的local_manifests.xml应该包含

android_device_xiaomi_cancroandroid_device_qcom_commonandroid_kernel_xiaomi_cancro

三个工程。
最终的文件为:

<?xml version="1.0" encoding="UTF-8"?><manifest>      <project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" revision="cm-13.0" />      <project name="CyanogenMod/android_device_xiaomi_cancro" path="device/xiaomi/cancro" remote="github" revision="cm-13.0" />      <project name="CyanogenMod/android_kernel_xiaomi_cancro" path="kernel/xiaomi/cancro" remote="github" revision="cm-13.0" /></manifest>

参考
【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)
CM13 安卓6.0.1编译教程(以小米4C为例)
How To Build CyanogenMod For Xiaomi Mi 3, Mi 4 (“cancro”)

0 0