【问题标题】:Using Art instead of Dalvik to compile使用 Art 代替 Dalvik 编译
【发布时间】:2014-11-12 09:34:59
【问题描述】:

我正在使用 Eclipse,并且我有一个使用 android 版本 21 (5.0) 的新项目。我想用 Art 而不是 Dalvik 来编译它。我必须做些什么来实现这一目标?

编辑:问题的原因是我有这个问题:

[2014-11-12 10:30:49 - Dex Loader] Unable to execute dex: method ID not in [0, 0xffff]: 65536
[2014-11-12 10:30:49 - MAMUT] Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536

我期望这样做比解决问题:

特别值得注意的是制作 minSdkVersion 21 dev 的建议 build - 这允许您以增量方式生成多 dex 输出 新的 ART 格式,使开发迭代更快 循环(至少在 Android 5.0 设备上)。

谢谢

【问题讨论】:

  • 通过执行“minSdkVersion = 21”,您的应用只能在棒棒糖上运行。我认为这不是一个好主意。

标签: android eclipse adt dalvik


【解决方案1】:

特别需要注意的是建议进行 minSdkVersion 21 开发构建 - 这允许您以新的 ART 格式逐步生成多 dex 输出,从而加快开发迭代周期(至少在 Android 5.0 设备上)。

这是错误的,应该粗略地阅读

特别需要注意的是建议将 Android Build Tools 21.1 及更高版本Multidex Support Library 一起使用 - 这允许您使用多个未更改的 dex 格式的 dex 文件完全保持不变的发展。

dex 格式的问题是它不能包含超过 65536 个方法。解决方案是将输出简单地拆分为多个dex 文件。我们过去有两个问题

  • dx 工具无法生成多个 dex 文件
  • 在设备上使用多个 dex 文件非常复杂,因为设备只加载 1 个 dex 文件,而其他文件中的代码必须以某种方式手动加载。

Build tools 21 解决第一个问题,只需在编译选项中添加-multi-dex 标志即可生成多个dex文件。

multidex 支持库解决了第二个问题。它告诉这些设备如何加载额外的 dex 文件。 Lollipop 及更高版本上的 ART 运行时(4.4 也有 ART,但不能这样做)能够使用多个文件而无需被告知如何使用。

官方Building Apps with Over 65K Methods文档也相关。

【讨论】:

  • 我不知道如何告诉 Eclipse 设置了 --multi-dex=true。我没有使用 gradle 并尝试在 project.properties 上设置 dex.multi.dex=true 不起作用
  • @Plebios 不幸的是,一旦达到方法限制,就不可能使用 Eclipse 构建 apk。 Android Eclipse 插件目前不支持该功能。也许在未来,但我有点怀疑,因为他们专注于 gradle 和 android studio。如果您希望继续使用 Eclipse:创建一个 gradle 构建脚本,而不是让 eclipse 为您构建 apk,从命令行或通过 gradle 插件来完成。另一种方法是将项目导入 Android Studio,这会使项目无法用于 Eclipse,但会自动为您创建 gradle。
【解决方案2】:
I want to compile it using Art instead of Dalvik. 

Art 和 Dalvik 不是编译器,它们是虚拟机。他们执行编译器(你的应用程序)生成的字节码

【讨论】:

  • 我想生成 Art 字节码而不是 Dalvik 字节码
  • 你什么都不用做
  • @Plebios 字节码完全相同,Art vs Dalvik 只是设备解释字节码的不同方法。
【解决方案3】:

您只需要一个运行 ART 的模拟器或真实设备。

检查这个: https://developer.android.com/guide/practices/verifying-apps-art.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多