安卓突然終止「開(kāi)源」,開(kāi)發(fā)者遭背叛?社區(qū)炸鍋了
據(jù)Android Authority報(bào)道,谷歌已經(jīng)向其確認(rèn),谷歌將很快在私有環(huán)境中開(kāi)發(fā)Android開(kāi)源項(xiàng)目(AOSP,Android Open Source Project),但依然會(huì)開(kāi)源代碼。
網(wǎng)站地址:https://www.android.com/
很多小伙伴可能會(huì)慌了,我的安卓手機(jī)不能用了?
目前來(lái)看,谷歌私下開(kāi)發(fā)AOSP項(xiàng)目還不至于到「天塌下來(lái)」的地步,普通手機(jī)用戶更是幾乎感覺(jué)不到什么變化。
大部分主流手機(jī)廠商(比如小米、vivo、三星等)早就跟谷歌簽好了各種合作伙伴協(xié)議。
只要這些協(xié)議還在,廠商們就還能照常拿到最新的Android源代碼,通過(guò)Google自家的認(rèn)證,正常預(yù)裝Google Play、Gmail這些服務(wù)和應(yīng)用。
谷歌對(duì)安卓系統(tǒng)的支持也不會(huì)斷。
一句話,還是老樣子。
那么問(wèn)題來(lái)了,谷歌到底做了什么?
這就要從谷歌的安卓開(kāi)源項(xiàng)目(AOSP)說(shuō)起了。
什么是Android Open Source Project(AOSP)?
AOSP簡(jiǎn)單來(lái)說(shuō),就是谷歌給所有Android設(shè)備提供了一個(gè)「毛坯房」——操作系統(tǒng)的基本框架和核心部件。
任何開(kāi)發(fā)者都可以免費(fèi)下載它的代碼,隨意改動(dòng)、分發(fā),然后打造自己的定制系統(tǒng)。
比如小米HyperOS、vivo OriginOS都是在AOSP基礎(chǔ)上搭建起來(lái)的。
網(wǎng)站地址:https://source.android.com/?hl=zh-cn
而Android系統(tǒng)本身是跑在Linux內(nèi)核上,這個(gè)內(nèi)核用的是GPL許可證,規(guī)則挺嚴(yán)格。
簡(jiǎn)單說(shuō)就是,只要使用采用了GPL許可證的代碼,你就得開(kāi)源,體現(xiàn)「要玩就一起玩」的精神。
但Google為了讓Android既開(kāi)源又能賺錢,玩了個(gè)聰明設(shè)計(jì):底層Linux內(nèi)核老實(shí)按GPL開(kāi)源,但中間AOSP大部分代碼卻用寬松的Apache 2.0許可證。
這樣廠商既能自由改動(dòng)Android,不用全盤公開(kāi),還能加自己專有的東西,既開(kāi)放又靈活。
具體來(lái)說(shuō),Linux內(nèi)核和模塊還得開(kāi)源,但到了用戶空間的應(yīng)用就不受GPL限制,想閉源就閉源。
結(jié)果就是,AOSP底層GPL開(kāi)源,中層Apache寬松開(kāi)源,上層應(yīng)用隨開(kāi)發(fā)者意愿,想怎么玩就怎么玩。
谷歌的這點(diǎn)小聰明那是相當(dāng)?shù)某晒Α?/span>
回想將近二十年前,智能手機(jī)剛起步那會(huì)兒,蘋果發(fā)布了iPhone。
谷歌也想在移動(dòng)市場(chǎng)分一杯羹,于是決定推出Android。
這不光幫助谷歌賺了個(gè)技術(shù)開(kāi)放的好名聲,還把一大堆廠商和用戶從塞班、諾基亞、Windows Mobile、黑莓手里搶了過(guò)來(lái)。
真是神來(lái)之筆。
Android開(kāi)源這步棋,絕對(duì)是谷歌今天能占據(jù)移動(dòng)操作系統(tǒng)市場(chǎng)七成以上份額的最大功臣。
市場(chǎng)是拿到了,代價(jià)是AOSP軟件的維護(hù)是要做的。
問(wèn)題是,隨著手機(jī)的功能越來(lái)越多,這種維護(hù)工作的代價(jià)也越來(lái)越大。
終于,谷歌忍不了了。
代碼同步難,谷歌決定「關(guān)起門」來(lái)開(kāi)發(fā),但依然開(kāi)源代碼
寫過(guò)代碼的都知道相比寫代碼,「合并代碼」反而是最令人頭疼的問(wèn)題。
2007年,谷歌開(kāi)放了安卓的核心代碼,這步棋讓谷歌摘取了移動(dòng)互聯(lián)網(wǎng)時(shí)代最大的果實(shí)。
但是也導(dǎo)致安卓這個(gè)項(xiàng)目有了兩個(gè)「主分支」。
一個(gè)分支就是公共的AOSP分支,這個(gè)分支對(duì)任何人都開(kāi)放,大家所說(shuō)的「安卓是開(kāi)源」就是指這個(gè)分支。
一些附屬功能,比如藍(lán)牙功能,仍然在AOSP分支中公開(kāi)開(kāi)發(fā),你可以在開(kāi)源的Android Code Search中搜索到相關(guān)源代碼。
然而,AOSP公共分支并不包含谷歌專有的應(yīng)用和服務(wù),比如Google Play商店、Gmail、Google Maps等。
AOSP雖然沒(méi)有谷歌自己的服務(wù),但是仍然可以編譯為一個(gè)完整的可用操作系統(tǒng)。
許多設(shè)備制造商基于AOSP開(kāi)發(fā)自己的操作系統(tǒng),包括:
- 三星:開(kāi)發(fā)了One UI。
- 小米:開(kāi)發(fā)了MIUI。
- OPPO:開(kāi)發(fā)了ColorOS。
- 華為:開(kāi)發(fā)了早期的EMUI。
- 一加:開(kāi)發(fā)了OxygenOS。
另一個(gè)分支則是完全的閉源開(kāi)發(fā),可以看做谷歌自己的安卓「親兒子」。
這個(gè)分支僅限于擁有谷歌移動(dòng)服務(wù)(GMS)許可協(xié)議的公司使用,以上類似三星One UI這種Android系統(tǒng)也可以使用,只要谷歌給予授權(quán)。
目前來(lái)看,大多數(shù)組件,包括核心Android操作系統(tǒng)框架,都是在Google的內(nèi)部分支中私下開(kāi)發(fā)的。
兩個(gè)分支導(dǎo)致一個(gè)很大問(wèn)題,就是內(nèi)部分支的開(kāi)發(fā)進(jìn)度領(lǐng)先于公開(kāi)的AOSP,導(dǎo)致兩個(gè)分支差異很大。
這種差異逼得谷歌必須花費(fèi)時(shí)間和精力在公共AOSP分支與其內(nèi)部分支之間合并補(bǔ)丁上。
這就到了程序員「喜聞樂(lè)見(jiàn)」的環(huán)節(jié),由于分支差異很大,合并沖突經(jīng)常出現(xiàn)。
以這個(gè)啟用導(dǎo)航欄和鍵盤屏幕放大功能的補(bǔ)丁為例,該補(bǔ)丁引入了新的輔助功能設(shè)置,該設(shè)置被放置在輔助功能設(shè)置列表的末尾。
這會(huì)導(dǎo)致合并沖突,因?yàn)锳OSP與谷歌內(nèi)部分支之間的列表長(zhǎng)度不同(圖中變量accessibility_magnify_nav_and_ime設(shè)置為58和59沖突)。
雖然針對(duì)此特定問(wèn)題的修復(fù)很簡(jiǎn)單,但當(dāng)其他許多AOSP補(bǔ)丁集成到谷歌的內(nèi)部分支時(shí),都會(huì)觸發(fā)類似的合并沖突。
另一個(gè)例子是,開(kāi)發(fā)Android的新僅解鎖存儲(chǔ)區(qū)域API需要一位Google工程師從內(nèi)部分支中挑選一個(gè)補(bǔ)丁到AOSP以解決合并沖突。
這是因?yàn)殡m然API是在AOSP中開(kāi)發(fā)的,但包含新Android構(gòu)建標(biāo)志的文件是在內(nèi)部開(kāi)發(fā)的。
因此,必須在內(nèi)部提交一個(gè)更新構(gòu)建標(biāo)志文件的補(bǔ)丁,然后應(yīng)用到AOSP。
也許這些沖突單獨(dú)看都不難處理,但是架不住可能會(huì)有無(wú)數(shù)這樣「合并沖突」的例子。
「累覺(jué)不愛(ài)」,也許這就是谷歌放棄當(dāng)前雙管齊下的Android開(kāi)發(fā)策略,轉(zhuǎn)而將所有開(kāi)發(fā)工作內(nèi)部化的原因。
這對(duì)我們意味著什么?
這一決策整體來(lái)說(shuō),并不意味著Android正在變成「閉源」。
谷歌只是想把「開(kāi)發(fā)過(guò)程」藏起來(lái),依然會(huì)繼續(xù)發(fā)布源代碼。
最大的區(qū)別在于,AOSP公共分支存在時(shí),對(duì)于Android愛(ài)好者和科技行業(yè)記者來(lái)說(shuō),這是一個(gè)能夠「窺探」Android最新動(dòng)向的窗口。
現(xiàn)在這個(gè)「窗口」要被谷歌關(guān)上了,這可能會(huì)讓這些科技極客們感到沮喪,因?yàn)檫@減少了他們對(duì)Google開(kāi)發(fā)工作的洞察力。
對(duì)于開(kāi)發(fā)者,這會(huì)讓他們更難跟上新的Android平臺(tái)變化,因?yàn)樗麄儗o(wú)法再跟蹤AOSP中的變化。
比如外國(guó)的一個(gè)記者在AOSP中發(fā)現(xiàn)了某些代碼變更,然后提前數(shù)月就預(yù)測(cè)了Pixel的網(wǎng)絡(luò)攝像頭功能,他還利用AOSP中的線索推斷出Android 16的提前發(fā)布日期。
而對(duì)于大多數(shù)的我們,甚至包括安卓應(yīng)用開(kāi)發(fā)者,可以說(shuō)毫無(wú)影響。
事實(shí)上,從邏輯的角度上,谷歌大概率就是覺(jué)得維護(hù)代碼的成本過(guò)高,不論是從AOSP合并到內(nèi)部版本,還是將內(nèi)部版本的更新帶給AOSP公共分支,這些工作都需要工程師完成。
可以說(shuō)這些處理沖突的工作過(guò)于「低端」,對(duì)于谷歌的工程師來(lái)說(shuō),耗時(shí)耗力而且毫無(wú)意義。
但是AOSP某種意義上已經(jīng)可以看做是谷歌在開(kāi)源生態(tài)和程序員心目中的「投名狀」。
作為以「不作惡」為公司理念的谷歌,安卓開(kāi)源這步棋被認(rèn)為是谷歌最成功的一次戰(zhàn)略決策之一。
在極客們看來(lái),這次決策類似于谷歌自己推倒了過(guò)去十幾年樹立起來(lái)的「精神豐碑」。
當(dāng)然,從谷歌自己的角度看來(lái),選擇將工作整合在一個(gè)內(nèi)部分支下,同時(shí)簡(jiǎn)化操作系統(tǒng)開(kāi)發(fā)和源代碼發(fā)布,是可以理解的。
畢竟AOSP對(duì)Google的商業(yè)價(jià)值,跟當(dāng)年比起來(lái),已經(jīng)完全不是一個(gè)量級(jí)了。
從最近谷歌對(duì)Gemini以及Gemma的瘋狂更新來(lái)看,AI才是其工作的重點(diǎn)。
其實(shí)所有人都知道,相比于Gemini,安卓對(duì)于谷歌已不再那么重要。