常見問題

此頁面提供了一些常見問題 (FAQ) 的答案。

開源

什麼是 Android 開源項目?

Android 開源項目 (AOSP) 是指組成 Android 的人員、流程和源代碼。

人們監督項目並開發源代碼。流程是我們用來管理軟件開發的工具和程序。最終結果是源代碼,您可以在手機和其他設備中使用。

我們為什麼要開放 Android 源代碼?

Google 啟動 Android 項目是為了響應我們自己推出移動應用程序的經驗。我們希望確保始終有一個開放平台可供運營商、原始設備製造商和開發人員使用,以使他們的創新想法成為現實。我們還希望避免任何中心故障點,因此沒有任何一個行業參與者可以限製或控制任何其他人的創新。對於 AOSP,我們最重要的一個目標是確保開源 Android 軟件的實施盡可能廣泛和兼容,以造福所有人。

Android是一個什麼樣的開源項目?

Google 監督核心 Android 開源平台的開發,並致力於創建強大的開發人員和用戶社區。大多數情況下,Android 源代碼是在寬鬆的 Apache License 2.0 下獲得許可的,而不是copyleft許可。我們選擇 Apache 2.0 許可證是因為我們相信它會鼓勵廣泛的 Android 軟件採用。有關詳細信息,請參閱許可證

為什麼谷歌要掌管安卓?

啟動軟件平台很複雜。開放性對於平台的長期成功至關重要,因為開放性吸引了開發人員的投資並確保了公平的競爭環境。該平台還必須是對用戶有吸引力的產品。

Google 已投入必要的專業工程資源,以確保 Android 成為一個完全有競爭力的軟件平台。谷歌將 Android 項目視為全面的產品開發業務,並達成必要的商業交易,以確保運行 Android 的優秀設備進入市場。

通過確保 Android 在用戶中取得成功,我們幫助確保 Android 作為平台和開源項目的活力。畢竟,誰想要一個不成功產品的源代碼呢?

Google 的目標是確保圍繞 Android 建立成功的生態系統。我們開放了 Android 源代碼,以便任何人都可以修改和分發軟件以滿足自己的需求。

Google 對 Android 產品開發的總體戰略是什麼?

我們將出色的設備發佈到競爭激烈的市場中。然後,我們將我們所做的創新和增強功能整合到核心平台中,作為下一個版本。

在實踐中,這意味著 Android 工程團隊專注於少數“旗艦”設備,並開發下一個版本的 Android 軟件來支持這些產品的發布。這些旗艦設備吸收了大部分產品風險,並為廣大的 OEM 社區開闢了道路,他們會跟進更多利用新功能的設備。通過這種方式,我們可以確保 Android 平台根據實際設備的需求進行演進。

Android軟件是如何開發的?

Android 的每個平台版本(如 1.5 或 8.1)在開源樹中都有對應的分支。最近的分支被認為是當前的穩定分支版本。這是製造商移植到其設備的分支。該分支始終保持適合發布。

同時,還有一個當前的實驗分支,用於開發投機性貢獻,例如大型下一代功能。錯誤修復和其他貢獻可以酌情包含在實驗分支的當前穩定分支中。

最後,谷歌在開發旗艦設備的同時,也在開發下一個版本的 Android 平台。該分支會根據需要從實驗分支和穩定分支中引入更改。

有關代碼線、分支和發布的詳細信息,請參閱AOSP 代碼管理

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

將設備推向市場通常需要一年多的時間。而且,當然,設備製造商希望發布他們可以發布的最新軟件。同時,開發人員在編寫應用程序時不希望不斷跟踪平台的新版本。兩個群體都在運輸產品和不想落後之間感到緊張。

為了解決這個問題,包括核心平台 API 在內的下一版 Android 的某些部分是在私有分支中開發的。這些 API 構成了 Android 的下一個版本。我們的目標是在創建平台的下一個版本時將注意力集中在當前穩定版本的 Android 源代碼上。這允許開發人員和 OEM 使用單個版本,而無需跟踪未完成的未來工作以跟上進度。 Android系統其他與應用兼容性無關的部分都是開放開發的。我們打算隨著時間的推移將更多這些部分轉移到開放式開發中。

什麼時候發布源代碼?

當他們準備好時。發布源代碼是一個相當複雜的過程。 Android 的某些部分是公開開發的,並且源代碼始終可用。其他部分首先在私有樹中開發,並且在下一個平台版本準備好時發布源代碼。

在某些版本中,核心平台 API 已經提前準備好,以便我們可以在設備發布之前將源代碼推出以便及早查看。在其他版本中,這是不可能的。在所有情況下,當我們認為版本穩定,並且在開發過程允許的情況下,我們都會發布平台源代碼。

發布新 Android 版本的源代碼涉及什麼?

發布新版 Android 平台的源代碼是一個重要的過程。首先,該軟件被內置到設備的系統映像中,並通過各種形式的認證,包括手機將要部署的地區的政府監管認證。該代碼還經過操作員測試。這是該過程的一個重要階段,因為它有助於檢測軟件錯誤。

