gpt4 book ai didi

android - 构建特定版本的 cyanogenmod(即 9.0.0-galaxys2)

转载 作者:太空狗 更新时间:2023-10-29 14:12:46 25 4
gpt4 key购买 nike

我想为三星 galaxy s2 构建 cyanogenmod 9.0.0。我读过http://wiki.cyanogenmod.org/w/Build_for_i9100并成功编译了这些东西。但是建好的是cm-11,而我需要的是9.0.0。 (我正在寻找另一个人编写的代码中的错误,我需要这个版本来了解发生了什么。)

命令

$ repo init -u git://github.com/CyanogenMod/android.git -b cm-9.0.0

打破

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

但是帮助说 -b 指定了 manifest 分支或修订,所以除非描述是误导应该可以使用最新的 list ,然后再检查必要的版本。

所以我用了命令

$ repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0

但现在我得到:

$ repo branch
(no branches)
$ repo branches
(no branches)

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

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

那么:我如何检查 Cyanogenmod 源的特定版本?(特别是 cm-9.0.0-galaxys2?)

更新

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

更新 2

下面的答案显示了如何检查来源。下一步是运行 breakfast i9100(多么愚蠢的非描述性名称!)不幸的是,它不起作用,因为从过去的某个时刻开始,github api 开始需要应用程序身份验证(并且没有 - breakfast 的 auth quote 是不够的)。因此,github 访问策略的更改破坏了版本控制脚本,实际上已将提交历史变成无用的旧垃圾:无法重建旧版本。我会说,这是版本控制系统总体上的一个史诗般的失败:事实证明,版本控制系统无法用源代码树的压缩副本替换目录。 (子项目的数量和使用第 3 方脚本来管理它们是导致失败的关键因素。)

最佳答案

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

首先,你做

repo init -u git://github.com/CyanogenMod/android.git -b cm-9.0.0
repo sync

然后你会收到类似这样的错误信息

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 , 这会成功。

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

对于每一个错误,例如

error: in `sync`: revision refs/heads/cm-9.0.0 in CyanogenMod/android_packages_apps_Settings not found

  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会失败,但因为它说

# Get Android Terminal Emulator (we use a prebuilt so it can update from the Market)

可以用./get-prebuilts来自 cm-11,它将成功。

关于android - 构建特定版本的 cyanogenmod(即 9.0.0-galaxys2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25484914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com