ART 虚拟机将如何影响现有应用程序


到目前为止

,这不是一个编程问题或问题(至少目前对我来说不是),但我认为讨论这个问题可能是有用的,这可以帮助我们防止我们可能遇到的进一步问题。

自从我在Nexus 5中将虚拟机从Dalvik更改为ART,我开始使用设备中的应用程序时出现一些崩溃。我第一次意识到这一点是用WhatsApp应用程序实现的。它停止工作。

我开始测试我所有的应用程序与ART的兼容性。到目前为止,我没有任何崩溃,但我想知道我们是否需要做点什么才能使我们的应用程序与 ART 更兼容并提高效率?它将如何影响我们现有的应用程序?

Robert Love提供了一些关于Quora答案的细节。

根据我所看到的,我的猜测是,如果ART不支持,ART不兼容的主要原因将是即时DEX生成。当 ART 切换到提前 (AOT) 编译模型而不是 JIT 时,ART 可能不支持生成 DEX 指令的应用。这也有可能是正在进行的 ART 的限制,将在以后的更新中得到纠正。

可以想象,引用的"改进的垃圾收集"可能会引入不兼容性,但这会让我感到惊讶。更有可能的是,GC 行为的更改可能会暴露被以前的 GC 方案掩盖的现有应用程序逻辑缺陷。

当然,随着时间的推移,可能会出现其他特定于 ART 的问题。

话虽如此,请记住,ART是一项正在进行的工作。我的猜测是,谷歌发布它主要是为了提供一个专门为WhatsApp和类似的大型合作伙伴提供ART驱动的运行时环境。如果您尝试运行您的应用程序,并且您的应用程序在 ART 上中断,则可能值得进行一些调查。但是,如果您的应用在 ART 上运行良好,则它可能会保持正常。

目前没有什么可做的,使您的应用程序兼容,ART是一项正在开发中的工作,因此某些应用程序会出现问题,当ART变得标准化时,它将简单地"工作",任何与此事实相矛盾的地方,Google将发布有关修复的文档。

最新更新