Android假開源:谷歌的開放是只能看、不能摸的開放
譯文鎖定制造商
雖然谷歌正想盡一切辦法拉低開源代碼庫的價值,但在這場權力的游戲中、應用程序并不是谷歌奪取控制權的惟一戰場。
如果一家公司曾經管理過AOSP分支、克隆過谷歌應用并打造出一位足以向谷歌Android挑戰的競爭者,恐怕仍然很難拉攏到廠商為其制造設備。在開放市場當中,我們能夠比較輕松地找到Android OEM合作伙伴并在過程中推動其轉變陣營,但谷歌希望讓自己的地位變得更加穩固。谷歌在移動領域的真正王牌在于對谷歌應用的牢牢掌控——主要成員為Gmail、谷歌地圖、Google Now、Hangouts、YouTube以及Play Store。這些才是Android的左膀右臂,而且每一家或大或小的設備制造商都希望它們能夠登陸自己的手機產品。由于這些應用并非開源,因此只有獲得了谷歌授權才能合法使用。說到這里,大家腦海里大概出現了一位完美的“教父”形象——沒錯,想使用這些應用程序,制造商當然得付出一點“小小的代價”。
盡管并不屬于官方要求,但大家在加入了開放手機聯盟之后會發現獲取谷歌應用授權的難度會顯著降低。所謂開放手機聯盟是一系列向Android(注意,是谷歌的Android)做出承諾的廠商,其成員需要簽訂協議、聲明自身不會開發未經谷歌批準的移動設備。沒錯,加入開放手機聯盟意味著企業永遠無法打造出可與谷歌Android進行競爭的Android 分支衍生產品。
宏碁就曾經吃過苦頭,當時該公司正嘗試在中國打造運行阿里巴巴推出的阿里云操作系統的移動設備。阿里云屬于Android 分支,當谷歌聽到風聲之后、立即要求宏碁停止項目研發,否則將失去谷歌應用的授權許可。谷歌甚至在一篇公開博文中表示:
雖然Android仍然在以免費形式提供給任何用戶,但只有與Android兼容的設備才能從整套Android生態系統當中獲利。通過加入開放手機聯盟,每一位成員都應為Android平臺的創建做出貢獻——而不是推出一大堆存在兼容性問題的版本。
這就讓一眾設備制造商的日子過得十分艱難,除了來自美國西部的無恥之徒Amazon。由于Kindle OS屬于Android的非兼容性衍生版本,沒有哪家OEM廠商愿意為Amazon提供Kindle Fire的生產支持。有鑒于此,Amazon希望用錢買通制造商,旨在打造自己的下一代平板設備——在當時的收購名單中,這位云服務與零售業巨頭曾考慮過宏碁、華碩、戴爾、富士康、富士通、HTC、華為、京瓷、聯想、LG、摩托羅拉、NEC、三星、夏普、索尼、東芝以及中興。目前,Amazon的簽約合作伙伴是廣達電腦公司,這是一家主營筆記本產品的企業——Amazon恐怕也沒有太多其它選擇。
對于OEM廠商而言,這意味著他們無法逐步從谷歌Android過渡到其它分支版本。只要他們推出一臺運行著競爭分支的設備,下一秒就會受到死亡的威脅——被立即踢出Android大家庭,這樣的嚴酷環境讓每位成員都生活得戰戰兢兢。按照谷歌的計劃,任何一家有意轉投其它Android 分支懷抱的廠商都將面臨嚴厲制裁——別無選擇的制造商只能跳下谷歌設置的懸崖、再無回頭路可走。
而每一家希望獲利谷歌應用許可的OEM廠商都必須通過谷歌提出的“兼容性”測試,從而證明自身符合授權資格。兼容性意在確保Play Store當中的所有應用都將正常運行在每一臺設備之上。而對于谷歌來說,“兼容性”同時也是一種模棱兩可的概念。正如某位Android工程師曾在一次內部發言中所說,這是一場“針對OEM廠商的考試,目的是確保他們按照我們的需要行事。”盡管谷歌如今推出了自動化工具來測試設備的“兼容性”,但要想獲利谷歌應用許可,廠商還需要向谷歌發送私人郵件來“討好對方”——當然,這是比較直白的說法。其中大部分溝通源自暗箱協議與秘密合同,所以我們的資料主要來自雙方的公開爭論以及谷歌與潛在Android叛逃者之間的法律訴訟(參見宏碁)。
另一大控制機制在于,谷歌應用的授權許可將全部應用作為一個單獨整體來處理。也就是說,如果大家想要Gmail與谷歌地圖,則必須同時帶上Google Play Services、Google+以及其它任何一款谷歌想要添加進這份名單的應用。一家名為Skyhook的公司就用自身的慘痛經歷證實了獲取許可的艱辛道路。當時該公司打算開發一項與Android存在競爭關系的定位服務,如果用戶開始選擇Skyhook的服務,就意味著谷歌將無法從用戶身上收集位置數據。這對谷歌而言當然不是好消息,于是Skyhook被理所當然地宣布為“兼容性測試不合格”。最終,OEM廠商只能在Skyhook服務與谷歌應用之間二選其一。雖然Skyhook公司就此提起訴訟,但目前訴訟結果仍然懸而未決。
利用臃腫軟件進行試水
對于大多數OEM廠商而言,在脫離谷歌生態系統的同時還想繼續保持成功無異于癡人說夢。惟一一種既開發自有應用、又不至于激怒谷歌大神的途徑就是由OEM廠商自主打造免費的谷歌應用替代版本。這就是被大多數人就為“臃腫軟件”的應用方案。臃腫軟件的工作機制很像是軟件工程中的“what if”邏輯關系,OEM廠商們通過復制谷歌旗下的全部核心應用來試探“圍墻花園”之外的生活到底有多么艱辛。
三星的夢想:免費的谷歌替代方案。
三星這方面的工作做得相當“出色”,即盡可能多地推廣自己的用戶賬戶系統、后臺同步機制乃至應用程序商店。但與此同時,設備上依然保留谷歌應用的整套原始方案。其中很大一部分,例如互聯網、電子郵件以及日歷應用,都立足于AOSP,但三星在谷歌放棄了這些開源方案轉向閉源替代品后仍然繼續為其添加新型功能。
在一臺已經具備谷歌應用的手機上同時提供兩款日歷應用,這似乎顯得既多余又愚蠢。但很多OEM廠商仍然將臃腫軟件視為一種重要的戰略后備機制——也就是B計劃——并在真正面臨被掃地出門的危局時拿來做最后一搏。這樣如果谷歌真的把事情做絕,OEM廠商這邊至少不會陷入“巧婦難為無米之炊”的境地。總而言之,OEM把自己開發的應用隨手機一同發售并獲取寶貴的用戶反饋。雖然這種冗余方案令用戶感到有些摸不清頭腦,但仍然有一部分用戶反而更喜歡OEM的核心應用版本——這實在是個好消息。
面對如上圖所示的這樣一份龐大的備用應用程序列表,看起來三星似乎隨時準備脫離谷歌獨自發展。但單純復刻谷歌應用還只是三星為擺脫谷歌生態系統所做出的巨大努力中的一小部分。對于Android,OEM廠商真正想要的是來自第三方應用的廣泛支持。谷歌也知道這正是自己的致命要害,因此該公司已經開始努力讓應用程序生態系統對谷歌自身產生依賴性。
#p#
鎖定第三方應用程序
我們之前曾經探討過Play Services更新所帶來的影響,但它同時也是谷歌對抗Android 分支的有力武器。Play Services是一款由谷歌公司持有的閉源應用,而且也是谷歌應用授權許可包中的組成部分。任何一項由“正常”Android向Google Play Services遷移的功能都意味著它同時由開源走向了閉源。這款應用通過這種把戲不僅成功將用戶匯聚到獨家所有的閉源代碼功能身邊,同時也將第一方開發商牢牢鎖定在了谷歌的專有API身上。
將Android應用生態系統從谷歌身上剝離看起來并不困難:我們只需建立起自己的應用程序商店并說服開發者向其中上傳應用產品即可——輕松步入良性發展軌道。然而由Play Services所承載的谷歌API通過增強開發商對于谷歌的依賴性無情阻止了這一勢頭。谷歌為Google Play Services制定的戰略目標在于讓開發商的開發工作在經過谷歌批準的設備上變得更輕松——同時要想盡一切辦法提高開發商在未經谷歌批準的設備上實施開發的難度。
如果大家正在使用任何一款谷歌API,同時嘗試著讓自己的應用程序運行在Kindle或者其它任何一個非谷歌AOSP版本之上:大驚喜!您的應用將直接損壞。谷歌的Android系統在目前的Android市場上占據極高比例,而開發商們所關注的無非是讓自己的應用程序變得更易用、運作效果更好并贏得更多客戶的青睞。谷歌API能幫大家實現這一切愿望,但帶來的副作用就是應用程序會對谷歌的應用許可產生強烈的依賴性。
谷歌地圖API
谷歌地圖API允許我們在自己的應用程序中使用谷歌的地圖數據。對于需要在地圖之上覆蓋對應天氣圖標或者顯示當前位置的旅行應用而言,這實在是一種便利之極的機制。惟一的問題在于,谷歌地圖是谷歌服務的一部分——而非Android的一部分。對地圖API的依賴將導致我們的應用程序無法在非谷歌批準的設備上正常工作。
為了應對這一難題,Amazon被迫從諾基亞手中弄到了地圖數據的使用許可并創建出一套可以正常使用的谷歌地圖API克隆方案。該公司甚至專門提供說明頁面,指導大家如何將自己的應用程序從谷歌地圖中遷移出來。再次強調,谷歌的宗旨在于讓開發商的開發工作在經過谷歌批準的設備上變得更輕松——同時要想盡一切辦法提高開發商在未經谷歌批準的設備上實施開發的難度。如果想要讓應用運行在Kindle設備上,我們就必須支持兩種不同的地圖API。
這對于Android的分支開發者來說無疑是種非常可怕的態勢,這一次倒霉的是Amazon,他們不得不在兩難之間做出選擇:要么無限期向諾基亞支付許可使用費、要么自己著手對整個地球進行測繪。Amazon還面臨著一大新難題,即跟上谷歌那輕盈的發展步伐:Amazon的地圖API只支持谷歌地圖API v1,但目前谷歌已經將API升級為v2。如果開發商在自己的應用程序中采用只有地圖v2 API支持的新功能,那么Amazon將無法實現同樣的效果。現在看來,要做的工作還有很多。
谷歌云消息
谷歌云消息(簡稱GCM)是在Android系統當中推送通知信息的最便捷途徑,但AOSP再一次與這一切無緣。GCM在I/O 2013大會上剛剛被正式歸入Play Services,現在它不僅能夠接收通知、同時也可以向上游推送消息。它還負責在不同設備之間進行通知內容同步。開發人員通常利用GCM向設備推送突發新聞、提醒應用程序有新數據到達或者實現信息同步。
盡管谷歌地圖在應用程序范圍內的使用頻率似乎并不太高,但事實上很多應用都需要借助地圖的推送信息完善自身功能與使用體驗。這項功能的重要程度讓Amazon不得不被迫對其進行復刻——否則云巨頭將在競爭中被徹底甩在后面。Amazon的版本名為“Amazon設備消息”,顧名思義,它只能作用于Amazon設備。與地圖API一樣,我們需要為這一小部分用戶付出大量精力從事額外工作與測試任務。GCM的每一項功能幾乎都無法在Amazon版本中直接找到——這意味著大家必須自己找到解決辦法。
位置API
在谷歌I/O 2013大會上,谷歌公司革新了Android位置API并將其納入Google Play Services。換句話來說,Android的頂級位置服務現在已經轉向閉源路線。通過之前提到的歷史發展軌跡,我們可以看到開源位置堆棧同樣會被徹底遺棄。此次新加入的功能包括Fused Location Provider,一種經過“完全重新編寫”的Android位置算法;Geofencing(允許我們在地圖上定義位置,并在用戶抵達該位置時觸發應用程序中的事件)以及Activity Recognition,即利用加速計數據與復雜的算法識別用戶正在步行、騎乘還是駕駛——這一切在無需開啟GPS的情況下即可實現。
此舉徹底讓地圖API與谷歌云消息淪為專有應用,因為這些功能需要由谷歌服務器提供功能支持。不過縱觀整套位置堆棧,我們會發現這是谷歌一步步從開源手中奪權的過程。現在大家有兩種方式來獲得位置功能:效果好、功耗低但閉源的谷歌方式;還有精度差、超費電的開源方式。
應用程序購買
如果開發商希望自己的應用能夠在Kindle上運行或者進入中國市場,恐怕只能想想其它的辦法了。這又是另一個問題,如果大家希望擁有一套可行的AOSP 分支方案,那就必須通過復刻來實現——這正是Amazon的做法,即推出自己的Amazon應用購買API。相比之下,仍然從屬于谷歌陣營的三星也顯得比較激進,曾在兩年之前推出過自己的應用程序購買API。
Play Games
Play Games是另一種專有API,而且確實解決了大量對于移動開發者們來說最為頭痛的難題。它能夠輕松訪問用戶賬戶、排行榜、成就、云進度、反盜版以及實時多人游戲(Android平臺)。最妙之處在于,它幾乎能與一切對象并行協作,包括Web應用、iOS以及其它Android平臺。好吧,又到了核心話題——除了AOSP,開源項目可不在Play Games的支持名單當中。這又是另一項第三方應用不得不嚴重依賴、備用Android版本則必須復刻才能獲取的要素。
Amazon推出了一系列游戲API,并將其統稱為“GameCircle”,不過它并不能像Amazon地圖API那樣作為Play Games的直接替代方案。開發商必須花時間自己鼓搗出一整套完全獨立的多人游戲方案。
通過支持iOS進一步鞏固鎖定效果
谷歌戰略中還包含著一套充滿天才構思但已經瀕臨邪惡邊緣的部分,也就是讓九成谷歌API同時支持iOS。現在大家不妨從開發商的立場出發,思考自己到底要不要使用谷歌的API:大部分谷歌解決方案都能提供堪稱業界最佳的實用性、功能性以及實施便攜性。谷歌同時支持兩大移動平臺,因此大部分潛在用戶群體都被涵蓋在其中。惟一的不足之處在于,谷歌堅決抵制Android 分支,而且任何AOSP 分支對于我們的目標設備而言都是一塊食之無味的雞肋。
大部分開發商可能會對谷歌API表示友好,那么接下來的問題在于,他們該如何面對Kindle以及其它Android 分支?開發商們在很大程度上需要依靠自己找到可以替代現有API的解決方案,但這類方案要么早已過時、要么無法與現有應用完美協作。如果其它解決方案無法完美取代現有機制,開發商就必須想辦法通過應用程序設計彌補可能無法正常生效的功能。與現有iOS與Android手中的用戶群體相比,這樣的目標客戶基礎實在太過渺小,我們需要認真考慮是否值得為此建立一套獨立的生態系統。為此投入的時間能取得相應回報嗎?面對這樣的狀況,大家恐怕也會選擇向Android 分支豎起中指、直接跳過額外工作以及復雜的問題解決流程,直接投身于轟轟烈烈的谷歌Android開發大軍。
三星不會改旗易幟
這里我們要驗證的是,為什么Amazon能夠脫離谷歌獨立生存而三星不行。這是因為Amazon采取的是直接復刻谷歌API的路線,而三星目前尚未得到太多依附于谷歌的第三方開發商的明確支持。就目前的情況看,三星短時間內根本不可能徹底拋開谷歌的生態系統——直到他們推出自己的地圖數據授權或者建立起一套云消息API。
Amazon在特立獨行的發展道路上走得還算順利,但這是一家誕生于互聯網的企業。服務器及軟件才是這家公司的強項,因此創建大量云服務對于他們并不是什么大不了的事情。相比之下,三星電子是一家電子企業——他們在血流中就缺乏創建云基礎設施并打造大量API的能力。因此,盡管Amazon很可能在未來幾年中依靠自家云服務平臺的支撐將移動競爭優勢整合進企業運營流程,三星仍然很難跨過橫亙于面前的這道技術溝壑。
三星確實取得了一點點進展。正如前文所提到,三星公司已經開發出屬于自己的應用購買SDK。有趣的是,他們還擁有一套廣告SDK——但廣告是真正能夠賺錢的業務。正因為如此,谷歌在廣告方面顯得非常大方,同時為Android、iOS、Android 分支甚至是Windows Phone提供支持。
谷歌的開放是“只能看、不能摸”的開放
如果一家公司認真考慮通過Android分支建立起足以向谷歌發起沖擊的競爭者,那么這篇文章中的全部內容無疑都頗具指導意義。即使如此,大家也才剛剛邁出萬里長征的第一步——接下來要做的是,為用戶提供一個從谷歌Android中脫離出來、轉而投向新Android分支懷抱的充足理由。
谷歌在內部打理著一切工作。這家公司基本上以免費方式獲取地圖以及其它全部云服務。任何想要追隨其發展腳步的廠商都不得不放棄谷歌核心項目名單中的一部分條目。Amazon被迫購買諾基亞地圖數據的授權許可,這就是個很典型的例子。谷歌在地圖服務中搭售廣告——這當然幫助其賺取了大量利潤——相比之下Amazon卻需要為每一位用戶所免費使用的地圖數據買單。這種完全不同的收入態勢讓Android 分支無時無刻不飽受折磨。谷歌的服務成本低到甚至能夠帶來盈余,而任何其它競爭對手都必須每月向特定企業支付許可使用費。
退一步講,即使某家公司成功打造出自己的Android 分支并在谷歌生態系統之外獲得了引人注目的成就,接下來面臨的就是無人愿意合作的窘境。幾乎每一家設備制造商都受到合約所限,無法接手新系統設備的生產任務。即使這套Android替代方案完美無瑕,對于OEM廠商而言,貿然脫離谷歌生態系統都既麻煩又危險——而天平的另一端只是一套前途未卜的新方案。
盡管Android確實“開放”,但這是一種“只能看、不能摸”的開放形式。我們可以為Android做出貢獻并使用其中的一小部分功能,但幾乎在每一個領域,想要在未經谷歌允許的前提下使用Android都會遭到極為猛烈的抵制。這一秒我們剛剛打算在Android上嘗試一點谷歌并未批準的東西,下一秒鐘整個世界就將轟然倒塌,只留下驚慌失措的我們獨自傷神。