Android 開源項目(AOSP)主張原始設備制造商(OEMs)和其他設備實施者將一個完整的軟件堆棧植入并運行在他們自己的硬件上。為了保持 Android 的質量,谷歌貢獻出了專職的工程師、產品經理、用戶界面設計師、質量保證測試人員和所有其他把現(xiàn)代化設備帶向市場的必要相關人員。
因此,我們保留了若干“代碼主線”,從不穩(wěn)定的試驗性工作中清晰地區(qū)分出 Android 當前穩(wěn)定的版本。我們將開源的管理和維護迭代進更大的產品開發(fā)周期中。
下面的圖表描述了在概念層面上 AOSP 是如何管理代碼和版本。我們將提及的這些作為“代碼主線”而不是“支線”,僅僅是因為在任何特定的時刻,一個特定的“代碼主線”里都有可能存在不止一條支線。例如,當一個發(fā)布被中斷,它會基于當時的需求去決定它能不能成為一條新的分支。
在任何特定的時刻,都有一個 Android 平臺的當前最新版本。這通常表現(xiàn)為樹的一個分支形式。
設備制造商和參與者使用當前最新版本進行工作,修復漏洞,推出新設備,試驗新功能等等。
與此同時,谷歌根據產品的需要和目標,內部實現(xiàn) Android 平臺和框架的下一個正式版本。我們通過在旗艦設備上與設備合作伙伴合作,開發(fā)出 Android 的下一個正式版本。這些設備合作伙伴的性能規(guī)范被選中,用來推動 Android 朝著我們希望的方向前進。
http://wiki.jikexueyuan.com/project/android-source/images/codelines-branches-releases1.png" alt="" />
一個發(fā)布版本對應于一個 Android 平臺的正式版本,例如 1.5,2.1 等等。一般來說,一個平臺的發(fā)布版本對應一個正式版本。這個正式版本在 AndroidManifest.xml 文件的 SdkVersion 域里面且它是在 frameworks/base/api 源代碼樹下定義的。
一個上游項目是一個開源項目,Android 堆棧就是從這個開源項目上獲取代碼的。這些包括一些著名的項目,如 Linux 內核和 WebKit。隨著時間的推移,我們正在遷移的一些半自主性的 Android 項目(例如 Android 運行環(huán)境 “ART”, Android SDK 工具,Bionic 等等) 作為“上游”項目進行開發(fā)。通常情況下會在公共樹里面完全開發(fā)這些項目。對于一些上游項目,開發(fā)是通過直接地構建上游項目本身完成的??梢詤⒖?a rel="nofollow" title="上游項目">上游項目獲取更多資訊。在這兩種情況下,快照將定期被拉入版本。
在任何時候,對于特定的 Android 平臺,代碼主線版本(實際上在 git 里面可能包含了不止一個實際的分支)被認為是唯一規(guī)范的源代碼。原始設備制造商和其他設備制造商應該只從發(fā)布版本分支獲取源代碼。
“實驗性”代碼線路的建立用以獲取社區(qū)的變化,這樣他們可以在迭代上著眼于穩(wěn)定性。
證明了穩(wěn)定的變化將最終被拖入發(fā)布分支。注意,這只適用于漏洞修復的、應用程序改進的和其它不影響平臺 API 的變化。
當有必要時,變化將被從上游項目(包括 Android “上游”項目)拖入發(fā)布分支。
谷歌內部將開發(fā)“N+1”個版本(即框架和平臺 API 的下一個主要版本)??梢詤⒖?a rel="nofollow" >關于私有的代碼主線獲取更多資訊。
當有必要時,從上游、發(fā)布版本與實驗分支拉出的變化將會放到谷歌的私有分支。
當下一個正式版本的平臺 API 已經穩(wěn)定,并經過全面測試,谷歌將中斷下一個平臺正式版本的發(fā)布版本。(這特別是指一種新 SdkVersion。)這也將對應被制成一個公共發(fā)布分支的內部代碼行和新的當前平臺代碼主線。
上述提及的源管理策略包括一個谷歌將繼續(xù)保密的代碼主線。這樣做的原因是要把注意力集中在目前 Android 公共版本。
原始設備制造商和其他設備制造商自然希望制造出與 Android 最新版本相關的產品。同樣,應用程序開發(fā)者如非必要不希望處理更多的平臺版本。與此同時,谷歌保留對作為一個平臺和一個產品的 Android 戰(zhàn)略方向的責任。我們的方法著重于在少量的旗艦設備上運行功能,確保與 Android 相關的知識產權受到保護。
結果是,谷歌經常擁有來自第三方的機密信息。我們必須避免泄露敏感的功能,直到我們確保擁有適當的保護措施。另外,一次存在太多平臺版本也會對平臺引起真實的風險。基于這些原因,我們已經構建了開源項目 - 包括第三方的貢獻 - 以專注于 Android 的目前公開的穩(wěn)定版本。下一平臺版本的深度開發(fā)不會公開進行,直到它已經準備好成為一個發(fā)布版本。
我們意識到許多貢獻者不同意這種方法。我們尊重其他人可能有不同的觀點,然而,我們覺得這種方法是最好的,我們也選擇這個方法來實現(xiàn)。