Android 台灣中文網
標題: X86如何解決Android應用兼容性問題? [打印本頁]
作者: aas54432 時間: 2013-4-15 05:52
標題: X86如何解決Android應用兼容性問題?
前幾日拿到聯想K900,這款機器無論是硬件還是軟件都十分不錯,工業設計也很強。但很多網友仍然關心一個問題,X86的應用兼容性怎麼樣?在他們看來,兼容性很大程度上影響他們是否購買這款機器。
經過測試,X86的應用兼容性已經做的十分完善,英特爾此前宣布可達95%的兼容性不假,大家大可放下心裡包袱。不過英特爾是如何做到的,這背後的原因很多人並不知道。恰好在IDF上,筆者遇到了一位英特爾軟件部門工程師,他通俗的講述了其中的原因。
其實問題主要出在指令集上,X86使用的是SSE指令集,而ARM是用的NEON指令集,兩者差異導致了應用不兼容。不過好在Android的大部分應用運行在Dalvik虛擬機之上,並不依賴CPU架構,因此這些應用可以很好地跑在X86上。
支持Dalvik的程序佔據大多數,但仍然會有一些應用繞過Dalvik。比如需要更高的性能或者需要硬件的支持的時候,前者通常是大型遊戲,後者則是結合了感應器或者電源管理等硬件相關的應用。Angry Bird兩者都不佔,所以可以兼容,賽車遊戲兩者都需要,所以大多不兼容。
這些稍顯複雜的應用數量並不低,且用戶需求強烈。為了快速解決這些問題,英特爾試圖通過技術去完善,開發了一種轉換技術“Houdini”。“Houdini”相當於一個中間層,可以讓原本不兼容的應用跑在X86上。但這種強行結合的技術運行起來往往效率不高,容易出問題,且會增加2%左右的耗電。
從源頭解決問題顯然是更好的辦法,儘管速度會慢一下。自從英特爾和Android合作之後,英特爾就提供了X86的NDK。開發者只需在應用中支持這個NDK,應用在提交時會自動生成2個App,設備在下載時會根據自己的架構下載合適的App。這種方法並不難,效果也最好,難的是如何讓眾多開發商甘願合作。所以英特爾以及手機廠商會去和應用廠商挨個合作,督促其支持X86的NDK。
現在已經有很多大型遊戲支持X86架構,包括極品飛車、Epic Citadel 等。用戶大可不必擔心,因兼容性引起的影響已經十分微小了。
況且用戶日常使用最頻繁的恰恰是那些十分簡單、無需重新適配的應用。由於Android使用虛擬機,應用性能常遭人詬病,但是這樣做的好處是,應用可以輕鬆跨平台運行。如果沒有這個,那對英特爾來說將是災難性的,從這點來看,英特爾還是十分幸運的。