當發布得到監管機構和運營商的批准後,製造商開始批量生產設備,我們開始發布源代碼。

在量產的同時,谷歌團隊開始了幾項準備開源版本的工作。這些工作包括進行最終 API 更改、更新文檔(例如,以反映在資格測試期間所做的任何修改)、為新版本準備 SDK 以及發布平台兼容性信息。

我們的法律團隊會進行最終簽署以將代碼發佈到開源中。正如開源貢獻者需要簽署一份貢獻者許可協議以證明他們對其貢獻的知識產權所有權一樣,谷歌必須驗證來源是否已獲准進行貢獻。

從量產開始,軟件發布過程通常需要一個月左右的時間,因此源代碼發布通常與設備到達用戶的時間差不多。

AOSP 與 Android 兼容性計劃有何關聯?

Android 開源項目維護 Android 軟件,並開發新版本。因為它是開源的,所以該軟件可以用於任何目的,包括開發與基於相同源的其他設備不兼容的設備。

Android Compatibility Program 的功能是定義與開發人員編寫的第三方應用程序兼容的 Android 基線實現。與Android 兼容的設備有資格參與 Android 生態系統,包括 Google Play;不符合兼容性要求的設備存在於該生態系統之外。

換句話說,Android 兼容性計劃是我們將 Android 兼容設備與僅運行源代碼衍生產品的設備區分開來的方式。我們歡迎所有使用 Android 源代碼,但要參與 Android 生態系統,設備必須被程序識別為與 Android 兼容。

我如何為 Android 做出貢獻?

您可以報告錯誤、為 Android 編寫應用程序或向 Android 開源項目貢獻源代碼。

我們接受的代碼貢獻類型是有限的。例如,有人可能想要貢獻一個替代應用程序 API,例如一個完整的基於 C++ 的環境。我們會拒絕這種貢獻,因為 Android 鼓勵應用程序在 ART 運行時中運行。同樣,我們不會接受與我們的許可目標不兼容的貢獻,例如 GPL 或 LGPL 庫。

我們鼓勵有興趣貢獻源代碼的人在開始任何工作之前通過Android 社​​區頁面上列出的渠道與我們聯繫。有關詳細信息,請參閱貢獻

如何成為 Android 提交者?

Android 開源項目實際上並沒有提交者的概念。所有貢獻(包括由 Google 員工撰寫的貢獻)都通過稱為 Gerrit 的基於 Web 的系統進行,該系統是 Android 工程流程的一部分。該系統與 git 源代碼管理系統協同工作,以乾淨地管理源代碼貢獻。

提交後,更改需要由指定的審批人接受。審批者通常是 Google 員工,但相同的審批者負責所有提交,無論其來源如何。

有關詳細信息,請參閱提交補丁

回到頂部

兼容性

什麼是安卓“兼容性”?

我們將Android 兼容設備定義為可以運行第三方開發人員使用 Android SDK 和 NDK 編寫的任何應用程序的設備。我們使用它作為過濾器來區分可以參與 Android 應用生態系統的設備和不能參與的設備。對於適當兼容的設備,設備製造商可以尋求批准使用 Android 商標。不兼容的設備源自 Android 源代碼,不允許使用 Android 商標。

換言之,兼容性是參與Android應用生態系統的先決條件。歡迎任何人使用 Android 源代碼。但如果設備不兼容,則不被視為 Android 生態系統的一部分。

Google Play 在兼容性方面的作用是什麼?

擁有 Android 兼容設備的設備製造商可以尋求獲得 Google Play 客戶端軟件的許可。許可設備成為 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 應用程序,例如 Google 地圖?

適用於 Android 的 Google 應用程序(例如 YouTube、Google Maps 和 Gmail)是不屬於 Android 的 Google 資產,需要單獨獲得許可。聯繫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 旨在由 OEM 在整個工程過程中頻繁運行,以及早發現兼容性問題。

CTS 測試哪些內容?

CTS 當前測試所有受支持的 Android 強類型 API 是否存在且行為正確。它還測試其他非 API 系統行為,例如應用程序生命週期和性能。我們計劃在未來的 CTS 版本中添加支持,以測試 Intents 等API。

CTS 報告會公開嗎?

是的。雖然目前尚未實施,但 Google 打算為 OEM 提供基於 Web 的自助服務工具來發布 CTS 報告,以便任何人都可以查看它們。製造商可以與盡可能多的受眾共享 CTS 報告。

CTS 是如何獲得許可的?

CTS 根據大部分 Android 使用的相同 Apache 軟件許可證 2.0 獲得許可。

CTS 接受捐款嗎?

是的,請! Android 開源項目接受對改進 CTS 的貢獻,就像對任何其他組件一樣。事實上,提高 CTS 測試用例的覆蓋率和質量是幫助 Android 的最佳方法之一。

任何人都可以在現有設備上使用 CTS 嗎?

兼容性定義文檔要求兼容設備實現adb調試實用程序。這意味著任何兼容設備(包括零售設備)都必須能夠運行 CTS 測試。

編解碼器是否經過 CTS 驗證?

是的。所有強制性編解碼器均由 CTS 驗證。

回到頂部