本文檔包含 Android 開源平台 (AOSP) 的一般問題的解答。
開源問題
谷歌為何開放Android原始碼?
Google 啟動 AOSP 是為了回應我們自己推出行動應用程式的經驗。我們希望確保始終有一個開放平台可供營運商、原始設備製造商和開發人員使用,以將他們的創新想法變為現實。我們也希望避免任何中心故障點,因此任何一個行業參與者都無法限製或控制任何其他參與者的創新。我們 AOSP 的一個最重要的目標是確保開源 Android 軟體盡可能廣泛且相容地實施,以造福每個人。
Android 是什麼樣的開源專案?
Google 負責監督核心 AOSP 的開發,並致力於創建強大的開發者和使用者社群。大多數情況下,Android 原始碼是根據寬鬆的 Apache License 2.0 獲得許可的,而不是Copyleft許可證。我們選擇 Apache 2.0 授權是因為我們相信它可以鼓勵 Android 軟體的廣泛採用。有關詳細信息,請參閱許可證。
為什麼谷歌負責Android?
啟動軟體平台很複雜。開放性對於平台的長期成功至關重要,因為開放性可以吸引開發者的投資並確保公平的競爭環境。該平台還必須是對用戶有吸引力的產品。
Google 投入了必要的專業工程資源,以確保 Android 成為一個具有充分競爭力的軟體平台。谷歌將 Android 專案視為一項全面的產品開發業務,並達成必要的商業交易,以確保運行 Android 的出色設備進入市場。
透過確保 Android 在用戶中取得成功,我們協助確保 Android 作為平台和開源專案的活力。畢竟,誰想要不成功產品的原始碼呢?
我們的目標是確保圍繞 Android 建立一個成功的生態系統。我們開放了 Android 原始碼,以便任何人都可以修改和分發該軟體以滿足自己的需求。
Google 對於 Android 產品開發的整體策略是什麼?
我們向競爭激烈的市場推出出色的設備。然後,我們將我們所做的創新和增強融入核心平台中,作為下一個版本。
實際上,這意味著 Android 工程團隊專注於少數「旗艦」設備,並開發下一版本的 Android 軟體來支援這些產品的發布。這些旗艦設備吸收了大部分產品風險,並為廣大 OEM 社群開闢了道路,他們隨後推出了更多利用新功能的設備。透過這種方式,我們確保 Android 平台根據現實裝置的需求而發展。
Android軟體是如何開發的?
Android 的每個平台版本(例如 1.5 或 8.1)在開源樹中都有相應的分支。最新的分支被認為是目前的穩定分支版本。這是製造商移植到其設備的分支。該分支始終保持適合發布。
同時,還有一個目前的實驗分支,它是開發推測性貢獻的地方,例如大型下一代功能。錯誤修復和其他貢獻可以酌情包含在實驗分支的當前穩定分支中。
最後,Google在開發旗艦設備的同時,也正在開發下一版本的 Android 平台。該分支適當地從實驗分支和穩定分支中引入變更。
有關代碼線、分支和版本的詳細信息,請參閱Android 軟體管理。
為什麼 Android 的部分內容是私人開發的?
將設備推向市場通常需要一年以上的時間。當然,設備製造商希望盡可能提供最新的軟體。同時,開發人員不想在編寫應用程式時不斷追蹤平台的新版本。兩個群體都在交付產品和不想落後之間感到緊張。
為了解決這個問題,下一版 Android 的某些部分(包括核心平台 API)是在私有分支中開發的。這些 API 構成了 Android 的下一個版本。我們的目標是在創建平台的下一個版本時將注意力集中在當前穩定版本的 Android 原始程式碼上。這使得開發人員和 OEM 可以使用單一版本,而無需追蹤未完成的未來工作以跟上進度。 Android系統中與應用程式相容性無關的其他部分是開放開發的。我們打算隨著時間的推移將更多這些部分移至開放開發。
原始碼什麼時候發布?
當他們準備好時。發布原始碼是一個相當複雜的過程。 Android 的某些部分是開放開發的,而且原始碼始終可用。其他部分首先在私有樹中開發,當下一個平台版本準備好時發布原始程式碼。
在某些版本中,核心平台 API 已經提前準備好,以便我們可以在裝置發布之前推送原始程式碼以便儘早查看。在其他版本中,這是不可能的。在所有情況下,當我們認為版本穩定且開發過程允許時,我們都會發布平台原始碼。
發布新 Android 版本的原始碼涉及哪些內容?
發布新版本 Android 平台的源代碼是一個重要的過程。首先,該軟體被內建到設備的系統映像中,並通過各種形式的認證,包括針對手機部署地區的政府監管認證。該程式碼還經過了操作員測試。這是過程的一個重要階段,因為它有助於檢測軟體錯誤。
當發布獲得監管機構和運營商批准後,製造商開始批量生產設備,我們開始發布原始程式碼。
在大規模生產的同時,Google團隊開始了幾項準備開源版本的工作。這些工作包括進行最終的 API 變更、更新文件(例如,以反映資格測試期間所做的任何修改)、為新版本準備 SDK 以及啟動平台相容性資訊。
我們的法律團隊進行最終簽署,將程式碼發佈為開源。正如開源貢獻者需要簽署貢獻者授權協議以證明其貢獻的智慧財產權所有權一樣,Google 也必須驗證來源是否已獲準做出貢獻。
從量產開始,軟體發布過程通常需要一個月左右的時間,因此原始碼發布通常大約在設備到達用戶手中的同時進行。
AOSP 與 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 員工,但相同的審批者負責所有提交內容,無論其來源為何。
詳情請參閱提交補丁。