分支和发布

本文介绍了Android开源项目的维护方式及版本控制策略。通过代码行的概念来区分稳定的Android版本与实验性工作,确保了OEM厂商和其他设备制造商可以获取到官方的稳定版本。同时,还涉及到了上游工程的概念以及与之交互的方式。

Android 代码行

Android 开源项目维护一个完成的软件堆义务,被OEM移植和其它设备实施者(译者注:原词:implementors)运行在实际硬件。据此,我们维护一个编号"代码行"来明确的分开当前  Android 稳定版本从不稳定实验工作。

下面的图表描绘在一个 AOSP 管理代码和发布的概念等级。我们是指这些简单的作为"代码行"替代"分支",因为在任何特定时刻,这些可能是多于一个分支现存一个特定"代码行"。具体例子当一个发布是缩减的,一些时候将变成一个新分支在 git,有些时候不是,基于需要的时刻。

code-line diagram

注意和解释

  • 一个发布对应一个 Android 平台的正式版本,例如 1.5,2.1,等等。通常来说,一个平台的发布对应一个 SdkVersion 域用在 AndroidManifest.xml 文件,并且定义在源文件树的frameworks/base/api

  • 一个上游工程是一个开源工程,从 Android 栈拉代码。这些包括明显的工程,例如 Linux 内核和 WebKit,但是随着时间的推移,我们迁移一些半自治 Android 工程(例如 Dalvik,Android SDK 工具,Bionic,等等)工作作为"上游"工程。通常,这些工程是在公共树开发完全。一些上游工程,发展是直接对上游工程自己做贡献。看上游工程细节。在这两种情况下,快照将被定期拉到发布。

  • 图表参考 "Eclair" 和 "FroYo";然而,它们是简单的占位符,并且图表其实反映整体发布和分支战略。

  • 在所有的时间,一个发布代码行(可能其实包括多于 git 中的一个分支)被考虑称为一个特定 Android 平台版本唯一典范源代码。OEM 和其它群体构建设备将拉仅仅从一个发布分支。

  • 我们将设置"实验"代码行捕获改变从社区,所以它们能被迭代,并且对于稳定性的眼光。

  • 证明稳定的改变将终于被拉到一个发布分支。注意浙江仅仅应用到 bug 修复,应用改善,和其它不影响平台 API 的东西。

  • 必要的话,改变将被拉到发布分支从上游工程(包括 Android "上游"工程projects)。

  • 第 "n+1" 版(下一个框架和平台 API 的主要版本)将被开发由 Google 内部。看下面的细节。

  • 必要的话,改变将从上游被拉,发布,和实验分支到 Google 的私有分支。

  • 当下一个版本的平台 API 有稳定和充分测试,Google 将剪去下一个平台版本的发布。(这是特别的,参考一个新 SdkVersion。)这将也对应一个公共发布分支制作的内部代码行,和新的当前平台代码行。

  • 当一个新平台版本被剪去,一个对应实验代码行将被创建在相同时间。

关于私有代码行

以上的源管理战略包括一个 Google 将保持私有的代码行。原因是集中注意在当前 Android 的公共版本。

OEM 和其它设备构建自然想设备搭载最新版本的 Android。同样,应用开发者不想处理更多的现存严格必要的平台版本。与此同时,Google 保留 Android 战略方向的责任作为一个平台和一个产品。我们的途径是基于聚焦在一个小号码的旗舰设备主导特征,和 Android 有关的知非识产权保护的安全保护。

作为一个结果,Google 频繁藏有第三方的机密信息,并且我们必须避免从揭示敏感特征单元,我们已经抵押适当的保护。与此同时,这些是真的风险,这平台产生从有太多平台版本现存在当下。这些原因,我们有构造这个开源计划--包括第三方贡献--聚焦在目前公共稳定版本的 Android。"深度发展"在这平台的下一个版本将发生在私人,直到它已经变成官方发布。

我们承认许多贡献将不同意这个途径。我们尊重其他可能有一个不同看法;然而,这个途径我们感觉是最好的,并且这一个我们已经选择实施。


### 开发分支发布分支的示意图 在 Git 的版本控制中,开发分支(`develop`)通常作为集成所有特性的主分支,用于团队成员协同开发新功能修复缺陷。而发布分支(`release`)则是从开发分支创建出来的临时分支,用于准备发布新版本,通常包括最后的测试、文档更新版本号调整等工作。 以下是一个典型的开发分支发布分支的结构示意图: ``` A---B---C---D---E---F---G develop \ H---I---J release ``` - 每个字母代表一个提交节点,例如 `A` 是初始提交,`G` 是 `develop` 分支的最新提交,而 `J` 是 `release` 分支的最新提交。 - `develop` 分支是持续集成的主分支,所有新功能修复都合并到该分支。 - `release` 分支是从 `develop` 分支的提交 `C` 处创建出来的,用于准备即将发布的版本[^1]。 ### 分支合并后的结构 当 `release` 分支的准备工作完成后,通常会将其合并回 `develop` 分支以及主分支(如 `main` 或 `master`),以确保所有变更都被正确集成并用于正式发布。合并后的结构如下: ``` A---B---C---D---E---F---G---K develop \ / H---I---J---* release ``` - 提交 `K` 是合并提交,表示 `release` 分支的内容已经被合并到 `develop` 分支。 - `*` 表示合并过程中 Git 自动生成的提交节点。 ### 分支操作流程示例 以下是一个典型的 Git 分支操作流程,展示如何创建、切换合并 `release` 分支: ```bash # 查看当前分支 git branch # 创建并切换到 release 分支 git checkout -b release # 在 release 分支上进行提交 git add . git commit -m "Prepare for release" # 切换回 develop 分支 git checkout develop # 合并 release 分支到 develop git merge release ``` ### 版本发布流程 除了合并到 `develop` 分支,通常还需要将 `release` 分支合并到主分支(如 `main`),以确保正式发布的版本被正确记录: ```bash # 切换到主分支 git checkout main # 合并 release 分支到主分支 git merge release ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值