AOSP 常見問題

本文提供有關 Android 開放原始碼平台 (AOSP) 的一般問題解答。

關於 android-latest-release

Why can't I submit to aosp-main?

您無法提交至 aosp-main,因為該分支現在為唯讀。

我應該在哪裡提議變更 AOSP?

您應對 android-latest-release 提出新變更 (使用 Repo 時),或對 android-latest-release 資訊清單中指定的最新發布分支版本提出新變更 (直接使用 Git 時)。其他分支 (例如 aosp-main) 的現有提議變更不需要移動。

我應該同步到哪個分支?

  • 使用 Repo 時,請透過下列指令同步處理至 android-latest-release

    repo init --partial-clone --no-use-superproject -b android-latest-release -u https://android.googlesource.com/platform/manifest
  • 直接使用 Git 時,請同步處理 android-latest-release 資訊清單中指定的預設修訂版本分支。

如要進一步瞭解如何同步處理分支版本,請參閱「初始化 Repo 用戶端」。

android-latest-release 的程式碼會合併到 aosp-main 嗎?

不會,程式碼不會合併至 aosp-main,因為自 2025 年 3 月 27 日起,aosp-main 就是唯讀分支版本。

下一個版本的程式碼會推送至何處?

Google 會將下一個版本的程式碼推送至最新公開發布分支,並更新 android-latest-release 資訊清單,指向該分支。

我的變更要求是否會從 android-latest-release 分支版本挑選到內部 Gerrit?

上傳提議的變更後,Google 會進行審查,如果接受,就會將變更併入內部 Gerrit。

如何得知變更要求是否獲准?

接受並挑選的變更會出現在日後推送至 Android 主機上發布分支的版本中,並可使用 android-latest-release 與 repo 同步。系統不會在建議的變更獲得接受或拒絕時發送通知。

從外部貢獻者提議變更到變更合併至最新發布分支,一般工作流程為何?

  1. 外部貢獻者提議變更 android-latest-release (使用 Repo 時) 或 android-latest-release 資訊清單中指定的最新發布分支版本 (直接使用 Git 時)。

  2. Google 會審查變更。如果變更內容為:

    • 如果接受,Google 會挑選該變更並合併至內部開發分支。

    • 未接受,Google 不會挑選變更。

  3. 外部投稿者在 android-latest-release查看變更

如果我不再需要建議的變更,該怎麼辦?

如果不再需要建議的變更、不希望合併變更,或知道 Google 已審查變更,請放棄變更,這樣變更就會保留在 Android 主機的建議變更記錄中。

開放原始碼問題

Google 為什麼要開放 Android 原始碼?

Google 根據自身推出行動應用程式的經驗,啟動了 AOSP。我們希望確保電信業者、原始設備製造商和開發人員都能使用開放平台,將創新構想付諸實現。我們也希望避免任何單點故障,因此任何單一產業參與者都無法限制或控制其他參與者的創新。我們透過 Android 開放原始碼計畫,最主要的目標是確保開放原始碼 Android 軟體盡可能廣泛且相容地實作,讓所有人都能受益。

Android 是哪種開放原始碼專案?

Google 負責監督核心 AOSP 的開發作業,並致力於建立健全的開發人員和使用者社群。Android 原始碼大多是依據寬鬆的 Apache 2.0 授權,而非著作權保留授權。我們選擇 Apache 2.0 授權,是因為我們相信這有助於推廣 Android 軟體。詳情請參閱「授權」。

為什麼 Google 負責 Android?

推出軟體平台是一項複雜的作業。開放性對平台的長期成功至關重要,因為開放性可吸引開發人員投資,並確保公平競爭。平台也必須是能吸引使用者的產品。

Google 投入了必要的專業工程資源,確保 Android 成為具備充分競爭力的軟體平台。Google 將 Android 專案視為全方位產品開發作業,並達成必要的商業交易,確保搭載 Android 的優質裝置能上市。

確保使用者能順利使用 Android,有助於維持 Android 平台和開放原始碼專案的活力。畢竟,誰想要失敗產品的原始碼?

我們的目標是確保 Android 生態系統蓬勃發展。我們開放 Android 原始碼,讓任何人都能修改及發布軟體,滿足自身需求。

Google 對於 Android 產品開發的整體策略為何?

我們在競爭激烈的市場中推出優質裝置。接著,我們會將這些創新和強化功能納入核心平台,做為下一個版本。

實際上,這表示 Android 工程團隊會專注於少數「旗艦」裝置,並開發下一版 Android 軟體,以支援這些產品的推出。這些旗艦裝置承擔了大部分的產品風險,並為廣大的原始設備製造商 (OEM) 社群開創先河,隨後 OEM 社群也推出更多採用新功能的裝置。確保 Android 平台能因應實際裝置的需求而演進。

