我有Android Studio Beta版。我创建了一个新项目,编译我的旧模块,但当我尝试启动应用程序时,它没有启动消息:

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.

dexarchiivemergenerexception:无法合并dex

但是我不知道如何解决这个错误。我在谷歌上搜索了几个小时,但没有成功。

我的项目gradle:

    // Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-beta6'
        classpath "io.realm:realm-gradle-plugin:3.7.1"
        classpath 'com.google.gms:google-services:3.1.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        google()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

我的应用程序gradle:

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "parad0x.sk.onlyforyou"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
        }
    }
    compileOptions {
        targetCompatibility 1.7
        sourceCompatibility 1.7
    }
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
    lintOptions {
        checkReleaseBuilds false
    }
    productFlavors {
    }
}

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'
    })
    //noinspection GradleCompatible
    compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
    compile project(path: ':loginregisterview')


}

我的模块gradle:

    apply plugin: 'com.android.library'
apply plugin: 'realm-android'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 26
        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:appcompat-v7:26.0.2'
    compile 'com.android.support:support-v4:26.1.0'
    compile 'com.github.bumptech.glide:glide:4.0.0'
    testCompile 'junit:junit:4.12'
    compile project(path: ':parser')

}

我的第二个模块:

     apply plugin: 'com.android.library'
apply plugin: 'realm-android'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    realm {
        syncEnabled = true
    }
    useLibrary 'org.apache.http.legacy'

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile 'junit:junit:4.12'
    //  compile 'com.android.support:appcompat-v7:23.1.0'

    //   compile 'com.fasterxml.jackson.core:jackson-core:2.9.0'
 //   compile 'com.fasterxml.jackson.core:jackson-annotations:2.9.0'
 //   compile 'com.fasterxml.jackson.core:jackson-databind:2.9.0'
    compile 'com.google.code.gson:gson:2.6.2'
}

____________ finding_________

当我没有导入第二个模块(解析器)时,应用程序没有在dex上崩溃,但当模块没有导入时,应用程序无法工作。: D: D


删除.gradle目录。 再次运行应用程序。

笔记

gradle目录位于项目的根文件夹中。(你可能需要先显示隐藏文件。) 每次使用Android 3.0更新依赖模块时,我都必须这样做。(最近发布的Android Studio 3似乎已经解决了这个问题。)


删除Suragch建议的.gradle对我来说还不够。此外,我必须执行一个构建>清洁项目。

注意,为了看到.gradle,你需要切换到左上角导航器中的“项目”视图:


不幸的是,Michel和Suragch的解决方案对我都不起作用。

我最终不得不做的就是回滚我的com.google。Firebase: Firebase -database到10.0.1版本,因为11.4.0在我的应用程序gradle文件中导致依赖不一致警告。


当我从com.google.android.gms:play-services:11.2.2更新到com.google.android.gms:play-services:11.4.0时,我也遇到了同样的问题。这为我解决了问题:

清洁 重建


我同意小克里斯的观点。如果你正在使用Firebase嵌入AdMob广告(或者你没有使用Firebase),即使你没有将其作为依赖项添加,播放服务分析也会包含播放服务广告。谷歌显然在11.4.0的推广中犯了一个错误,因为分析包括10.0.1版本的广告,而不是11.4.0(鼠标在gradle上的提示显示了这一点)。

我手动添加编译'com.google.android.gms:play-services-ads:11.4.0'在顶部工作,但只有在我禁用立即运行后: http://stackoverflow.com/a/35169716/530047

所以它要么退回到10.0.1,要么添加广告并禁用即时运行。 这就是我的发现,如果有用的话。


如果在包含kotlin支持后出现此错误,并且其他解决方案都不起作用,请尝试更改应用模块构建的kotlin依赖项。gradle:

implementation ("org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version") {
    exclude group: 'org.jetbrains', module: 'annotations'
}

这适用于我的Android Studio 3.0 Beta 6。请参阅下面的答案以了解进一步的解释。


以上方法我都试过了,没有一个有用。最后,我找到了适合我的工作:

应用程序/ build.gradle:

android {
    defaultConfig {
       multiDexEnabled true
    }
}

如果你正在使用

compile ("org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.1")

你应该把它改成

compile ("org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.1"){
    exclude group:'org.apache.oltu.oauth2' , module: 'org.apache.oltu.oauth2.common'
}

由于客户端库已经包含了公共库,它会创建一个重复的类条目,并给出一个错误:

