Android apk编译为ART运行时和dalvik运行时

时间:2013-11-13 11:03:31

标签: android dalvik art-runtime

Google在Android 4.4中添加了一个新的ART运行时。如何将我的apk定位到ART运行时和Dalvik运行时?

4 个答案:

答案 0 :(得分:5)

此更改对开发人员没有影响。你的应用程序保持完全相同,无处可做。只需确保您定位API 19,以便您的应用可供KitKat用户使用。他们将在手机中决定是否要使用ART或Dalvik。

答案 1 :(得分:1)

这是一个古老的问题,但非常关键。我今天证实,我的所有应用程序都在Nexus-x平板电脑上打破了ART + Android-5。 ART会对JNI进行更严格的检查,因此如果您的应用使用java加本机代码,从Dalvik迁移到ART可能会破坏应用操作。对我来说,这是一个完整的停止。我在谷歌商店中有6个应用程序,现在在运行Android 5.x的Nexus设备上都失败了,但它们在所有4.x.x(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系列平板电脑的情况下安装系统映像" Hammerhead"对于三星平板电脑,可在以下网址获得教程:http://forums.androidcentral.com/samsung-galaxy-s5/489071-tutorial-downgrade-samsung-galaxy-s5-5-0-4-4-kitkat.html

答案 2 :(得分:0)

dalvik ART 只是Android中的运行时。作为应用程序开发人员,您不必关心这些差异。您需要关心的只是您的应用程序的API级别,它描述了Android操作系统版本的依赖性。

在Android 4.4中, ART 只是默认运行时的开发,即使描述 ART 的发行说明将会生成应用程序使用更少的内存并快速运行如果您想找到不同的,可以等待Android的下一个版本。在opensource中,我发现 ART 一直在设置默认的运行时选择。

答案 3 :(得分:0)

对于大多数应用程序,ART都可以正常工作。

但是,它不是100%兼容,因为在Dalvik上工作的东西可能不适用于ART

请访问此link了解详情。