2014-06-20 24 views
3

我已經看到很多報道(流言),很快Android就會從Dalvik切換到ART,因爲它是默認運行時。我沒有真正意識到這是什麼意思,我猜測運行時(類似?)就像操作系統一樣。對於ART vs Dalvik,我需要以不同方式編寫代碼嗎?

我的應用程序並沒有做任何特別特殊/獨特的事情,主要是它使HTTP數據請求,並使用幾次LocationListeners。

在我讀過的關於傳聞中的一些文章中,我看到一些人沿着「我喜歡ART,如果X應用程序支持它,現在就使用它」這樣的話來說。 (我記得提到的一個應用程序是Xposed)

我已將我的手機切換到ART,並且我的應用似乎工作正常,所以我猜測標題問題的答案是否定的,但我很好奇至於如何Xposed應用程序不兼容。他們做了什麼(或沒做完)讓他們的應用程序無法在ART中工作?

+3

應用程序應該繼續工作而不用更改。如果他們不這樣做,那麼Android/Google將會集體投入自己的腳步。 – 323go

+0

Xposed是一個相當專業的應用程序。基本上使用代碼注入來定製系統級功能,而無需安裝新的ROM。 「正常」的應用程序很可能會遇到ART問題,但您可以在https://developer.android.com/guide/practices/verifying-apps-art.html – matiash

回答

3

ART是Android應用程序的不同運行時。所有android應用程序都在虛擬機內運行,就像Java代碼中運行的Java代碼一樣。

傳統上,當你編譯一個Android應用程序時,它會編譯成Dalvik字節碼,設計成在Dalvik運行時(虛擬機)中運行。

儘管在Android Kitkat中,Google引入了一個名爲Android Runtime或ART的新實驗性運行時。這是一個不同的虛擬機,它重新實現了Android應用程序的運行時,以幫助解決原始設計中的一些基本缺陷。

ART提供several advantages過的Dalvik:

  • 名列前茅的時間(AOT)編譯
  • 改進垃圾收集
  • 開發和調試改進
    • 支持採樣分析器
    • 支持用於更多調試功能
    • 改進的d在異常和崩潰iagnostic詳細報告

還應該有東西像DEX limit幫助。

至於你的問題,你不需要做任何開發人員。谷歌已經明白地表示,「Dalvik必須保持默認的運行時間,否則您有可能違反Android實施和第三方應用程序」。谷歌已經在Google I/O 2014上宣佈,在Android「L」版本以及更高版本中,ART將取代Dalvik。

+0

Ahh好的,謝謝:)看到清單。我將通讀您現在發佈的鏈接。 –

+0

關於DEX限制請參閱:http://stackoverflow.com/questions/21490382/does-the-android-art-runtime-have-the-same-method-limit-limitations-as-dalvik –

0

ART現在已經取代了Nexus設備上的Dalvik,而我在Google Store中提供的六個現有應用程序現在都無法運行。我看到有關ART導致應用失敗的多個問題列表。我懷疑「新的和改進的」內存管理垃圾回收是其中很大一部分的根本原因。我的三星設備沒有選擇ART而不是Dalvik的選項,所以我現在只能在Android 5.x下獲得有關故障的用戶報告。據報道,本地接口的實現明顯較少寬容,並且需要不同的且更明確定義的全局指針,其中以前的本地指針將正確操作。這意味着任何使用本機代碼和JNI(本地接口)的人都可能需要重新編寫應用程序,或者使用更穩定的系統架構來定位不同的平臺。

相關問題