首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建一个特定版本的cyanogenmod (即9.0.0-galaxys2 ys2)

构建一个特定版本的cyanogenmod (即9.0.0-galaxys2 ys2)
EN

Stack Overflow用户
提问于 2014-08-25 11:28:29
回答 1查看 2.1K关注 0票数 3

我想为三星星系s2建造cyanogenmod 9.0.0。我读过i9100并成功地编译了这些东西。但已经建成的是厘米-11,而我需要9.0.0。(我正在搜索另一个人编写的代码中的一个bug,我需要这个版本来了解正在发生的事情。)

命令

代码语言:javascript
复制
$ repo init -u git://github.com/CyanogenMod/android.git -b cm-9.0.0

中断与

代码语言:javascript
复制
error: in `init -u git://github.com/CyanogenMod/android.git --repo-url=https://gerrit.googlesource.com/git-repo --repo-branch=stable`: revision refs/heads/master in manifests not found

但是help说-b指定了清单分支或修订,所以除非描述有误导性,否则应该可以使用最新的清单,然后再签出必要的版本。

所以我用命令

代码语言:javascript
复制
$ repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0

但现在我明白了:

代码语言:javascript
复制
$ repo branch
   (no branches)
$ repo branches
   (no branches)

作为比较,在构建cm-11的目录中,我还得到了(no branches)

https://stackoverflow.com/a/10820464/755804中,我读到我应该使用特定于所讨论的构建的清单文件,但是如何获得它呢?(该文件列出了回购树中每个git存储库的修订版;手动获取此列表将是一项令人生厌的任务,应该有一个脚本能够这样做。或者,重复每个构建的文件可能存储在某个地方,我只是不知道在哪里?)

因此:我如何检查一个特定的修订的氰源?(特别是cm-9.0.0-银河系统2?)

更新

找到repo help forall --在每个项目中运行一个shell命令。但是 repo forall -c 'git branch'为每个项目显示了一个(no branch)。UPD:因为它应该是repo forall -c git branch -a,但是显示的分支集将取决于传递给repo init-b键的参数。

更新2

下面的答案显示了如何签出源。下一步是运行breakfast i9100 (多么愚蠢的非描述性名称!)不幸的是,它不能工作,因为在过去的某个时刻,github开始需要应用程序身份验证(对于breakfast来说,没有引用是不够的)。因此,github访问策略的改变破坏了版本控制脚本,实际上已经将提交历史变成无用的旧垃圾:无法重建旧版本。我想说,这是版本控制系统的一个巨大的失败:结果是,版本控制系统无法用压缩的源树副本来替换目录。(子项目的数量和使用第三方脚本来管理它们是导致失败的关键因素。)

EN

回答 1

Stack Overflow用户

发布于 2014-08-26 10:18:49

我不确定您是否能够构建它,但这是您至少可以检索9.0.0源代码的方法。

首先,你需要

代码语言:javascript
复制
repo init -u git://github.com/CyanogenMod/android.git -b cm-9.0.0
repo sync

你会得到一个错误信息,比如

代码语言:javascript
复制
Syncing work tree:  58% (144/248)  error: in `sync`: revision refs/heads/cm-9.0.0 in CyanogenMod/android_frameworks_base not found

我必须指出,如果是cm-9.1.0,这将是成功的。

现在,让我们修正出现的错误:

对于每个错误,如下所示

代码语言:javascript
复制
error: in `sync`: revision refs/heads/cm-9.0.0 in CyanogenMod/android_packages_apps_Settings not found

do

  1. 链接.repo/manifest.xml指向.repo/manifests/default.xml
  2. 在该文件中找到"android_packages_apps_Settings“,类似于:<project path="packages/apps/Settings" name="CyanogenMod/android_packages_apps_Settings"/>
  3. 如果添加revision="cm-9.1.0",那么它将看起来像<project path="packages/apps/Settings" name="CyanogenMod/android_packages_apps_Settings" revision="cm-9.1.0"/>
  4. 手动删除指定为路径的目录,即本例中的packages/apps/Settings
  5. 再次运行repo sync

--您将得到9.0.0和9.1.0的混合源代码;在大多数情况下,它将是9.0.0.

现在,cd vendor/cm; ./get-prebuilts将失败,但因为它说

代码语言:javascript
复制
# Get Android Terminal Emulator (we use a prebuilt so it can update from the Market)

使用cm-11中的./get-prebuilts是可以的,这是成功的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25484914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档