【问题标题】:Android apk compile to ART runtime and dalvik runtimeAndroid apk 编译为 ART 运行时和 dalvik 运行时
【发布时间】:2013-11-13 11:03:30
【问题描述】:

Google 在 Android 4.4 中添加了一个新的 ART 运行时。如何将我的 apk 定位到 ART 运行时和 Dalvik 运行时?

【问题讨论】:

    标签: android dalvik art-runtime


    【解决方案1】:

    此更改对开发人员没有任何影响。您的应用程序保持不变,无事可做。只需确保您以 API 19 为目标,以便您的应用可供 KitKat 用户使用。他们将在手机中决定是否要使用 ART 或 Dalvik。

    【讨论】:

    • 错误.. Whatsapp 无法使用 ART 运行。
    • @Sachin:请注意,ART 仍在开发中。因此,WhatsApp 无法在其上运行这一事实并不意味着您有一些特别的事情要做。
    • 它不是 100% 跨平台的东西。如果您的应用程序直接与 VM 行为交互......
    • 注意:您不需要将 API 19 设为目标,KitKat 用户也可以使用该应用程序。
    • 同意 k3v1n4ud3。我在这个谷歌代码线程中引用了 AOSP 成员关于 whatsapp 问题 “我会重申这不是 WhatsApp 应用程序的错。ART 验证程序阻止了这个应用程序的安装,但我们将修复ART 来解决这个问题。当修复在 AOSP 中时,我会更新这个错误。" 详细信息:code.google.com/p/android/issues/…
    【解决方案2】:

    这是一个老问题,但非常关键。我今天确认,我所有的应用程序都在 Nexus-x 平板电脑上与 ART+Android-5 中断。 ART 会进行更严格的 JNI 检查,因此如果您的应用程序使用 java 加本地代码,则从 Dalvik 迁移到 ART 可能会破坏应用程序的运行。对我来说,这是一个完整的表演站。我在 Google Store 中有 6 个应用程序,现在在运行 Android 5.x 的 Nexus 设备上都失败了,但它们在所有 4.x.x (Kitkat) 系列设备上都能正常运行。这是最令人沮丧的。我将通过这个网站上的所有 ART/Dalvik 问题和答案。 ART 和 Android-5.x 是非常显着的变化,所以这里提出的问题是“如何将我的 apk 定位到 Dalvik 和 ART?”是一个关键且非常关键的问题。时间已经证明,给出的建议“对开发人员没有区别”的回答显然是不正确的。在我们的情况下当然是这样。

    记录了两个具体问题,我引用了“Verifying App Behavior on the Android Runtime (ART)”:

    1) " 检查 JNI 代码是否存在垃圾收集问题 ART 在 Android 开源项目 (AOSP) 上开发了一个压缩垃圾收集器。一旦使用了压缩垃圾收集器,就可以在内存中移动对象。如果您使用 C/C++ 代码,请不要执行与压缩 GC 不兼容的操作。我们增强了 CheckJNI 以识别一些潜在问题(如 ICS 中的 JNI 本地引用更改中所述)。”换句话说,新的 ART 内存管理模型可能会破坏您现有的(和可操作的)本机代码。

    2) " 错误处理 ART 的 JNI 在 Dalvik 没有的情况下会抛出错误。”。

    http://developer.android.com/guide/practices/verifying-apps-art.html#JNI_Issues中提供了一些会导致 Android 5.x ART 引发错误的问题的有限解释

    目前运行 ART 和 5.x 并面临非运行应用程序的 Android 设备用户采用的向前兼容解决方案是降级到 Android 4.4.4,通过解锁引导加载程序、擦除设备内存和在运行 Nexus 系列平板电脑的情况下安装系统映像“Hammerhead”。对于三星平板电脑,可通过以下网址获得教程:http://forums.androidcentral.com/samsung-galaxy-s5/489071-tutorial-downgrade-samsung-galaxy-s5-5-0-4-4-kitkat.html

    【讨论】:

      【解决方案3】:

      dalvikART 只是 Android 中的 runtime。作为应用程序开发人员,您不必关心这些差异。您只需要关心应用的 API 级别,它描述了 Android 操作系统版本的依赖性。

      并且在 Android 4.4 中,ART 只是一种开发,它不是默认运行时,即使描述 ART 的发行说明将使应用程序使用更少的内存并快速运行。如果你想找到不一样的,你可以等待安卓的下一个版本。在开源中发现ART一直在设置默认运行时选择。

      【讨论】:

        【解决方案4】:

        对于大多数应用,ART 都可以正常工作。

        然而,它不是 100% 兼容的,因为在 Dalvik 上工作的东西可能不适用于 ART

        请访问link了解更多信息。

        【讨论】:

          猜你喜欢
          • 2013-11-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-24
          相关资源
          最近更新 更多