0

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

自从我将 Nexus 5 中的虚拟机从 Dalvik 更改为 ART 后,我的设备中当前拥有的应用程序开始出现一些崩溃。我首先通过 WhatsApp 应用程序实现了这一点。它停止工作。

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

4

2 回答 2

3

Robert Love在 Quora 的回答中提供了一些细节。

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

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

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

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

于 2013-11-14T14:17:14.260 回答
1

暂时无法让您的应用程序兼容,ART 是一项正在开发的工作,因此某些应用程序会出现问题,当 ART 标准化时,它会简单地“工作”,与此相矛盾事实上,谷歌会发布相应的修复文档。

于 2013-11-14T14:12:09.563 回答