无法合并dex


以下步骤对我来说是有效的:

得到了SdkManager—>Android Sdk—> Sdk工具和更新谷歌播放服务到最新版本到46。 清理项目和重建项目。


添加如下命令:

android {
...

    dexOptions {

        jumboMode true
        javaMaxHeapSize "4g"

    }
}

对我来说,它是在应用程序\build.gradle中更新firebase消息:

compile 'com.google.firebase:firebase-messaging:10.0.1'

to

compile 'com.google.firebase:firebase-messaging:11.4.2'

在我的例子中,我导入了一个'android_support' lib两次,所以我在'libs'目录下删除了一个并重新构建。


不幸的是,Michel和Suragch的方法对我都不起作用。

所以我通过以下方法解决了这个问题:

在gradle:3.0中,compile配置现在已弃用,应该由实现或api取代。要了解更多信息,你可以在Gradle Build Tool上阅读官方文档

编译配置仍然存在,但不应该被使用,因为它不会提供api和实现的保证 配置提供。

最好使用实现或API,而不是编译

只需将compile替换为implementation,将debugCompile替换为debugImplementation,将testCompile替换为testImplementation,将androidtestcompile替换为androidTestImplementation

例如:而不是这个

compile 'com.android.support:appcompat-v7:26.0.2'
compile 'com.android.support:support-v4:26.1.0'
compile 'com.github.bumptech.glide:glide:4.0.0'

像这样使用

implementation 'com.android.support:appcompat-v7:26.0.2'
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.github.bumptech.glide:glide:4.0.0'

在那之后

删除项目中的。gradle文件夹(注意,为了看到。gradle,你需要切换到左上角导航器中的“项目”视图) 删除所有的构建文件夹和gradle缓存。 从“构建”菜单中,按下“清洁项目”按钮。 任务完成后,从Build菜单中按下Rebuild Project按钮。

希望对大家有所帮助!


嗨,我也有同样的问题,几乎什么都试过了。所以,经过6个小时的挣扎,我终于解决了问题。

classpath 'com.google.gms:google-services:3.0.0'

Google-services 3.0在playServiceVersion: 11.6.0或更低版本的Studio 3.0不支持firebase。

implementation "com.google.firebase:firebase-messaging:$rootProject.ext.playServiceVersion"
implementation "com.google.firebase:firebase-core:$rootProject.ext.playServiceVersion"
implementation "com.firebase:firebase-jobdispatcher-with-gcm-dep:$rootProject.ext.jobdispatcherVersion"

解决方案:

我已将谷歌服务更改为

classpath 'com.google.gms:google-services:3.1.1'

它支持firebase服务。

希望有人能节省时间。


一个可能的根本原因是:Android Studio导入多模块项目时没有正确处理重复的瞬态依赖。检查你的清单并删除它们。对我来说,解决办法是这样的:

