安卓軟件管理

Android 開源項目 (AOSP) 維護一個完整的軟件堆棧,可供 OEM 和其他設備實現者移植並在他們自己的硬件上運行。為了保持 Android 的質量,Google 派遣了全職工程師、產品經理、用戶界面設計師、質量保證測試人員以及將現代設備推向市場所需的所有其他角色。

因此,我們維護了許多代碼行,以清楚地將當前穩定版本的 Android 與不穩定的實驗工作區分開來。我們將 Android 代碼線的開源管理和維護納入更大的產品開發週期。

AOSP 代碼管理

下圖描述了 AOSP 代碼管理和發布背後的概念。

代碼線圖
圖 1. AOSP 代碼和版本
  1. 在任何特定時刻,都有最新版本的 Android 平台。這通常採用樹中分支的形式。
  2. 設備製造商和貢獻者使用當前的最新版本、修復錯誤、啟動新設備、試驗新功能等等。
  3. 與此同時,Google 根據產品的需求和目標,在內部開發下一個版本的 Android 平台和框架。我們通過與旗艦設備上的設備合作夥伴合作開發下一個版本的 Android,該設備的規格被選為將 Android 推向我們認為應該發展的方向。
  4. 當第 n+1 個版本準備就緒時,它會發佈到公共源代碼樹並成為新的最新版本。

條款和注意事項

  • 版本對應於 Android 平台的正式版本,例如 1.5 或 8.1。平台的版本對應於AndroidManifest.xml文件的SdkVersion字段中的版本,並在源代碼樹的frameworks/base/api中定義。
  • 上游項目是 Android 堆棧從中提取代碼的開源項目。除了 Linux 內核和 WebKit 等項目,我們繼續遷移一些半自治的 Android 項目,如 ART、Android SDK 工具和 Bionic 以作為上游項目工作。通常,這些項目完全在公共樹中開發。對於一些上游項目,開發人員直接為上游項目做出貢獻。有關詳細信息,請參閱上游項目。在這兩種情況下,快照都會定期拉入版本中。
  • 在任何時候,發布代碼行(可能包含多個 git 分支)都被認為是給定 Android 平台版本的唯一規范源代碼。 OEM 和其他構建設備的團體應該只從發布分支中提取。
  • 建立實驗代碼線以捕獲來自社區的更改,以便可以在關注穩定性的同時對其進行迭代。
  • 證明穩定的更改最終會被拉入發布分支。這僅適用於不影響平台 API 的錯誤修復、應用程序改進和其他更改。
  • 如有必要,更改會從上游項目(包括 Android 上游項目)拉入發布分支。
  • 第 n+1 版(框架和平台 API 的下一個主要版本)由 Google 內部開發。有關詳細信息,請參閱私有代碼行
  • 如有必要,更改會從上游、發布和實驗分支中提取到 Google 的私有分支中。
  • 當下一個版本的平台 API 穩定並經過全面測試時,Google 會削減下一個平台版本的發布(特別是新的SdkVersion )。這對應於將內部代碼線設為公開發布分支和新的當前平台代碼線。
  • 當一個新的平台版本被砍掉時,會同時創建一個相應的實驗代碼線。

私有代碼行

上面的源代碼管理策略包括谷歌保密的代碼線,以將注意力集中在當前的公共版本的 Android 上。

原始設備製造商和其他設備製造商自然希望提供具有最新版本 Android 的設備。同樣,應用程序開發人員不想處理不必要的平台版本。同時,谷歌保留了安卓作為平台和產品的戰略方向的責任。我們的方法側重於少數旗艦設備來驅動功能,同時確保對 Android 相關知識產權的保護。

因此,Google 經常擁有來自第三方的機密信息,並且必須避免洩露敏感功能,直到獲得適當的保護。此外,如果同時存在太多平台版本,平台也存在真正的風險。出於這些原因,我們構建了開源項目(包括第三方貢獻)以專注於當前公開的穩定版 Android。該平台的下一個版本的深入開發是私下進行的,直到它準備好成為正式版本。

我們認識到許多貢獻者不同意這種方法,我們尊重他們的觀點。但是,這是我們認為最好的方法,也是我們選擇為 Android 實施的方法。