Android Studio:为什么我在全新的Google Maps API项目上出现多重dex错误?

时间:2016-07-01 18:50:01

标签: android google-maps multidex

我对Android编程比较陌生,我正在尝试创建一个Google Maps项目。我在Android Studio中使用了模板选项,并添加了API的密钥。

我没有添加任何自己的代码并保留模板代码,因为我只是想运行代码并查看它的样子,但是,当我尝试运行此代码时,我一直收到多个dex错误在模拟器上导致构建失败。我收到此错误是很奇怪的,因为我根本没有添加任何代码,而是使用了Google地图模板从Android Studio中获得的内容。

任何人都知道为什么这个错误出现在一个全新的项目上?我看到的错误粘贴在下面。

错误:.dex文件中的方法引用数不能超过64K。 了解如何在https://developer.android.com/tools/building/multidex.html

解决此问题

错误:任务':app:transformClassesWithDexForDebug'执行失败。

  

com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException:org.gradle .process.internal.ExecException:进程'命令'C:\ Program Files \ Java \ jdk1.8.0_91 \ bin \ java.exe''以非零退出值2结束

7 个答案:

答案 0 :(得分:4)

如下所述:

  

您可能正在使用编译com.google.android.gms编译所有播放服务API:play-services:9.2.0' ...现在我们可以选择性地编译API& #39; s避免dex限制为64K。对于Google地图,请使用com.google.android.gms:play-services-maps:9.2.0 ... - Loki Jul 1 at 19:01

Loki的回答很有效,而且很简单。

答案 1 :(得分:2)

setting up google play services

通过此链接,只需在应用程序中添加所需的依赖项。 这样可以防止64k超出错误。

快乐的编码。

答案 2 :(得分:0)

问题是你目前有很多方法。 dex只能有65536种方法。您可以通过编辑build.gradle文件来尝试启用multiDex。

|=>

另外,oops作为您在清单中提到的海报,您还需要添加您正在使用multidex支持库中的multidex类。

android {
          //stuff

defaultConfig {
    ...

       // Enable multiDex support. 
       multiDexEnabled true
    }

}

dependencies {
   compile 'com.android.support:multidex:1.0.0'
}

答案 3 :(得分:0)

更改Gradle构建配置以启用multidex

android {
    compileSdkVersion 23
    buildToolsVersion "24.0.0 rc2"

    defaultConfig {
        applicationId "com.try.app"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }

在清单中,将Multidex支持库中的MultiDexApplication类添加到应用程序元素中。

<?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>

注意:访问https://developer.android.com/studio/build/multidex.html了解详情。

答案 4 :(得分:0)

在defaultConfig中将属性multiDexEnabled设置为true。当方法引用增加65k的限制时,会发生此错误。查看Google Play服务API。

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

这是开始使用Google Maps Android API

的好资源

答案 5 :(得分:0)

我删除了Loki建议的依赖项,但它确实有效。

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.1.1'
    compile 'com.google.android.gms:play-services-maps:9.4.0'
}

答案 6 :(得分:0)

对于那些尝试了上述所有方法但均失败的人。尝试在build.gradile文件中将mini sdk版本更改为21。对我来说是16岁,当我将其更改为21岁时,multidex错误就消失了。

minSdkVersion 21