--- a/project/module/build.gradle
+++ b/project/module/build.gradle
@@ -21,5 +21,4 @@ android {
 dependencies {
     implementation project(':upstream-dependency-project')
     implementation 'com.android.support:support-v4:18.0.0'
-    implementation files('libs/slf4j-android-1.6.1-RC1.jar')
 }

再补充一下上述解决方案:

确保没有重复的依赖项指向 它们的不同版本,在多个地方(甚至在同一个文件中)。


在我的案例中,问题在于房间图书馆:

compile 'android.arch.persistence.room:runtime:1.0.0-alpha1'

改为:

compile 'android.arch.persistence.room:runtime:1.0.0'

工作。


试试这个,对我很管用。

在app / build.gradle:

dependencies {
    ....

    compile project(':grow-notification')

    /** Firebase Start **/
    compile 'com.google.firebase:firebase-messaging:11.4.0'
    compile 'com.firebase:firebase-jobdispatcher:0.6.0'
    /** Firebase End **/
}

apply plugin: 'com.google.gms.google-services'

在模块中的growth -notification/build.gradle:

dependencies {
    ....

    /** Firebase Start **/
    provided 'com.google.firebase:firebase-messaging:11.4.0'
    provided 'com.firebase:firebase-jobdispatcher:0.6.0'
    /** Firebase End **/
}

就我而言,问题在于我在构建中两次实现了相同的库。gradle文件。删除重复的条目对我很有效。甚至不需要清理、重建工程。


简单的解决方法对我很有效:

不要编译/实现相同依赖关系的两个版本。 如果你直接从gradle编译,不要在项目的libs文件夹中使用.jar文件。上述观点在这里也适用。

然后清理和重建项目。


我也有同样的问题。我通过执行一个干净的,然后从Android Studio 3.0菜单构建项目来解决这个问题:

Build ->清洁项目 Build ->重建项目


在我的例子中,它是gson-2.8.1.jar,我已经添加到项目的libs文件夹中。但是SDK中已经有了参考。 所以没有必要将gson-2.8.1.jar添加到libs文件夹中。

当我把它拿出gson-2.8.1.jar项目编译没有这个wiered错误。

所以试着修改libs文件夹和依赖项。


在大多数情况下,这是可行的。 这对我很管用。 祝你好运,如果这对你也有用的话。

步骤1:构建中。gradle(模块:应用) 添加: defaultConfig { multiDexEnabled真实 }

步骤2:这样做:Build=>清洁项目

步骤3:这样做:Build=>重建项目


./gradlew :app:assembleStubLiveDebug -debug -stacktrace

或者类似的(从Android Studio获取任务名(:app:assembleStubLiveDebug))。


当你在依赖项或库....中添加了同一个库的两个版本时,这是一个常见的问题这是我的情况,几乎每次这样都能解决问题。


安装谷歌播放服务(最新版本)+包括

android {
    defaultConfig {
        multiDexEnabled true
        }
}

在构建。Gradle为我解决了这个问题,确保清理和重建项目!


在我的项目中,我有两个以上的模块和sdk,我尝试了上面列出的所有建议或答案

在defaultConfig中添加multiDexEnabled true 清洁及重建计划 用实现代替编译 更新所有依赖项

所有这些工作暂时,但当我打开项目结构(cntrl + altr + shift+ s)我发现,在我的项目属性没有什么会选择像- -编译SDK版本,构建SDK版本 -口味相同

我更新所有这些,并执行清洁和重建项目,它为我工作。


一种可能性是:存在相同的库,但依赖项中有不同的版本。

我有这个问题与以下行在gradle文件:

编译文件树(包括:['*.jar'], dir: 'libs') 编译的com.google.code.gson: gson: 2.8.2

gson库在我的libs目录中,但使用的是以前的版本。 我从libs目录中删除了gson-2.3.1.jar,一切都恢复正常了。


    android {
        defaultConfig {
            multiDexEnabled true
            }
    }

   compile 'com.google.android.gms:play-services:11.0.4'

   compile 'com.google.android.gms:play-services-location:11.0.4'

建造干净的和建造重建


注意警告!

有时你只需要消除警告,错误就会自动消失。特殊情况见下文:


在我的模块级构建中有这两个依赖项。gradle文件:

implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.android.support:recyclerview-v7:27.0.2'

和工作室已经警告(除了dex合并问题):

所有com.android.support库必须使用完全相同的版本规范(混合版本会导致运行时崩溃)。找到27.0.2、21.0.3版本。例如com.android.support:animated-vector-drawable:27.0.2和com.android.support:support-v4:21.0.3

所以我明确地确定了com.android的版本。支持:Support -v4(详情请参阅这里),两个问题(警告和与dex合并相关的问题)都解决了:

implementation 'com.android.support:support-v4:27.0.2'  // Added this line (according to above warning message)
implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.android.support:recyclerview-v7:27.0.2'

其他类似情况请参见下面的评论。


启用 defaultConfig { multiDexEnabled真实 } 如果第一步不起作用 转到项目结构并找出正在使用的外部库 不同的版本。双击它并删除它的jar文件。关闭项目并再次打开android studio将重建项目。 问题应该已经解决了。


我遇到了同样的问题,并找到了我的真正原因。 之前我也把之前的所有答案都试了一遍,但是没有解决问题。 我有两个模块在我的穿着应用程序项目,和构建。Gradle如下:

磨损模块的build.gradle:

implementation project(':common')
implementation files('libs/farmer-motion-1.0.jar')

通用模块的build.gradle:

implementation files('libs/farmer-motion-1.0.jar')

在升级到gradle 3之前。X, 'implementation'都是'compile'。

我用——stacktrace选项运行gradlew来获得堆栈跟踪,当出现这个问题时,你可以在gradle控制台窗口上单击这个。并发现依赖于jar包重复:

Caused by: com.android.dex.DexException: Multiple dex files define Lcom/farmer/motion/common/data/pojo/SportSummary$2;

类SportSummary在farmer-motion-1.0.jar包,在阅读官方迁移指南后,我改变了我的构建。Gradle如下:

磨损模块的build.gradle:

implementation project(':common')
// delete dependency implementation files('libs/farmer-motion-1.0.jar')

build.gradle for common module:

api files('libs/farmer-motion-1.0.jar') // change implementation to api

现在磨损模块将有依赖农民运动1.0.jar导出由公共模块。 如果运行时对jar包没有依赖,也可以将jar包的“implementation”依赖更改为“compileOnly”。


我为我的项目找出了这个问题的原因。我在build.gradle中添加了一个依赖项两次。一次通过添加依赖项,一次通过添加jar依赖项:

编译的org.achartengine: achartengine: 1.2.0 ... 实现文件(. . / achartengine-1.2.0.jar)

去掉第一行后问题解决了。


在专注于依赖关系之前尝试了所有这些方法。

以下是杀手所在:

//implementation 'org.apache.httpcomponents:httpcore:4.3.1'
//implementation 'org.apache.httpcomponents:httpmime:4.3.1'

现在正按预期工作。


升级了一些依赖后,我找到了解决方案。我们应该使用最新的游戏服务版本。在构建。gradle (app)的依赖。

compile 'com.android.support:multidex:1.0.2'
compile 'com.google.android.gms:play-services:11.8.0'
compile 'com.google.firebase:firebase-core:11.8.0'

在构建。gradle[项目],我们应该使用最新的谷歌插件。

classpath 'com.google.gms:google-services:3.1.1'

为了更好地理解,我还分享了下面的代码。

    android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'
    defaultConfig {
        applicationId "com.***.user"
        minSdkVersion 17
        targetSdkVersion 26
        versionCode 26
        versionName "1.0.20"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true

        aaptOptions {
            cruncherEnabled = false
        }

    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

对我来说,问题是我在项目中包含的两个jar中有相同的类。

对于其中一个罐子,我需要排除类:

jar {
    exclude('com/files/to/exclude/**')
}

在我的例子中,错误是导入依赖项:

实现“com.firebaseui: firebase-ui: tripwire”

我没有使用它,当我删除它清洁项目并重新编译时,它开始工作。当然,我也做了上面那些人做的事:

在整个app.grade中更改遵从到实现 在整个app.grade中将testcomplie更改为testimplementation 确保multidexenabled为true 更新compileSdk到26 删除。gradle文件(在项目中找到),清理项目并重新编译

最后……

删除实现'com.firebaseui:firebase-ui:2.3.0'(因为我没有在我的代码中使用它)


可能存在重复的依赖项(可能嵌套在另一个依赖项中)。在命令行中使用"gradlew app:dependencies"来验证你所有的依赖关系。

删除副本后,我的问题就解决了。


如果上面的答案对您不起作用,您的问题可能是您有多个依赖于同一个库的依赖项。

下面是一些调试技巧。在这个示例代码中,com.google.code.findbugs:jsr305:3.0.0是有问题的库。

每次修改以检查解决方案时,都要清理并重新构建!

Build with the --stacktrace flag on for more detail. It will complain about a class, Google that class to find the library. Here's how you can set up Android studio to always run gradle with the --stacktrace flag. Take a glance at the Gradle Console in Android Studio View > Tool Windows > Gradle Console after a build Check for repeated dependences by running ./gradlew -q app:dependencies. You can re-run this each time you modify the your build.gradle. In build.gradle, android { ... configurations.all { resolutionStrategy { // Force a particular version of the library // across all dependencies that have that dependency force 'com.google.code.findbugs:jsr305:3.0.0' } } } In build.gradle, dependencies { ... implementation('com.google.auth:google-auth-library-oauth2-http:0.6.0') { // Exclude the library for this particular import exclude group: 'com.google.code.findbugs' } } In build.gradle, android { ... configurations.all { resolutionStrategy { // Completely exclude the library. Works for transitive // dependencies. exclude group: 'com.google.code.findbugs' } } } If some of your dependencies are in jar files, open up the jar files and see if there are any conflicting class names. If they are, you will probably have to re-build the jars with new class names or look into shading.

更多背景阅读:

Android -理解并支配gradle依赖 Gradle文档:Java项目的依赖项管理 Gradle文档:resoltionstrategy 错误:与依赖项“com.google.code.findbugs:jsr305”冲突 StackOverflow:当使用Gradle时,我如何排除所有可传递依赖的实例? 谷歌搜索StackOverflow所有相关问题


我花了3个多小时阅读和测试所有的回复。 最后一个问题是图书馆的“joda时间”,

阅读这个答案,我发现了问题,运行gradle控制台与完整的堆栈跟踪和读取错误细节。


    apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.xyz.name"
        minSdkVersion 14
        targetSdkVersion 27
        versionCode 7
        versionName "1.6"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    implementation 'com.android.volley:volley:1.0.0'
    implementation 'com.wang.avi:library:2.1.3'
    implementation 'com.android.support:design:27.1.0'
    implementation 'com.android.support:support-v4:27.1.0'
    implementation 'de.hdodenhof:circleimageview:2.1.0'
    implementation 'com.github.bumptech.glide:glide:3.7.0'
    implementation 'com.theartofdev.edmodo:android-image-cropper:2.6.0'
    implementation 'com.loopj.android:android-async-http:1.4.9'
    implementation 'com.google.firebase:firebase-messaging:11.8.0'
    implementation 'com.felipecsl.asymmetricgridview:library:2.0.1'
    implementation 'com.android.support:recyclerview-v7:27.1.0'
    implementation 'com.github.darsh2:MultipleImageSelect:3474549'
    implementation 'it.sephiroth.android.library.horizontallistview:hlistview:1.2.2'
    implementation 'com.android.support:multidex:1.0.1'
}

apply plugin: 'com.google.gms.google-services'

注意:像上面一样更新你所有的支持库到27.1.0并删除重复


我也有这个问题。

我能够通过将compileSdkVersion和targetSdkVersion更改为最新版本来解决。


检查依赖版本,如果它们不相同,然后使它相同,这将解决你的问题

compile 'com.android.support:appcompat-v7:27.0.2'
compile 'com.android.support:recyclerview-v7:27.0.2'
compile 'com.android.support:cardview-v7:27.0.2'

[无法合并dex解决] 经过数小时的堆栈溢出 我解决了“无法合并DEX错误”

更新gradle中的所有com.android.support行到v27.1.0

原因- Android已经将它的支持库更新到v27.1.0,所以你必须将gradle文件中的所有Android支持行从26.1.0更改为27.1.0

确保存储库部分包含一个具有“https://maven.google.com”端点的maven部分。例如: allprojects { 存储库{ jcenter () maven { url“https://maven.google.com” } } }

原因:Android无法在SDK管理器中更新支持库,现在它使用maven.google.com来更新,所以你必须包括这个来使用27.1.0的支持库

修改后版本: 1. 清洁项目 2. 重建项目


android {
    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 26
        multiDexEnabled true
    }
    ...
}

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

我尝试了所有其他的解决方案,但没有一个适合我。最后,我通过编辑build.gradle使用相同的依赖版本解决了这个问题。我认为这个问题发生在添加一个库到gradle使用不同的依赖版本的支持或谷歌库。

将以下代码添加到构建gradle文件中。然后清理和重建项目。

Ps:对我来说,这是旧的解决方案,所以你应该使用更新版本 在库。

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion '26.1.0'
        }
    } else if (requested.group == "com.google.android.gms") {
        details.useVersion '11.8.0'
        } else if (requested.group == "com.google.firebase") {
            details.useVersion '11.8.0'
          }
      }
}

对于我们的项目,我们不小心用不同的名字添加了同一个罐子两次。去掉其中一个就解决了问题。


检查build.gradle中是否有debugCompile和releaseCompile。将其更改为debugImplementation和releaseImplementation。这就是我如何解决它,gradle应该通过这个成功标记的指示弃用,但突然它卡住了这两个。


确保所有相同的源库具有相同的版本号。在我的情况下,我使用不同的谷歌api版本。我对所有谷歌库使用11.6.0,但谷歌地方api使用10.4.0。将谷歌place api更新到11.6.0后,问题修复。

请注意,我的multidex也为该项目启用。


将buildToolsVersion更改为其他版本并同步,将其更改回来并再次同步。它会再次工作的。


如果(1)。尝试清洁和重建工作)然后很好

Else if (2;试着去除gradle工作)然后很好

- > 3。尝试添加grade.properties

android.enableD8 = false

编辑2021:第三个选项现在已弃用,使用其他选项

- > 4。在build.gradle中添加multiDexEnabled true

android {
    compileSdkVersion 26
    defaultConfig {
      ...
        minSdkVersion 15
        targetSdkVersion 26
        multiDexEnabled true
     ...
    }
}

并添加依赖项

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

也许第一个对你有用,但这真的取决于你的问题的性质,比如对我来说

一旦我添加了这个库,我就得到了错误

implementation 'com.jjoe64:graphview:4.2.2'

后来我发现我必须检查一下,我必须添加相同版本的支持库。所以我不得不尝试另一个版本

compile 'com.jjoe64:graphview:4.2.1'

这就解决了问题。所以要注意这一点。


这可能不是你的问题,但是当我不小心在项目的dependencies{}部分中包含了两个相同(但名称不同)的库时,我得到了这个错误。


如果你在你的插件中使用Firebsae,这个问题会因为播放服务版本问题而出现,试试这个 “cordov

cordova.system.library.4=com.google.gms:google-services:3.3.0 cordova.system.library.5=com.google.android.gms:play-services-tagmanager:+ cordova.system.library.6=com.google.firebase:firebase-core:16.0.1 cordova.system.library.7=com.google.firebase:firebase-messaging:17.1.0 cordova.system.library.8=com.google.firebase:firebase-crash:16.0.1 cordova.system.library.9=com.google.firebase:firebase-config:16.0.0 cordova.system.library.10=com.google.firebase:firebase-perf:16.0.0

