Android 5.0 技術新趨勢

infoq發表於2014-12-26

  由於 Android 的版本分裂比較嚴重,整個新系統升級可能需要一兩年甚至更長時間。所以目前使用 Android 5.0 的大部分是喜歡嚐鮮的使用者,同時現在市場上能夠很好支援 Android 5.0 的應用又很少,如果開發者能捕捉這個機會,從這些使用者那裡得到更好的反饋,或者更好的證明機會,都是非常有價值的。

  在 Android 5.0 釋出之後,我認為有幾個地方可以讓開發者做得更好,比如可以建立一個更好看的應用,或者能夠解決在應用中最大的效能問題——電量消耗的問題,等等。同時 Android 5.0 也帶來了更多的可能性,讓開發者可以做出不一樣的應用,以及能夠在更多的裝置上部署服務。下面我分別介紹一下我對 Android 5.0 可能帶來的技術趨勢的看法。

 更美的應用——Material Design

  在 Android 5.0 的宣傳中強調最多的一個亮點就是「Material Design」,從設計語言來講,這個特點是能在將整個素材鋪平的同時還遵循一定的物理材質的需求。這樣的設計可以讓應用感覺更活潑、具有更豐富的顏色, 有無處不在的陰影,以及動畫效果更真實等等。對於技術來說,Material Design 解決了兩個非常大的問題,其一是「陰影」,它所有的陰影都是預設系統實現的——只要配置 Z 軸的高度,所有的陰影都可以通過系統預設實現。

  另一個是「動畫」,可以說 Android 5.0 將動畫應用到了各個角落,實際上在這方面 Android 做了相當多的技術工作,使這個效果不是簡單的貼圖,實現出來的效果有點像遊戲裡面的投影,也就是真實的投影效果。

  為了實現這些效果,Android 曾經嘗試過不同的方案,最後使用的方案是當 Z 軸比較矮的時候,使用一個「面光源」,相當於一面的光打下來,如果 Z 軸比較高的時候,可能會加一個「點光源」,儘可能使整個投影變得真實,當然它沒有辦法支援在圖形學中比較複雜的「光線追蹤」——連續的反射效果,因為有個 試驗結果是隻要開啟「光線追蹤」 10 秒就會導致手機變得滾燙,以現在的手機效能還沒有辦法很完美地支援。

  而在這一技術的背後有個發展過程,大約是在 2001 年的時候,Android 開始做硬體加速技術,它的計算同樣以硬體加速,會在 GPU 上進行差值計算,用以實現陰影特效,動畫也是同理。現在 Android 5.0 將動畫做到無所不在,比如給一個頁面做了陰影,陰影的抬升有動畫,介面的切換有動畫,每一次點選、每一次拖動、每一次滾動都有動畫。

  現在最典型的動畫是「水波紋」,現在 Android 5.0 上點任何東西都有一個水波漾起的動畫效果。當然,開發者也可以指定各種各樣的動畫,比如一些基於路徑的動畫和介面切換時的動畫,整個動畫的實現技術也是依 賴於 Android 在兩年前做的一個後臺的獨立渲染執行緒,它能夠實現非同步渲染這些動畫。

  對於老版本而言,如果想要實現類似的陰影效果或動畫效果,讓整個介面變得有動感,單靠自己的能力做是特別難的。Android 5.0 提供了所有的這些開發支援,只要用 Android 5.0 SDK,用一些支援包,就可以配上它的風格、調色盤、以及一部分控制元件,配置一些動畫,就可以很快地建設出一個特別有「Material Design」風格的介面。現在真正支援「Material Design」的應用還比較少,如果用這樣的方式來構建自己的產品,其實可以給那些偏 Geek 的使用者一個特別好的感覺。

 更省電的應用——Project Volta

  大家以前做 Android 開發的時候可能涉及最多的問題就是「為什麼你的應用那麼耗電?」其實整個耗電模型在 Android 模型裡的計算是非常複雜的。Volta 這個專案就是要在 Android 5.0 解決耗電問題。這次的解決辦法還是很特別的——就是給開發者提供了能力,如果開發者能夠很好利用這些能力,就能在系統上面跑得更快。Android 提供的能力是新的後臺任務系統,非常像 iOS 系統,可以配置一組觸發條件,比如網路變化、電量消耗到了什麼程度、裝置是不是進入了休眠狀態,這些東西可以觸發一個後臺任務,這個後臺任務的執行也是限 時的,如果在時限之內沒有完成,系統會將其取消,這個過程特別像 iOS 整個的機制。它可能取代了類似常駐後臺、定時任務或者需要更復雜的策略才能保持後臺執行的東西,實現更省電的需求。

  更重要的內容是 Project Volta 提供了一組除錯工具,因為以前可以在 Android 上面除錯記憶體、除錯介面等等,唯獨很難知道電量耗在哪兒了,這個除錯工具加上視覺化工具可以展現你的介面上各個元器件以及各個環節的耗電情況,例如在哪個 時間段的耗電量是最多的,這時候有什麼應用在執行,什麼裝置是大量耗電的。通過這樣的分析,能夠更好地瞭解應用為什麼耗電,幫助開發者解決問題。

 系統服務

  Screen Capturing

  每次 Android 新版本升級都伴隨著一件事就是將原來只有系統有的能力開放給了開發者,開發者可以用這些能力來建設不一樣的應用。 比如豌豆莢做過的一些嘗試,我們想做一些遊戲截圖、錄屏或者是一些 OCR的分析,目的是想分析圖片裡的一些的東西。這在 Android 老的版本里是不支援的,除非 Root 才能用的這樣的能力,但是新的系統服務已經支援了截圖和錄屏。這樣的話,如果發揮你的想象力,要做一些遊戲錄屏或者其他應用,這就提供了一個新的機會。

  App Usages

  應用的使用資訊也是一樣的,我們原來想知道手機上那個裝置使用者最喜歡用哪個應用,什麼時候用,這些資訊都沒有,現在 Android 5.0 提供了這樣的介面,開發者不僅可以知道使用者在各個應用上耗費的時間,甚至可以知道什麼時候用什麼時間,整個切換事件都是可以查到的,這些資訊原來也只有 Android自己知道,在這個版本里這些資訊全部開放給了開發者,這樣能夠更好地發揮開發者的想象。

  Recent Screen

  新的 Recent Screen 取代了原來的 Recent Tasks,特點是原來就像一個最近使用的應用列表,現在相當於最近使用的頁面列表。 對於豌豆莢來說,我們希望使用者不只是看到自己什麼時候用了豌豆莢,而是看到使用者在豌豆莢裡瀏覽了三個應用,可以隨時回到那三個應用裡面,類似這樣的功能。 其實這樣可以給開發者提供一個更好的使用者入口,讓使用者回到你的應用時更方便,或者能力更強。

 更多裝置支援

  Android 5.0 在更多裝置上都有了支援,不僅在了手機上,現在可以伴隨著Android Wear、Android TV、Android Auto,這三個現在都有 SDK ,整個發展狀態還都比較好。

  Android Wear 已經有了很多 App,Android TV 上也有很多遊戲和應用,Android Auto 釋出了第一版SDK。比如說在 Android 5.0 裡面增強了通知欄,使用者看到手機上是一個普通的通知欄,但同樣的通知欄到手錶上去看,比如開啟 Android Wear,發現可以上下翻動、左右翻動郵件,在這樣的裝置上能獲得一個更好的體驗,同樣它提供了 TV input Framework (TIF) 框架。

  比如對於流媒體來說,可以非常快速地把內容部署在 Android TV 上,開發者做一個 Android TV 的 App,使用者可以在 Android TV 上用這樣的內容。

  同樣,通過新的 MediaPlay Session 介面,可以方便地把使用者手機上的流媒體放到汽車上,可以實現一進汽車就自動播放、在汽車的車載系統上控制手機的內容,這些新的介面其實都是提供了很多新的 機會。 現在這樣的 App 還偏少,比如目前看 Android Wear 的 App 可能做得最多的就是賣各種各樣的錶盤,實際上這個方面還有很多的可能性,當然它是一個特別新的領域,存在著一定的未知性,如果現在看這樣的機會,可能給你 提供的是很多新的產品機會。

  以上就是我感覺目前 Android 5.0 對於移動開發需要關注的點,總體來說,如果需要做一個新產品,開發者需要看到一些新的技術可能性,看到一些新的技術的趨勢,希望這個分享能夠對從事開發的朋友們有所幫助。

 作者簡介

  範懷宇,豌豆莢應用平臺技術負責人。範懷宇 2011 年初加入豌豆莢,先後負責過豌豆莢 Windows 2.0 版本、豌豆莢雲服務等業務,目前負責豌豆莢應用平臺和基礎技術相關業務。範懷宇長期專注於 Android 相關技術的研究,著有《Android 開發精要》 一書。

相關文章