android - 我是否需要为 ART 和 Dalvik 编写不同的代码?

标签 android art-runtime

我一直看到报道(谣言)说 Android 很快将从 Dalvik 切换到 ART 作为默认运行时。我真的不知道那是什么意思,我猜运行时(有点?)就像操作系统。

我的应用程序没有做任何特别特别/独特的事情,主要是它对数据发出 HTTP 请求,并使用 LocationListeners 几次。

在我读到的一些关于传闻中的变化的文章中,我看到一些人说的是“我喜欢 ART,如果 X 应用程序支持它,我现在就使用它”。 (我记得有人提到过一个应用程序是 Xposed)

我已将手机切换到 ART,我的应用程序似乎运行良好,所以我猜标题问题的答案是否定的,但我很好奇 Xposed 应用程序为何不兼容。他们做了什么(或没有做什么)使他们的应用程序无法在 ART 中运行?

最佳答案

ART 是 Android 应用程序的不同运行时。所有 Android 应用程序都在虚拟机中运行,就像 Java 代码在 Java VM 中运行一样。

通常,当您编译 Android 应用程序时,它会编译为 Dalvik 字节码,旨在在 Dalvik 运行时(虚拟机)中运行。

虽然在 Android Kitkat 中,Google 引入了一个新的实验性运行时,称为 Android Runtime,或 ART。这是一个不同的虚拟机,是 Android 应用程序运行时的重新实现,以帮助修复原始设计中的一些基本缺陷。

ART 提供 several advantages在达尔维克之上:

  • 提前 (AOT) 编译
  • 改进垃圾收集
  • 开发和调试改进
    • 支持采样分析器
    • 支持更多调试功能
    • 改进了异常和崩溃报告中的诊断细节

它还应该有助于处理 DEX limit 之类的事情.

关于你的问题,你作为开发者不需要做任何事情。谷歌明确表示,“Dalvik 必须保持默认运行时,否则你可能会破坏你的 Android 实现和第三方应用程序”。

Google 在 Google I/O 2014 上宣布,在 Android“L”版本及以后的版本中,ART 将取代 Dalvik。

关于android - 我是否需要为 ART 和 Dalvik 编写不同的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24328431/

相关文章:

仅在 Google Pixel 6P 上发生 Android native 崩溃

java - 使用上下文从自定义 View 完成 Activity

java - 为特定应用程序模块启用 Android X

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

android - Android ART 运行时是否具有与 Dalvik 相同的方法限制限制?

android - 如何检测 Android 运行时(Dalvik 或 ART)?

Android - 递归调用处理程序时出现垃圾收集器错误

android - 如何将动画列表设置为 xml 属性

android - 如何停止 youtube 视频或在 android 的 youtube-api 中设置缓冲区限制