Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
意外的顶级异常:com.android.dex.DexIndexOverflowException合并依赖项_Android_Android Studio_Gradle_Dependencies_Android Gradle Plugin - Fatal编程技术网

意外的顶级异常:com.android.dex.DexIndexOverflowException合并依赖项

意外的顶级异常:com.android.dex.DexIndexOverflowException合并依赖项,android,android-studio,gradle,dependencies,android-gradle-plugin,Android,Android Studio,Gradle,Dependencies,Android Gradle Plugin,在我的项目中,当我想在我的应用程序中将google play依赖项添加到ues google map时出现了一个问题。问题是,当我想运行project时,我会给出以下错误: UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536 at com.android.dx.merge.DexMerger$6.updateIndex(

在我的项目中,当我想在我的应用程序中将google play依赖项添加到ues google map时出现了一个问题。问题是,当我想运行project时,我会给出以下错误:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
    at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:502)
    at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:283)
    at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:168)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
    at com.android.dx.command.dexer.Main.run(Main.java:246)
    at com.android.dx.command.dexer.Main.main(Main.java:215)
    at com.android.dx.command.Main.main(Main.java:106)
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_72\bin\java.exe'' finished with non-zero exit value 2
这就是我的依赖性:

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        minSdkVersion 14
        versionCode 2
        versionName "1.0.1"
    }
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.android.support:support-v13:22.0.0'
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.android.support:support-v4:22.0.0'
    compile 'com.google.android.gms:play-services:8.1.0'
    compile ('org.bouncycastle:bcprov-jdk16:1.46')
    compile ('com.nineoldandroids:library:2.4.0')
    compile ('commons-lang:commons-lang:2.6')
    compile ('com.google.zxing:core:3.2.0')
}
我还删除了所有库,因为我认为它们可能与google play 8.1.0有问题,但没有任何改变。我还试图从所有编译中排除
com.google.android.gms:play services
,但它也不起作用。

检查代码。。 依赖关系{

编译文件树(目录:“libs”,包括:['*.jar'])

}

当您在代码中两次实现任何库时,如果退出值为非零,则会发生错误2编译'com.android.support:appcompat-v7:22.0.0'编译'com.android.support:appcompat-v7:22.2.0' 请移除其中一个


还要检查“libs”文件夹中的其他库。这对我有用。希望这将对您有所帮助。

首先,请注意您的依赖项块
您使用的是同一库的不同版本,可能是不必要的依赖项

在任何情况下都应使用相同的版本

dependencies{
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.android.support:support-v13:22.0.0'   ARE YOU SURE?
    compile 'com.android.support:appcompat-v7:22.0.0'  TWICE ? REMOVE IT
    compile 'com.android.support:support-v4:22.0.0'    APPCOMPAT contains it. REMOVE IT.
}
如果问题仍然存在,则说明方法太多。dex只能有65536种方法

意外的顶级异常:
com.android.dex.DexIndexOverflowException:方法ID不在[0,0xffff]:65536中

由于gradle插件0.14.0和构建工具21.1.0,您可以使用

只需将这些行添加到
build.gradle

android {

    defaultConfig {
        ...

        // Enabling multidex support.
        multiDexEnabled true
    }
    ...
}

dependencies {
  compile 'com.android.support:multidex:1.0.0'
}
另外,在
清单
中,将多索引支持库中的
多索引应用程序
类添加到应用程序元素中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>

...

如果您正在使用自己的
应用程序
类,请将父类从
应用程序
更改为
多索引应用程序

。此外,如果您必须保留库和方法,则可以通过在gradle配置中声明来启用多索引支持。defaultConfig{//启用multidex支持。multiDexEnabled true}我以前尝试过multiDexEnabled true,但它导致我的应用程序崩溃,无法解决问题:(multidex应该可以解决您的构建问题。如果您能够构建并且应用程序崩溃,您会遇到另一个问题。使用stacktrace编辑问题,或者在问题完全不同的情况下打开另一个问题。如果没有启用multidex和新的依赖项,我的应用程序工作正常。我真的不知道为什么,我刚刚更新了答案。您不知道不要再提这个问题了,因为删除了不必要的库,你的apk中只有不到65536个方法。所以你不需要multdex。我增加了你的投票,因为它非常有用,但我的问题通过添加:compile'com.google.android.gms:play services maps:6.5.87'解决了。不仅仅是googleplay。但是我还有一个关于支持的问题。我想使用它actionbar和MatterialDesign以及我的应用程序可以在旧版本上运行,所以我真正需要添加什么?!
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>