15
| 本文作者: 六爺 | 2015-07-27 08:30 |
為了讓普通人理解相對論,愛因斯坦曾舉過一個例子:“當一個男人與美女對坐1小時,會覺得似乎只過了1分鐘;但如果讓他坐在熱火爐上1分鐘,卻會覺得似乎過了不止1個小時。這就是相對論?!?/p>
其實將這個事例引用到手機上也非常貼切,有時候iPhone在冰冷的數字上并沒有比Android手機更快,但用戶就是會感覺它更加流暢。原因是合理的過渡動畫會給用戶造成了一種錯覺,明明是相同的結果,用戶體驗則是云泥之別。
錘子手機在這一點上和iPhone的追求是一致的,所以當雷鋒網編輯表明來意時,錘子科技的設計師肖鵬笑道:“這些你都知道了,還采訪我干嘛。”
知道的只是表象,因此有人(王自如)會認為“錘子手機的所有功夫都做在了表面”,至于這份表面功夫做到了什么程度,用錘子科技自己的話就是“流暢得完全不像一臺Android手機”。
透過現象看本質,探討產品的本質顯然要比立場鮮明的爭執(zhí)更有價值,為此雷鋒網編輯采訪了錘子科技負責系統(tǒng)優(yōu)化的軟件工程師和UI設計師,以下是對話實錄(有刪減):

雷鋒網:影響手機流暢性的因素有哪些?
錘子科技:三部分:硬件的處理能力,軟件和UI設計。Framework提供了絕大多數的功能,所以一個應用開發(fā)的時候,基本上是從Framework這里開始的。Android系統(tǒng)做得比較大,同時Google并沒有在Framework的每個角落都做得特別好。
我們在Framework層做了很多優(yōu)化,基本上包括以下幾點:系統(tǒng)級別的資源預加載;針對專門的keys做一些修改,比如增加一些額外的接口,因為它原有的接口并不是很有效率;另外,針對view層級和窗口我們也會有針對性的修改。
如果應用對性能有一些極致的要求,比如說我們的Launcher(桌面),我們會用OpenGL自己去處理繪圖,還有一些復雜的運算放到Native層,不能放到Java層去做。應用還有一些常見的問題,就是它的view層次太復雜,會影響效率。Android的繪圖線程要注意效率。另外繪圖線程要注意效率,出現耗時操作時要異步處理。
雷鋒網:錘子手機的權限管理在使用中好像還沒有達到理想的效果。難點在哪?
錘子科技:這是安卓系統(tǒng)的通病,也是我們要著力解決的問題。Android太復雜了,并且它對應用非常友好,導致權限被濫用。其實Smartisan OS對應用的限制還是比較多的,這也是我們未來系統(tǒng)優(yōu)化的重點工作。
雷鋒網:不同廠商選擇同樣的元器件,流暢性上體現出來的差別是如何造成的?
錘子科技:一方面是軟硬件的優(yōu)化,一方面是UI視覺效果上的優(yōu)化。其實對硬件的優(yōu)化工作,大部分是芯片廠商在做,手機廠商只能做一些“邊角”的事情。在我看來,對上層應用的優(yōu)化還是最有效的,不過對應用的修改越多,涉及下面Framework的就越多,尤其是UI差異導致邏輯與原生Android不同時,原生系統(tǒng)就沒有優(yōu)化得那么好,這時候需要我們去優(yōu)化Framework,甚至系統(tǒng)底層。
雷鋒網:Smartisan OS的動畫效果很多,這樣的話會不會反過來影響手機的性能?
錘子科技:做得好的話就不會,Smartisan OS是個非常正面的例子。首先對性能和內存我們有常規(guī)的監(jiān)控,一旦發(fā)現增加某個Feature會造成性能下降,我們會立刻處理。另外,我們在驗收的時候有一項是性能指標,這個指標沒過的話,是不可能發(fā)布的。當這樣操作多次之后,工程師也就慢慢形成習慣,他在做某個Feature的時候,就會考慮性能和內存。
雷鋒網:Smartisan OS如何避免(Android手機)非規(guī)律性的卡頓?
錘子科技:Android是個分時多任務系統(tǒng),并不是實時的。這樣的話,當前臺任務很重時正好趕上后臺在跑什么東西,它就會卡。除了打好系統(tǒng)基礎以外,我們會通過一些極致的測試去發(fā)現它,然后發(fā)現一個解決一個。
還有一些問題其實不是手機的性能不夠,而是底層顯示系統(tǒng)的同步操作導致的。顯示系統(tǒng)是分步的,其中有一些又是分兩條線去完成,兩條線會在一些點上相互等待來確保它的畫面效果沒有問題。當它在最終的一個點的等待上出了問題時,其實這個等待是可以優(yōu)化的。當然,這種優(yōu)化會動到(顯示)系統(tǒng)很深的層次,有些器件的操作是有優(yōu)化空間的。
比如自從(Android)4.0之后,Android系統(tǒng)每一幀16ms的繪圖是嚴格執(zhí)行的,所以當兩個窗口切換的時候,切換動畫超過16ms的話,它就只能等到下一幀。如果錘子手機出現了這個問題,我們會集中精力將它做到16ms以內,這樣卡頓就解決了。
雷鋒網:有人說錘子手機將很多的優(yōu)化工作都做在表面,如何回應這種觀點?
錘子科技:第一,他們只看到了表面,第二,如果只需要優(yōu)化表面就能達到我們的目標的話,我們也很樂于止步于此。因為大家的時間都很寶貴,那樣的話我們可以做更多的事情,但了解軟件的人都知道這是不可能的。
雷鋒網:Smartisan OS設計動畫的規(guī)則是什么?實現流程是怎樣的?
錘子科技:設計的前提是遵循物理直覺,做出來的動畫效果一定要符合人的感官。另外,那些過渡動畫的效果必須和全局保持一致。就是說在不同頁面進行相同操作,它的實現方式應該是一樣的。
當設計師產生一個想法時,我們會讓動畫工程師將效果快速可視化,然后將不同幀率的方案交給老羅,讓他做選擇。當他選擇了其中一種時,再交給工程師去具體實現。
雷鋒網:在iPhone上打開應用,始終是從它所在的位置擴散到全屏,而錘子手機則始終是從下至上填充,相比之下,前者更符合物理直覺吧?
錘子科技:我現在能和你說的是,我們在做的那個翻轉方案會更符合物理直覺。這個方案其實我們一直在做,T1上沒有是因為我們當時還沒做到足夠好。而當我們采用這種方案時,一定也會保證它在速度上也比之前的方案更快。
雷鋒網:那很多改動其實都是憑設計師的直覺。
錘子科技:這就是別人做不到的,也只有這個團隊能保持這個直覺。
雷鋒網:哪些細節(jié)能提高用戶對手機流暢性的感知?
錘子科技:比如在錘子手機上打開每個(官方)APP的時候,都會預加載一張圖片,這張圖片和打開APP的第一幀畫面是一樣的,所以給人一種零延遲的感覺。整個過程非??欤脩糇匀粫X得非常流暢。另外,在同樣的時間完成同一個操作,應該盡可能減少步驟。
雷鋒網:減少步驟很難嗎?
錘子科技:難,有時候要動到系統(tǒng)底層。當初我們發(fā)布ROM的時候就發(fā)現,其實很多點子大家都有想到。沒做的原因是改動的成本很高,同時他們認為最終的效果對用戶來說無關緊要。而在我們看來,正是這些小細節(jié)支撐了Smartisan OS的獨特性。

跟造物者對話,發(fā)現產品閃光點——「唯物」是雷鋒網打造的產品報道品牌(公眾號:okweiwu)。我們關心一個產品是什么、從哪里來、要到哪里去。希望同樣在做硬件的業(yè)者,讀過「唯物」的文章,能夠有所啟迪。
如果你也想跟我們聊聊你的產品,請發(fā)介紹到 chanpin@leiphone.com,24小時內必復。
雷峰網原創(chuàng)文章,未經授權禁止轉載。詳情見轉載須知。