本文檔包含 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 員工,但相同的審批者負責所有提交內容,無論其來源為何。
詳情請參閱提交補丁。
相容性
安卓相容性是什麼?
我們將Android相容設備定義為可以運行第三方開發人員使用Android SDK和NDK編寫的任何應用程式的裝置。我們使用它作為過濾器來區分可以參與 Android 應用生態系統的設備和不能參與的設備。對於正確相容的設備,設備製造商可以尋求批准使用 Android 商標。不相容的裝置源自 Android 原始碼,且不允許使用 Android 商標。
換句話說,相容性是參與Android應用生態系統的先決條件。歡迎任何人使用 Android 原始碼。但如果裝置不相容,則不會被視為 Android 生態系統的一部分。
Google Play 在相容性方面扮演什麼角色?
擁有 Android 相容裝置的裝置製造商可以尋求 Google Play 用戶端軟體的授權。許可設備成為 Android 應用程式生態系統的一部分,使用戶能夠從所有相容設備共享的目錄中下載開發人員的應用程式。不相容的設備無法獲得許可。
Android 可以相容哪些類型的裝置?
Android 軟體可以移植到許多不同的設備,包括一些第三方應用程式無法正常運作的設備。 Android 相容性定義文件 (CDD) 詳細說明了被視為相容的特定裝置配置。
例如,雖然 Android 原始碼可以移植到沒有相機的手機上運行,但 CDD 要求所有手機都配備相機。這使得開發人員在編寫應用程式時可以依賴一組一致的功能。
CDD 不斷發展以反映市場現實。例如,CDD 1.6 版本僅支援手機。但 2.1 版本允許設備省略電話硬件,從而使平板電腦式音樂播放器等非電話設備能夠相容。在進行這些變更的同時,我們還將增強 Google Play,以允許開發者保留對其應用程式可用位置的控制。繼續以電話為例,管理 SMS 文字訊息的應用程式在媒體播放器上沒有用處,因此 Google Play 允許開發人員將該應用程式專門限制為電話裝置。
如果我的裝置相容,它是否會自動存取 Google Play 和品牌?
不。訪問不是自動的。 Google Play 是由 Google 經營的服務。實現相容性是獲得 Google Play 軟體和品牌存取權限的先決條件。裝置被認定為 Android 相容裝置後,裝置製造商應填寫Google 行動服務授權中包含的聯絡表單,以尋求存取 Google Play。如果我們可以幫助您,我們會與您聯繫。
如果我不是製造商,如何取得 Google Play?
Google Play 僅授權給生產設備的手機製造商。有關具體案例的問題,請聯絡android-partnerships@google.com 。
如何存取 Android 版 Google 應用程式(例如地圖)?
適用於 Android 的 Google 應用程式(例如 YouTube、Google 地圖和 Gmail)是 Google 的財產,不屬於 Android 的一部分,需要單獨授權。有關這些應用程式的諮詢,請聯絡android-partnerships@google.com 。
相容性是強制性的嗎?
不需要。Android 相容性計劃是可選的。 Android 原始碼是開放的,因此任何人都可以使用它來建立任何類型的裝置。然而,如果製造商希望在他們的產品中使用 Android 名稱,或者想要存取 Google Play,他們必須先證明他們的裝置是相容的。
相容性認證費用是多少?
獲得設備的 Android 相容性無需任何成本。相容性測試套件是開源的,任何人都可以進行設備測試。
相容需要多長時間?
該過程是自動化的。相容性測試套件會產生一份報告,可提供給 Google 以驗證相容性。最終我們打算提供自助服務工具將這些報告上傳到公共資料庫。
誰確定相容性定義?
Google 負責 Android 作為平台和產品的整體方向,因此 Google 維護每個版本的相容性定義文件 (CDD)。我們與提供意見的各個 OEM 協商後,起草了新 Android 版本的 CDD。
每個 Android 版本對新裝置的支援時間有多長?
Android 的程式碼是開源的,因此我們無法阻止某人使用舊版本來啟動裝置。相反,Google 選擇不授權 Google Play 用戶端軟體在被視為過時的版本上使用。這允許任何人繼續發布舊版本的 Android,但這些設備不會使用 Android 名稱,並且存在於 Android 應用生態系統之外,就像它們不相容一樣。
設備可以具有不同的用戶介面並且仍然兼容嗎?
Android 相容性計劃確定裝置是否可以運行第三方應用程式。裝置隨附的使用者介面元件(例如主螢幕、撥號器和配色方案)通常不會對第三方應用程式產生太大影響。因此,設備製造商可以自由自訂使用者介面。相容性定義文件限制了 OEM 變更影響第三方應用程式區域的系統使用者介面的程度。
新 Android 版本的兼容性定義何時發布?
我們的目標是當相應的 Android 平台版本已經足夠收斂以允許發布新版本的 Android 相容性定義文件 (CDD) 時。雖然我們無法在第一款旗艦設備附帶該軟體之前發布 Android 軟體版本的 CDD 最終草案,但最終的 CDD 總是在第一台設備之後發布。然而,只要可行,我們都會發布 CDD 的草稿版本。
如何驗證設備製造商的兼容性聲明?
Android 裝置相容性沒有驗證過程。但是,如果裝置要包含 Google Play,Google 通常會在同意授予 Google Play 用戶端軟體授權之前驗證裝置的相容性。
如果聲稱相容的設備後來發現有相容性問題,會發生什麼情況?
通常,Google 與 Google Play 被授權人的關係使我們能夠要求裝置製造商發布可解決問題的更新系統映像。
相容性測試套件 (CTS)
CTS 的目的是什麼?
相容性測試套件是設備製造商用來幫助確保其設備相容並報告測試結果以進行驗證的工具。 CTS 旨在由 OEM 在整個工程流程中頻繁運行,以便及早發現相容性問題。
CTS 測試哪些類型的內容?
CTS 目前測試所有受支援的 Android 強型別 API 是否存在且行為正確。它還測試其他非 API 系統行為,例如應用程式生命週期和效能。我們計劃在未來的 CTS 版本中新增對測試意圖等軟 API 的支援。
CTS報告會公開嗎?
是的。雖然目前尚未實施,但 Google 打算為 OEM 提供基於網路的自助服務工具來發布 CTS 報告,以便任何人都可以查看它們。製造商可以與盡可能多的受眾分享 CTS 報告。
CTS 如何取得許可?
CTS 是根據大多數 Android 使用的相同 Apache 軟體授權 2.0 授權的。
CTS 接受捐款嗎?
是的,請!與任何其他元件一樣,AOSP 接受改進 CTS 的貢獻。事實上,提高CTS測試案例的覆蓋率和品質是幫助Android的最佳方法之一。
任何人都可以在現有設備上使用 CTS 嗎?
相容性定義文件要求相容設備實現adb
調試實用程式。這意味著任何相容設備(包括零售設備)都必須能夠運行 CTS 測試。
編解碼器是否經過 CTS 驗證?
是的。所有強制編解碼器均經過 CTS 驗證。