簡體   English   中英

Android APK編譯為ART運行時和dalvik運行時

[英]Android apk compile to ART runtime and dalvik runtime

Google在Android 4.4中添加了新的ART運行時。 如何將我的APK定位到ART運行時和Dalvik運行時?

此更改對開發人員沒有影響。 您的應用程序保持完全相同,無所事事。 只需確保您以API 19為目標即可,以便KitKat用戶可以使用您的應用。 他們將在手機中決定是否要使用ART或Dalvik。

現在這是一個老問題,但非常關鍵。 我今天確認,我所有的應用都在Nexus-x平板電腦上使用ART + Android-5破解。 ART會執行更嚴格的JNI檢查,因此,如果您的應用程序使用Java加本地代碼,那么從Dalvik遷移到ART可能會中斷應用程序的運行。 對我來說,這是一個完整的表演。 我在Google Store中有6個應用程序,但現在所有這些應用程序都在運行Android 5.x的Nexus設備上失敗,但是它們在所有4.xx(Kitkat)系列設備上都能正常運行。 這是最令人沮喪的。 我將瀏覽該網站上所有的ART / Dalvik問題和答案。 ART和Android-5.x是非常重大的變化,因此這里的問題是“我如何將我的apk定位到Dalvik和ART?” 是一個關鍵且非常關鍵的問題。 時間已經證明,給出的建議“對開發人員沒有區別”的回答顯然是錯誤的。 當然,就我們而言。

記錄了兩個特定的問題,我引用“在Android運行時(ART)上驗證應用行為”的內容:

1)“正在檢查JNI代碼是否存在垃圾回收問題ART在Android開源項目(AOSP)上正在開發壓縮垃圾回收器。一旦使用壓縮垃圾回收器,對象可能會移動到內存中。如果使用C / C ++代碼不會執行與壓縮GC不兼容的操作。我們對CheckJNI進行了增強,以識別某些潛在問題(如ICS中的JNI本地參考更改所述)。” 換句話說,新的ART內存管理模型可能會破壞您現有的(和可操作的)本機代碼。

2)“錯誤處理ART的JNI在Dalvik沒有的許多情況下會引發錯誤。”。

以下內容提供了對某些會導致Android 5.x ART引發錯誤的問題的有限解釋: http : //developer.android.com/guide/practices/verifying-apps-art.html#JNI_Issues

通過解鎖引導加載程序,擦除設備內存並安裝系統映像,當前正在運行ART和5.x且面向非運行應用的Android設備的用戶中采用的前向兼容性解決方案已降級為Android 4.4.4。如果是運行Nexus系列平板電腦的用戶,則為“錘頭”。 對於Samsung平板電腦,可以在以下位置獲得教程: http : //forums.androidcentral.com/samsung-galaxy-s5/489071-tutorial-downgrade-samsung-galaxy-s5-5-0-4-4-kitkat.html

dalvikART只是Android中的運行時 作為應用程序開發人員,您不必關心這些差異。 您只需關心應用程序的API級別,即可描述Android OS版本的依賴性。

而在Android 4.4系統, 技術只是一個發展這是不是默認的運行時,即使發行說明中描述了ART將使應用程序使用較少的內存和快速運行。 如果要查找其他版本,可以等待下一個Android版本。 在開源中,我發現ART一直在設置默認的運行時選擇。

對於大多數應用程序,ART都可以正常工作。

但是,它不是100%兼容的,因為在Dalvik上運行的某些功能可能在ART上不起作用

請訪問此鏈接以獲取更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM