【问题标题】:How ART Virtual Machine is going to affect existing applications?ART 虚拟机将如何影响现有应用程序?
【发布时间】:2013-11-14 14:10:11
【问题描述】:
到目前为止,这不是编程问题或问题(至少目前对我来说不是),但我认为讨论这个问题可能很有用,这可以帮助我们防止可能遇到的进一步问题。
自从我将 Nexus 5 中的虚拟机从 Dalvik 更改为 ART 后,我的设备中当前拥有的应用程序开始出现一些崩溃。我首先通过 WhatsApp 应用程序实现了这一点。它停止工作。
我开始测试我所有的应用程序与 ART 的兼容性。到目前为止,我没有发生任何崩溃,但我想知道如果我们需要做些什么来使我们的应用程序与 ART 更兼容并提高效率?它将如何影响我们现有的应用程序?
【问题讨论】:
标签:
android
virtual-machine
dalvik
【解决方案1】:
Robert Love 在 Quora 回答中提供了some details。
根据我所见,我猜测 ART 不兼容的主要原因将是动态 DEX 生成,如果 ART 不支持的话。随着 ART 切换到提前 (AOT) 编译模型,而不是 JIT,ART 可能不支持生成 DEX 指令的应用程序。这也可能是正在进行的 ART 的限制,将在以后的更新中纠正。
可以想象,引用的“改进的垃圾收集”可能会引入不兼容性,但这会让我感到惊讶。更有可能的是,GC 行为的变化可能会暴露现有的应用程序逻辑缺陷,这些缺陷被以前的 GC 方案所掩盖。
当然,随着时间的推移,可能还会出现其他特定于 ART 的问题。
话虽如此,请记住,ART 是一项正在进行的工作。我的猜测是,谷歌发布它的主要目的是为 WhatsApp 和类似的大型合作伙伴提供一个基于 ART 的运行时环境。如果您尝试运行您的应用程序,并且您的应用程序在 ART 上中断,则可能值得进行一些调查。但是,如果您的应用在 ART 上表现良好,那么它很可能会保持良好状态。
【解决方案2】:
目前在使您的应用程序兼容方面没有什么可做的,ART 是一项正在开发中的工作,因此某些应用程序会出现问题,当 ART 变得标准化时,它将简单地“工作”,任何与这一事实相矛盾的是,Google 将发布相应修复的文档。