Android 5.0 技術(shù)新趨勢
由于 Android 的版本分裂比較嚴重,整個新系統(tǒng)升級可能需要一兩年甚至更長時間。所以目前使用 Android 5.0 的大部分是喜歡嘗鮮的用戶,同時現(xiàn)在市場上能夠很好支持 Android 5.0 的應(yīng)用又很少,如果開發(fā)者能捕捉這個機會,從這些用戶那里得到更好的反饋,或者更好的證明機會,都是非常有價值的。
在 Android 5.0 發(fā)布之后,我認為有幾個地方可以讓開發(fā)者做得更好,比如可以建立一個更好看的應(yīng)用,或者能夠解決在應(yīng)用中最大的性能問題——電量消耗的問題,等等。同時 Android 5.0 也帶來了更多的可能性,讓開發(fā)者可以做出不一樣的應(yīng)用,以及能夠在更多的設(shè)備上部署服務(wù)。下面我分別介紹一下我對 Android 5.0 可能帶來的技術(shù)趨勢的看法。
更美的應(yīng)用——Material Design在 Android 5.0 的宣傳中強調(diào)最多的一個亮點就是「Material Design」,從設(shè)計語言來講,這個特點是能在將整個素材鋪平的同時還遵循一定的物理材質(zhì)的需求。這樣的設(shè)計可以讓應(yīng)用感覺更活潑、具有更豐富的顏色, 有無處不在的陰影,以及動畫效果更真實等等。對于技術(shù)來說,Material Design 解決了兩個非常大的問題,其一是「陰影」,它所有的陰影都是默認系統(tǒng)實現(xiàn)的——只要配置 Z 軸的高度,所有的陰影都可以通過系統(tǒng)默認實現(xiàn)。
另一個是「動畫」,可以說 Android 5.0 將動畫應(yīng)用到了各個角落,實際上在這方面 Android 做了相當多的技術(shù)工作,使這個效果不是簡單的貼圖,實現(xiàn)出來的效果有點像游戲里面的投影,也就是真實的投影效果。
為了實現(xiàn)這些效果,Android 曾經(jīng)嘗試過不同的方案,最后使用的方案是當 Z 軸比較矮的時候,使用一個「面光源」,相當于一面的光打下來,如果 Z 軸比較高的時候,可能會加一個「點光源」,盡可能使整個投影變得真實,當然它沒有辦法支持在圖形學(xué)中比較復(fù)雜的「光線追蹤」——連續(xù)的反射效果,因為有個 試驗結(jié)果是只要開啟「光線追蹤」 10 秒就會導(dǎo)致手機變得滾燙,以現(xiàn)在的手機性能還沒有辦法很完美地支持。
而在這一技術(shù)的背后有個發(fā)展過程,大約是在 2001 年的時候,Android 開始做硬件加速技術(shù),它的計算同樣以硬件加速,會在 GPU 上進行差值計算,用以實現(xiàn)陰影特效,動畫也是同理。現(xiàn)在 Android 5.0 將動畫做到無所不在,比如給一個頁面做了陰影,陰影的抬升有動畫,界面的切換有動畫,每一次點擊、每一次拖動、每一次滾動都有動畫。
現(xiàn)在最典型的動畫是「水波紋」,現(xiàn)在 Android 5.0 上點任何東西都有一個水波漾起的動畫效果。當然,開發(fā)者也可以指定各種各樣的動畫,比如一些基于路徑的動畫和界面切換時的動畫,整個動畫的實現(xiàn)技術(shù)也是依 賴于 Android 在兩年前做的一個后臺的獨立渲染線程,它能夠?qū)崿F(xiàn)異步渲染這些動畫。
對于老版本而言,如果想要實現(xiàn)類似的陰影效果或動畫效果,讓整個界面變得有動感,單靠自己的能力做是特別難的。Android 5.0 提供了所有的這些開發(fā)支持,只要用 Android 5.0 SDK,用一些支持包,就可以配上它的風格、調(diào)色板、以及一部分控件,配置一些動畫,就可以很快地建設(shè)出一個特別有「Material Design」風格的界面。現(xiàn)在真正支持「Material Design」的應(yīng)用還比較少,如果用這樣的方式來構(gòu)建自己的產(chǎn)品,其實可以給那些偏 Geek 的用戶一個特別好的感覺。
更省電的應(yīng)用——Project Volta大家以前做 Android 開發(fā)的時候可能涉及最多的問題就是「為什么你的應(yīng)用那么耗電?」其實整個耗電模型在 Android 模型里的計算是非常復(fù)雜的。Volta 這個項目就是要在 Android 5.0 解決耗電問題。這次的解決辦法還是很特別的——就是給開發(fā)者提供了能力,如果開發(fā)者能夠很好利用這些能力,就能在系統(tǒng)上面跑得更快。Android 提供的能力是新的后臺任務(wù)系統(tǒng),非常像 iOS 系統(tǒng),可以配置一組觸發(fā)條件,比如網(wǎng)絡(luò)變化、電量消耗到了什么程度、設(shè)備是不是進入了休眠狀態(tài),這些東西可以觸發(fā)一個后臺任務(wù),這個后臺任務(wù)的執(zhí)行也是限 時的,如果在時限之內(nèi)沒有完成,系統(tǒng)會將其取消,這個過程特別像 iOS 整個的機制。它可能取代了類似常駐后臺、定時任務(wù)或者需要更復(fù)雜的策略才能保持后臺運行的東西,實現(xiàn)更省電的需求。
更重要的內(nèi)容是 Project Volta 提供了一組調(diào)試工具,因為以前可以在 Android 上面調(diào)試內(nèi)存、調(diào)試界面等等,唯獨很難知道電量耗在哪兒了,這個調(diào)試工具加上可視化工具可以展現(xiàn)你的界面上各個元器件以及各個環(huán)節(jié)的耗電情況,例如在哪個 時間段的耗電量是最多的,這時候有什么應(yīng)用在運行,什么設(shè)備是大量耗電的。通過這樣的分析,能夠更好地了解應(yīng)用為什么耗電,幫助開發(fā)者解決問題。
系統(tǒng)服務(wù)Screen Capturing每次 Android 新版本升級都伴隨著一件事就是將原來只有系統(tǒng)有的能力開放給了開發(fā)者,開發(fā)者可以用這些能力來建設(shè)不一樣的應(yīng)用。 比如豌豆莢做過的一些嘗試,我們想做一些游戲截屏、錄屏或者是一些 OCR的分析,目的是想分析圖片里的一些的東西。這在 Android 老的版本里是不支持的,除非 Root 才能用的這樣的能力,但是新的系統(tǒng)服務(wù)已經(jīng)支持了截屏和錄屏。這樣的話,如果發(fā)揮你的想象力,要做一些游戲錄屏或者其他應(yīng)用,這就提供了一個新的機會。
App Usages應(yīng)用的使用信息也是一樣的,我們原來想知道手機上那個設(shè)備用戶最喜歡用哪個應(yīng)用,什么時候用,這些信息都沒有,現(xiàn)在 Android 5.0 提供了這樣的接口,開發(fā)者不僅可以知道用戶在各個應(yīng)用上耗費的時間,甚至可以知道什么時候用什么時間,整個切換事件都是可以查到的,這些信息原來也只有 Android自己知道,在這個版本里這些信息全部開放給了開發(fā)者,這樣能夠更好地發(fā)揮開發(fā)者的想象。
Recent Screen新的 Recent Screen 取代了原來的 Recent Tasks,特點是原來就像一個最近使用的應(yīng)用列表,現(xiàn)在相當于最近使用的頁面列表。 對于豌豆莢來說,我們希望用戶不只是看到自己什么時候用了豌豆莢,而是看到用戶在豌豆莢里瀏覽了三個應(yīng)用,可以隨時回到那三個應(yīng)用里面,類似這樣的功能。 其實這樣可以給開發(fā)者提供一個更好的用戶入口,讓用戶回到你的應(yīng)用時更方便,或者能力更強。
更多設(shè)備支持Android 5.0 在更多設(shè)備上都有了支持,不僅在了手機上,現(xiàn)在可以伴隨著Android Wear、Android TV、Android Auto,這三個現(xiàn)在都有 SDK ,整個發(fā)展狀態(tài)還都比較好。
Android Wear 已經(jīng)有了很多 App,Android TV 上也有很多游戲和應(yīng)用,Android Auto 發(fā)布了第一版SDK。比如說在 Android 5.0 里面增強了通知欄,用戶看到手機上是一個普通的通知欄,但同樣的通知欄到手表上去看,比如打開 Android Wear,發(fā)現(xiàn)可以上下翻動、左右翻動郵件,在這樣的設(shè)備上能獲得一個更好的體驗,同樣它提供了 TV input Framework (TIF) 框架。
比如對于流媒體來說,可以非常快速地把內(nèi)容部署在 Android TV 上,開發(fā)者做一個 Android TV 的 App,用戶可以在 Android TV 上用這樣的內(nèi)容。
同樣,通過新的 MediaPlay Session 接口,可以方便地把用戶手機上的流媒體放到汽車上,可以實現(xiàn)一進汽車就自動播放、在汽車的車載系統(tǒng)上控制手機的內(nèi)容,這些新的接口其實都是提供了很多新的 機會。 現(xiàn)在這樣的 App 還偏少,比如目前看 Android Wear 的 App 可能做得最多的就是賣各種各樣的表盤,實際上這個方面還有很多的可能性,當然它是一個特別新的領(lǐng)域,存在著一定的未知性,如果現(xiàn)在看這樣的機會,可能給你 提供的是很多新的產(chǎn)品機會。
以上就是我感覺目前 Android 5.0 對于移動開發(fā)需要關(guān)注的點,總體來說,如果需要做一個新產(chǎn)品,開發(fā)者需要看到一些新的技術(shù)可能性,看到一些新的技術(shù)的趨勢,希望這個分享能夠?qū)氖麻_發(fā)的朋友們有所幫助。
作者簡介范懷宇,豌豆莢應(yīng)用平臺技術(shù)負責人。范懷宇 2011 年初加入豌豆莢,先后負責過豌豆莢 Windows 2.0 版本、豌豆莢云服務(wù)等業(yè)務(wù),目前負責豌豆莢應(yīng)用平臺和基礎(chǔ)技術(shù)相關(guān)業(yè)務(wù)。范懷宇長期專注于 Android 相關(guān)技術(shù)的研究,著有《Android 開發(fā)精要》 一書。
相關(guān)文章:
