这是我的build.gradle,当我通过点击构建apk来构建apk时显示的错误。我之前看到过一些查询但是无法找出问题解决方案
错误:任务':app:transformClassesWithDexForDebug'执行失败。
com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.dex.DexIndexOverflowException:方法ID不在[0, 0xffff]:65536
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.example.ranjeet.location"
minSdkVersion 14
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
testCompile 'junit:junit:4.12'
compile 'com.android.volley:volley:1.0.0'
compile 'com.google.code.gson:gson:2.8.0'
compile 'com.google.android.gms:play-services:10.2.6'
compile 'com.google.android.gms:play-services-maps:10.2.6'
}
答案 0 :(得分:2)
你有太多的方法。 dex只能有65536种方法。
因此,启用multidex如下:
android {
defaultConfig {
// Enabling multidex support.
multiDexEnabled true
}
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
答案 1 :(得分:0)
你有太多的方法。 dex只能有65536种方法。
因此,启用multidex如下:
android {
defaultConfig {
...
// Enabling multidex support.
multiDexEnabled true
}
...
}
并粘贴此代码,
dexOptions {
javaMaxHeapSize "4g"
preDexLibraries = false
}
答案 2 :(得分:0)
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
潜在的问题是由当前的Dalvik指令集强加的。具体来说,任何invoke- *方法。这些期望一个16位参数,表示目标方法的参考索引。限制为16位,有效值介于0和65536之间。这意味着,如果您最终调用超过65,536个已定义的方法,则将超出此限制。
解决方案: MultiDex允许您使用一个APK中包含的多个DEX文件。只需几步,您的类将自动拆分为多个DEX文件(classes.dex,classes2.dex,classes3.dex等),以防您达到方法索引限制。
获取更多信息:https://www.contentful.com/blog/2014/10/30/android-and-the-dex-64k-methods-limit/
答案 3 :(得分:0)
如果 minSdkVersion 设置为 21或更高,您需要做的就是在应用级build.gradle
文件中将multiDexEnabled设置为true,如下所示:
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 25
multiDexEnabled true
}
...
}
但是,如果 minSdkVersion 设置为 20或更低,则必须使用multidex支持库,如下所示:
修改应用级build.gradle
文件以启用multidex并将multidex库添加为依赖项,如下所示:
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 25
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
像这样创建一个Application类:
public class MyApplication extends MultiDexApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
在Manifest中添加此应用程序类。
您还可以查看以下链接: