android studio在构建执行时遇到了构建错误:
错误:任务':app:transformDexArchiveWithExternalLibsDexMergerForDebug'的执行失败。 java.lang.RuntimeException:java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:无法合并dex“
我的应用:build.gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
applicationId "com.pdroid.foodieschoice"
minSdkVersion 16
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(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.firebaseui:firebase-ui-auth:2.3.0'
testCompile 'junit:junit:4.12'
}
configurations.all {
resolutionStrategy {
force 'com.android.support:appcompat-v7:26.0.1'
force 'com.android.support:support-compat:26.0.1'
force 'com.android.support:support-core-ui:26.0.1'
force 'com.android.support:support-annotations:26.0.1'
force 'com.android.support:recyclerview-v7:26.0.1'
}
}
apply plugin: 'com.google.gms.google-services'
任何解决方案
编辑:我已经通过firebase github网站完成了示例并解决了
答案 0 :(得分:54)
对于基于Cordova的项目,请在再次构建之前运行cordova clean android
,如@mkimmet所示。
答案 1 :(得分:36)
当您添加可能与compileSdkVersion
不兼容的外部库时会发生此错误。
添加external library
时要小心。
我花了2天时间解决这个问题,最后按照这些步骤解决了问题。
答案 2 :(得分:23)
尝试在gradle中添加它
android {
defaultConfig {
multiDexEnabled true
}
}
答案 3 :(得分:18)
只需尝试“Build - > Clean Project”。这解决了我的问题。
答案 4 :(得分:11)
引用to this link:由于根据 minSdkVersion,有多种关闭警告的选项,因此设置为20以下:
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
... }
dependencies { compile 'com.android.support:multidex:1.0.3' }
如果您的build.gradle集的 minSdkVersion大于20 ,请使用以下命令关闭警告:
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
... }
更新依赖关系如下:
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
同样,唯一的区别是依赖项中的关键字:
minSdkVersion低于20:使用编译
minSdkVersion大于20:使用实现
答案 5 :(得分:6)
对我来说,添加
multiDexEnabled true
和
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/notice'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license'
exclude 'META-INF/license.txt'
}
进入 app级别的Build.gradle 文件解决了问题
答案 6 :(得分:4)
如上所述,我尝试了许多解决方案,其中包括multiDexEnabled true,但对我来说都不起作用。
这是对我有用的解决方案-将此代码复制到app \ build.gradle文件中
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support' && requested.name != 'multidex') {
details.useVersion "${rootProject.ext.supportLibVersion}"
}
}
}
在运行代码之前,请确保干净运行gradlew
答案 7 :(得分:2)
同样的事情发生在我身上,发现我正在更新到AS 3.0.1,在我完成更新,清理并重建应用程序后,一切都已修复。
答案 8 :(得分:2)
按如下所示使用multiDexEnabled true。
{
minSdkVersion 17
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
和
implementation 'com.android.support:multidex:1.0.3'
此解决方案对我有用。
答案 9 :(得分:1)
对我来说,修复此错误的原因是在我的应用程序的gradle依赖项中更改了一行。
来自:
compile('com.google.android.gms:play-services-gcm:+') {
force = true
}
到此:
compile('com.google.android.gms:play-services-gcm:11.8.0') {
force = true
}
答案 10 :(得分:1)
还要确保您的应用子类化了MultiDexApplication
import android.support.multidex.MultiDexApplication
class App : MultiDexApplication()
,或者如果不子类化Application类,则添加到AndroidManifest.xml
<application
android:name="android.support.multidex.MultiDexApplication"
答案 11 :(得分:0)
您现在可以始终在项目的gradle.properties
文件中通过此设置恢复到DX:
android.enableD8=false
有关更多信息,请参见https://android-developers.googleblog.com/2018/04/android-studio-switching-to-d8-dexer.html
答案 12 :(得分:0)
我也遇到类似的错误。
问题:
解决方案:
此问题的主要原因是未启用multiDex。 因此,在 Project / android / app / build.gradle 中, 启用multiDex
有关更多信息,请参阅文档:https://developer.android.com/studio/build/multidex#mdex-gradle
答案 13 :(得分:0)
转到您的模块级别build.gradle
文件,并将以下行添加到代码中
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 28
multiDexEnabled true
}
...
}
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
那很容易解决了这个问题。选中此documentation
答案 14 :(得分:0)
这对我有用。清洁准备并运行。
cordova clean android;
ionic cordova prepare andriod;
ionic cordova run andriod;
希望有帮助。
答案 15 :(得分:0)
避免错误的最简单方法是:
-与您的应用程序compilesdkversion一样更改库combilesdkversion
-更改库的supportLibrary版本与build.gradle(app)
相同答案 16 :(得分:0)
1)Please add multiDexEnabled true 2)if you get compilation error then check your app level build.gradle weather same dependencies are implemented with different versions. 3)Remove one if you find same dependencies.
android { 编译版本28 defaultConfig {
minSdkVersion 17
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
hope it works fine :) Happy Coding
答案 17 :(得分:0)
要删除此Dex问题,只需实现一个依赖项。 当我们从同一服务器使用多个不同的服务时,会发生此问题。假设我们在项目中使用广告和Firestore,并且都有一个存储库maven。所以我们需要在存储库上调用不同的数据,我们需要dex依赖来实现。 新的更新依赖关系: -
implementation 'com.android.support:multidex:1.0.3'
我确信它会解决您的问题
答案 18 :(得分:0)
我已完成并通过在我的代码中执行此作业来解决此问题
打开 - &gt; build.gradle 改变价值 来自
compile 'com.google.code.gson:gson:2.6.1'
到
compile 'com.google.code.gson:gson:2.8.2'
答案 19 :(得分:0)
我收到了同样的错误,在我的情况下,当我修复了与我当前构建的构建版本不同的构建版本错误时,错误得以解决。
我正在构建我正在查看的构建变体,没有错误,但尝试调试导致app:transformDexArchiveWithExternalLibsDexMergerForDebug
错误。一旦我切换到构建其他构建变体,我在构建过程中捕获了我的错误并修复了它。对于所有构建变体,这似乎解决了我的app:transformDexArchiveWithExternalLibsDexMergerForDebug
问题。
请注意,此错误不是在引用的外部模块中,而是在引用外部模块的构建变体的不同源集中。希望对可能和我有同样情况的人有所帮助!
答案 20 :(得分:0)
当Android Studio版本为3.0.1,Gradle版本为4.1且Android PluginVersion为3.0.0时,会遇到此问题。然后我降级Gradle版本是3.3,Android Android是零,没有这样的问题。
答案 21 :(得分:0)
同样的问题。我启用了multidex: defaultConfig { applicationId&#34; xxx.xxx.xxxx&#34; minSdkVersion 24 targetSdkVersion 26 multiDexEnabled true
我已清除缓存,运行gradle clean,rebuild,make,尝试确保导入的库中没有冲突(删除所有传递依赖项)并进行所有更新。仍然:
错误:任务&#39;:app:transformDexArchiveWithExternalLibsDexMergerForDebug&#39;执行失败。 java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:无法合并dex
原来构建不喜欢: 实施&#39; org.slf4j:slf4j-android:1.7.21&#39;
答案 22 :(得分:0)
对我来说,问题是在模块中使用Java 1.8,但在app模块中没有。我将此添加到app build gradle并工作:
android{
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
答案 23 :(得分:0)
您介于SDK或平台更新之间吗? 如果是完全完成那些,然后尝试继续。 我通常会更新需要更新的各个软件包,以便进行有时可能高达2.5 GB的整个更新。执行此完整更新有时会失败。一旦我升级到Android Studio 3.0,我就有了一些SDK更新,并且因为所有软件包都没有更新而得到上述错误。一旦我更新了所有包,上面的错误就消失了。