改变你的项目。属性像这样,那么这个问题将得到解决 参考


在我的情况下,一个库使这个问题,库已成功添加到项目,但当我运行我的应用程序,它显示我这个错误。所以如果你也遇到了这种情况,你可以去github检查问题或提出新的问题。如果你没有找到任何解决方案关于图书馆,我建议你更换它。


这对我很有用

最后在平台\android\build.gradle中添加代码

configurations.all { 
 resolutionStrategy{
    force 'com.android.support:support-v4:26.0.0'
    }

    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
       if (!requested.name.startsWith("multidex")) {
      details.useVersion '26.0.0'
     }
   }
  }
}

我也有同样的问题。 我只是启用了即时运行(它被禁用),然后我的项目工作了。 你可以在……找到它

File->Settings-> Build,Execution,Deployment->Instant Run

在Android工作室3.5即时运行已删除。 请参考这里


将此添加到app/build.gradle中。会有用的

实现“com.android.support:设计:27.1.0”


只需在build.gradle中添加下面的内容,

defaultConfig { multiDexEnabled真实 }


这个还没有在这里分享,所以希望它能帮助到一些人。

这个链接为我解决了同样的问题。

首先,我要指出,我不必将multiDexEnabled设置为true。

首先,我在pubspec中设置依赖项。yaml来

dependencies:
  flutter:
    sdk: flutter
  cloud_firestore: ^0.8.2 

并运行flutter包进入我的IDE终端。

此外,我还必须更改最小目标SDK版本:

android / app /构建开放。Gradle,然后找到那行说 minSdkVersion 16。 将这一行更改为minSdkVersion 21。 保存文件。

这本身就可以解决你的问题;然而,我还必须做以下工作,因为我的一些依赖版本不匹配。

我必须打开android/app/build。Gradle,然后添加下面的行作为文件的最后一行: 应用插件:'com.google.gms.google-services'

接下来,我必须打开android/build。Gradle,然后在buildscript标签中,添加一个新的依赖:

buildscript {
   repositories {
       // ...
   }

   dependencies {
       // ...
       classpath 'com.google.gms:google-services:3.2.1'   // new
   }
}

在此之后,我的应用程序终于在android模拟器上运行。

如果您遇到问题,该链接有一个更完整的演练。

另外,需要注意的是,我不必将multiDexEnabled设置为true。


在我的情况下,以下工作

implementation 'com.google.android.gms:play-services-ads:17.2.0'
implementation 'com.google.firebase:firebase-core:16.0.9'
implementation 'com.google.firebase:firebase-analytics:16.5.0'
implementation 'com.google.firebase:firebase-messaging:18.0.0'

在我的app模块中。问题是他们firebase-analytics最新的库,它不能正常工作与其他最新的库。


只需在app/build.gradle中添加这一行

defaultConfig {
       multiDexEnabled true 
    }

去Unity >>编辑项目设置>>播放器,寻找缩小部分,然后选择保护选项


随着无法合并dex,我有一个错误Java .lang. outofmemoryerror:构建项目时的Java堆空间。

在gradle里。我有这样的注释行:

# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

取消注释这一行并将堆内存增加到3g就解决了这个问题:

org.gradle.jvmargs=-Xmx3g -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8