CM(CyanogenMod)團隊為什麼可以解決那麼多機型的適配?
根據題主粗略的認知,cm相當於是在aosp的基礎上為各個機型寫驅動。早期的miui便是在cm的基礎上修改。
但是,後來小米不再基於cm自己寫驅動的時候,剛開始也是各種bug。現在一加手機自己的系統才剛剛發布一個相當於自己編寫好驅動的安卓5.0測試版系統,僅僅是寫好了驅動,其他和原生5.0保持一致。(題主使用一加手機),並且這個5.0測試版的系統根本比不上論壇上一些早就放出的其他的5.0.由此題主覺得,編寫驅動並非易事,特別是保證手機穩定無bug. 那麼問題就來了,cm團隊為什麼這麼厲害!能夠適配出那麼多手機的穩定系統包!他們所採用的方式和國內這些rom團隊將aosp適配自己手機的方式有什麼不同嗎?
樓上說的都對,我再講講CM適配一個機型的全過程。CM的創始人和核心成員寫了CM的主代碼庫(包括界面、主要的功能以及CM的應用如文件管理器、計算器和最近出來的CM瀏覽器)(所以不會出現幾個機型的CM會不一樣,因為主代碼庫是一樣的。)
然後根據主代碼庫,一些人(romer)自願為CM適配機型,他們被稱為設備維護者,負責適配機型,調試設備,讓CM在設備上跑起來。這個時候CM版本為適配版,即unofficial。
接著這類跟適配有關的代碼就會提交給CM(如果適配過程中遇到不可避免的涉及到主代碼庫的改動了,維護者就會申請維護unofficial版,以免污染主代碼庫),在CM的伺服器上自動編譯一遍(unofficial版一般是在維護者自己的電腦上跑的,過程可控,伺服器端編譯時不可控的)測試會不會出錯,這個版本叫experimental。如果驗收通過,就會加入到nightly每夜版階段。這個時候設備維護者只要改動代碼、提交就行了,代碼庫就會更新。然後每天伺服器根據代碼庫自動編譯每夜版。每過一段時間,代碼庫要檢查一次,然後整理代碼庫,使其趨於完善,之後伺服器會編譯正式版。這整個過程基本上都是設備維護者在做,所以說CM本身不適配機型,基本都是設備維護者在做。————07.16更新————魔趣ROM也是這樣。但是sudamod不是。sudamod是中國第二大本土化aokp開源項目,但是sudamod本身支持的機型很少,而且都是手動編譯。絕大部分機型都是unofficial版本的。謝邀。
比如當年三星S4 5410八核版本,三星公布的開發文檔很多都是錯的,導致CM團隊停止維護了八核版本一段時間。
至於為什麼CM能適配這麼多機型、而且還能保證幾年如一日的堅持每款機器都能每天發一個nightly版本呢?
原因就是CM本身就是一個開源的系統,源代碼在CM的github上多的很,甚至諸如諾基亞X這種沒有被官方適配的機器都能被XDA論壇的幾個極客通過CM的開源代碼編譯成一個幾乎沒幾個Bug的完善原生Android系統。
那麼為什麼CM能天天發一個版本呢?就連聖誕夜也有,難道開發人員都不休息么?
原因就是Nightly版本CM的包可不是有什麼大神覺得做得差不多了然後打包一下這樣的,Nightly版本是每隔24小時自動打包的,打包完之後負責人們會嘗試一下這個版本能否正常啟動,除此之外不會有任何的測試,就直接發布出來,所以Nightly版本類似於小米的嘗鮮包,相對其他版本穩定度最低,但是如果你要體驗新的特性,新的功能,Nightly就是最好的選擇了。
說的明白點就是CM其實先確定好一個大框架,適配的時候只是為機器的驅動之類的進行適配,所有設備刷入CM之後的功能是完全一樣的,功能方面沒有對機型有什麼優化。
由 Google 內部開發的香草 Android 操作系統(以 AOSP 或 Android Open Source Project 聞名),大約每年發布一到兩次。它們為想要 下載的人們提供了源代碼。CyanogenMod 社區,由世界範圍的不計報酬的志願者和愛好者組成,取得該最新 Android 代碼,並「適配」它到幾十種新設備以及稍微老一些的設備(或者叫「遺產」)上。同時,其他的 CyanogenMod 開發者開始添加Google並不包括的、對所有設備有益的特性、修改和增強到 CyanogenMod 代碼中。CyanogenMod 社區擁有用於構建並測試試驗性版本、報告缺陷和貢獻代碼的完整的基礎設施。
(這一段摘自CM團隊的官方WIKI解釋)
另外說明一點,CM團隊的人手絕對是充足的,看看官方WIKI上CM的核心成員的名單吧。
這還不算那些志願者和每天義務向團隊提交Bug的貢獻者,CM有一個龐大的官方論壇(還有XDA等其他論壇),裡面討論的氛圍和質量都是極高的,正是這些人每日的不斷貢獻才成就了CM的輝煌。以上。他們有很多人,最開始只有十幾個,後來筏板到100多個,現在全球各地很多成員。
而且,最重要的是,他們不是自己寫的驅動,而是用的廠商寫好的驅動來改一改,優化優化。
寫驅動是非常麻煩費時的事。當年摩托放棄給MB860/ME860支持4.0的時候,XDA上一群人組織起來給MB860/ME860從零開始寫適配Android 4.0的驅動,那麼多人,好像是花了半年才寫出來一個測試版驅動。可想而知寫驅動是有多麻煩的事,所以CM是不可能去寫驅動的,最多限於優化。就算有那個廠商放棄某款手機,CM又想接手的話,也是少數一兩款手機。我學過驅動開發,這玩藝自己寫一個確實很難,因為要看晶元手冊各種調試,但實際上做手機的都用的soc,理論上買回來的時候廠商已經提供寫好的驅動程序,公司的驅動工程師調一下就行。所以我感覺CM做的工作沒多大技術含量,就是一個全字,支持soc驅動。
我的老旗艦S3都能用上CM13了,作為窮逼學生黨,我感到很欣慰。
雖然支持的機型是很多,但是bug也多得很,很多機型bug多到無法用的地步。
驅動都是官方的吧...
推薦閱讀:
※安卓適配為何比windows難?
※努比亞高配星空灰 華為榮耀v9和一加3T高配槍灰色這3款手機選哪一款?
※為什麼要升級到 Android 7.x?
TAG:CyanogenMod | Android | AOSP |