【问题标题】:com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536 in android studiocom.android.dex.DexIndexOverflowException:方法 ID 不在 [0, 0xffff] 中:android studio 中的 65536
【发布时间】:2016-04-28 10:34:12
【问题描述】:

我有安卓项目。当我将它导入 eclipse 时。它工作正常。 但是当我将它导入 Android 工作室时,它的捐赠:-

com.android.dex.DexIndexOverflowException: 方法 ID 不在 [0, 0xffff] 中:65536

编译时出错。 一个项目是否有可能在 eclipse 和 Android Studio 中表现不同。在这两种情况下(是/否),我该如何解决它

我已经检查了我的 build.gradle 文件的依赖项。所有依赖项都与我在 eclipse 中使用的相同。

【问题讨论】:

    标签: android android-studio


    【解决方案1】:

    我的问题通过在 Module build.gradle 中添加“multiDexEnabled true”得到解决。

    android {
        ...
        defaultConfig {
            ...
            multiDexEnabled true
    

    更新

    使用上面的代码,我能够在调试设备(低于'marshmallow'版本)上构建和运行,但在'marshmallow'设备上,我发现了以下错误。

    :6: 错误:包 android.support.multidex 不存在 import android.support.multidex.MultiDexApplication;

    要解决,我必须在项目的“模块”build.gradle 中使用以下内容。

    编译'com.android.support:multidex:1.0.1'

    【讨论】:

      【解决方案2】:

      Android 有一个预定义的方法上限65536

      最常见的原因是使用完整的 google play 服务库,而不仅仅是您需要的子集,例如设计、卡片视图、地图等。

      如果不是这种情况,请使用multidex 库,它可以实现更大的限制。 看这里: http://developer.android.com/tools/support-library/features.html#multidex

      在 gradle 中基本上就是这样:

      com.android.support:multidex:1.0.0
      

      【讨论】:

      • 我在我的依赖项中使用了这一行,当我得到这个错误时。 "compile 'com.google.android.gms:play-services:+' " 但正如你提到的播放服务是原因。所以我删除了它,现在我像这样使用“编译文件('libs/google-play-services_lib.jar')”。我在我的项目的 libs 文件夹中添加了 google-play-services_lib.jar 。但是现在我遇到了以下错误:-“找不到与给定名称匹配的资源(在 'value' 处,值为 '@integer/google_play_services_version')”
      • 不,忘记.jar 并返回使用gradle。我的意思是compile 'com.google.android.gms:play-services:+' 包含所有的播放服务库,但你应该只使用你需要的,例如compile 'com.google.android.gms:play-services-maps:8.4.0' 用于谷歌地图,或compile 'com.google.android.gms:play-services-location:8.4.0' 用于位置。
      • 另一个建议是去掉项目中不必要的插件。至少这用完全相同的错误消息解决了我在项目中的问题。通过删除不必要的插件,您可以有效地减少应用中包含的方法数量。
      【解决方案3】:

      对于安卓工作室... 启用即时运行

      在 File->Preferences->Build, Execution, Deployment->Instant Run-> 勾选 Enable Instant run for hot swap...

      希望对你有帮助

      【讨论】:

      • 谢谢 - 加油!!!我刚刚创建了一个示例应用程序,我对错误感到惊讶,因为它只是一个小应用程序,我无法相信它会超过 65536 方法的上限。
      • 这个!我知道我没有在接受的答案中解决问题,因为该项目将在我同事的机器上运行。这个解决方案效果很好。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-19
      相关资源
      最近更新 更多