常見問題

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

開源

什麼是 Android 開源項目?

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

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

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

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

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

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

為什麼谷歌負責安卓?

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

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

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

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

Google 在 Android 產品開發方面的總體戰略是什麼?

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

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

安卓軟件是如何開發的?

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

同時,還有一個當前的實驗分支,這是開發推測性貢獻(例如大型下一代功能)的地方。 Bug 修復和其他貢獻可以根據需要包含在實驗分支的當前穩定分支中。

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

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

為什麼 Android 的某些部分是私人開發的?

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

為了解決這個問題,包括核心平台 API 在內的下一版 Android 的某些部分是在私有分支中開發的。這些 API 構成了 Android 的下一個版本。我們的目標是在創建平台的下一個版本時,將注意力集中在當前穩定版本的 Android 源代碼上。這允許開發人員和原始設備製造商使用單一版本,而無需跟踪未完成的未來工作以跟上進度。 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 軟件可以移植到許多不同的設備,包括一些第三方應用程序無法正常運行的設備。 Android 兼容性定義文檔(CDD) 詳細說明了被認為兼容的特定設備配置。

例如,雖然 Android 源代碼可以移植到沒有攝像頭的手機上運行,但 CDD 要求所有手機都配備攝像頭。這允許開發人員在編寫他們的應用程序時依賴一組一致的功能。

CDD 不斷發展以反映市場現實。例如,CDD 1.6 版僅支持手機。但 2.1 版允許設備省略電話硬件,使平板式音樂播放器等非電話設備能夠兼容。在進行這些更改時,我們還將擴充 Google Play,以允許開發人員保留對其應用程序可用位置的控制權。繼續電話示例,管理 SMS 文本消息的應用程序在媒體播放器上沒有用處,因此 Google Play 允許開發人員將該應用程序專門限制在電話設備上。

如果我的設備兼容,它會自動訪問 Google Play 和品牌嗎?

不,訪問不是自動的。 Google Play 是由谷歌運營的一項服務。實現兼容性是獲得 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)。我們與提供意見的各種原始設備製造商協商,為新的 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 報告會公開嗎?

是的。雖然目前尚未實施,但谷歌打算為 OEM 提供基於網絡的自助服務工具來發布 CTS 報告,以便任何人都可以查看。製造商可以根據需要與盡可能廣泛的受眾共享 CTS 報告。

CTS 是如何獲得許可的?

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

CTS 接受捐款嗎?

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

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

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

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

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

回到頂部