Android 軟體是如何開發的?

每個 Android 平台版本 (例如 1.5 或 8.1) 在開放原始碼樹狀結構中都有對應的分支版本。最新分支版本會視為目前的穩定分支版本android-latest-release 資訊清單會指向這個版本。這是製造商移植到裝置的分支版本。這個分支一律適合發布。

最後,Google 會在開發旗艦裝置的同時,著手打造下一代 Android 平台。

為什麼 Android 的部分內容是在私下開發?

將裝置推向市場通常需要一年以上的時間。當然,裝置製造商也希望出貨時搭載最新軟體。同時,開發人員在編寫應用程式時,也不想不斷追蹤平台的新版本。這兩組人員都面臨著要推出產品,但又不想落後的壓力。

為解決這個問題,我們在私人分支中開發了下一版 Android 的部分內容,包括核心平台 API。這些 API 構成 Android 的下一個版本。我們的目標是在建立下一個平台版本時,將注意力集中在目前的 Android 原始碼穩定版。這樣一來,開發人員和原始設備製造商就能使用單一版本,不必為了跟上進度而追蹤未完成的未來工作。

何時會發布原始碼?

他們準備好時。發布原始碼的程序相當複雜。Android 的部分內容 (例如核心) 是以開放形式開發,且原始碼一律公開。其他部分則會先在私有樹狀結構中開發,並在下一個平台版本準備就緒時發布該原始碼。

在某些版本中,核心平台 API 會提早準備就緒,因此我們可以在裝置發布前,先推出原始碼供搶先體驗。其他版本則無法這麼做。在所有情況下,我們都會在認為版本穩定且開發程序允許時,發布平台來源。

發布新版 Android 的原始碼需要哪些作業?

發布新版 Android 平台的原始碼是一項重大程序。首先,軟體會建構到裝置的系統映像檔中,並通過各種形式的認證,包括手機部署區域的政府法規認證。程式碼也會經過運算符測試。這是流程中相當重要的階段,因為有助於偵測軟體錯誤。

當監管機構和營運商核准發布後,製造商就會開始大量生產裝置,我們也會開始發布原始碼。

在大量生產的同時,Google 團隊也開始準備開放原始碼版本。包括完成最終 API 變更、更新文件 (例如反映資格測試期間所做的任何修改)、準備新版本的 SDK,以及發布平台相容性資訊。

我們的法律團隊會進行最終簽核,將程式碼發布到開放原始碼。如同開放原始碼貢獻者必須簽署「貢獻者授權協議」,證明自己擁有貢獻內容的智慧財產權,Google 也必須驗證來源是否已獲得貢獻授權。

從開始量產到軟體發布,通常需要約一個月,因此原始碼發布時間通常與裝置送達使用者手中的時間相近。

Android 開放原始碼計畫與 Android 相容性計畫有何關係?

AOSP 負責維護 Android 軟體,並開發新版本。由於是開放原始碼,這項軟體可用於任何用途,包括開發與其他裝置不相容的裝置 (這些裝置以相同來源為基礎)。

Android 相容性計畫的目的是定義 Android 的基準實作,確保與開發人員編寫的第三方應用程式相容。Android 相容裝置可加入 Android 生態系統,包括 Google Play;不符合相容性規定的裝置則不屬於該生態系統。

換句話說,Android 相容性計畫可協助我們區分 Android 相容裝置,以及僅執行衍生原始碼的裝置。我們歡迎大家使用 Android 原始碼,但如要參與 Android 生態系統,裝置必須通過計畫認證,才能視為 Android 相容裝置。

如何為 Android 貢獻心力?

您可以回報錯誤、為 Android 編寫應用程式,或將原始碼提供給 AOSP。

我們接受的程式碼貢獻類型有限。舉例來說,使用者可能想貢獻替代應用程式 API,例如以 C++ 為基礎的完整環境。我們會拒絕這項貢獻,因為 Android 鼓勵應用程式在 ART 執行階段中執行。同樣地,我們也不會接受與授權目標不相容的貢獻內容,例如 GPL 或 LGPL 程式庫。

如有意貢獻原始碼,請先透過 Android 社群列出的管道與我們聯絡,再開始進行任何工作。詳情請參閱「貢獻」。

如何成為 Android 提交者?

AOSP 實際上沒有提交者的概念。所有貢獻內容 (包括 Google 員工撰寫的內容) 都會經過 Gerrit 這個網路系統,這是 Android 工程程序的一部分。這個系統會與 Git 原始碼管理系統搭配運作,以便妥善管理原始碼貢獻。

指定核准者必須審查並接受所有建議的變更。 核准者通常是 Google 員工,但無論提交內容的來源為何,都由同一批核准者負責。

詳情請參閱「提交修補程式」。