无法合并dex

我有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

405544 次浏览
  1. 删除.gradle目录。

  2. 再次运行应用程序。

笔记

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

根据Suragch的建议,删除.gradle对我来说还不够。此外,我必须执行Build > Clean Project

注意,为了查看.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时,我遇到了同样的问题。这为我解决了问题:

  1. 清洁
  2. 重建

我同意小克里斯的观点。如果你正在使用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 < / p >

所以它要么回归到10.0.1,要么添加广告并禁用立即运行。

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

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

这适用于我的Android Studio 3.0 Beta 6。参见 answer获得进一步解释。

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

应用程序/ 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

以下步骤对我有用:

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

添加如下命令:

android {
...


dexOptions {


jumboMode true
javaMaxHeapSize "4g"


}
}

对我来说,它是更新app \ build.gradle:中的firebase消息

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

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

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

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

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

gradle: 3.0中,编译配置现在已弃用,应由实现api取代。你可以在Gradle构建工具上阅读官方文档

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

最好使用实现api而不是编译

只需将编译替换为实现,将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菜单中,按清洁项目按钮。
  • 任务完成后,按下Build菜单中的重建项目按钮。

希望对大家有所帮助!

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

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

谷歌服务3.0不支持firebase Studio 3.0与playServiceVersion: 11.6.0或更低。

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"

解决方案:

我已经将< em > < / em >谷歌服务更改为

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文件。删除重复的条目对我很有效。甚至不需要清理、重建工程。

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

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

然后清洁重建项目。

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

  1. Build ->清洁项目
  2. Build ->重建项目
在我的例子中,它是gson-2.8.1.jar,我已经添加到项目的填词文件夹中。但是SDK中已经有了参考。 因此,没有必要将gson-2.8.1.jar添加到libs文件夹

当我从gson-2.8.1.jar中取出项目编译没有这个连线错误。

所以尝试修改填词文件夹和依赖关系

对于大多数情况下,这是有效的。 这对我很管用。

步骤1:在构建。gradle(模块:应用) 添加: defaultConfig { multiDexEnabled真实 } < / p >

步骤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文件:

  • compile fileTree(include: ['*.jar'], dir: 'libs')
  • compile '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'

建造干净的和建造重建

注意警告!

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


我在模块级的build.gradle文件中有两个依赖项:

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

和Studio 曾警告 (除了dex合并问题):

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

因此,我显式地确定了com.android.support:support-v4的版本(详见在这里) 这两个问题(警告和与dex合并相关的警告)< em > < / em >解决:

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'

参见下面其他类似情况的注释

  1. < p >使

    < p > defaultConfig { multiDexEnabled真实 李}< / p > < / >
  2. 如果第一步不成功

    进入项目结构,找出使用a的外部库 不同的版本。双击它并删除它的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:

api files('libs/farmer-motion-1.0.jar') // change implementation to api
现在wear模块将依赖于common模块导出的farmer-motion-1.0.jar。 如果jar包也可以改为'compileOnly'存在在运行时对jar包没有依赖, ` 实现'依赖项

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

< p > < >强编译“org.achartengine: achartengine: 1.2.0”< br > < br >… 实现文件(. . / achartengine-1.2.0.jar) < /强> < / p >

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

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

以下是杀手所在:

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

现在正按预期工作。

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

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'

build.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是有问题的库。

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

  1. 构建时打开--stacktrace标志以获取更多细节。它会抱怨一个类,谷歌那个类去找库。下面是如何设置Android studio总是使用--stacktrace标志运行gradle。

  2. 在Android Studio View > Tool Windows > Gradle Console构建后,看一眼Gradle控制台

  3. 通过运行./gradlew -q app:dependencies检查重复依赖项。您可以在每次修改build.gradle时重新运行此命令。

  4. 在build.gradle < p >,

    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'
    }
    }
    }
    
  5. 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'
    }
    }
    
  6. In build.gradle,

    android {
    ...
    configurations.all {
    resolutionStrategy {
    // Completely exclude the library. Works for transitive
    // dependencies.
    exclude group: 'com.google.code.findbugs'
    }
    }
    }
    
  7. 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.

Some more background reading:

我花了3个多小时阅读和测试所有的回答。 最后的问题是库"joda time",

阅读这个答案我发现了问题,使用完整的堆栈跟踪运行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并删除重复

我也有这个问题。

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

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

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错误”

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

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

  1. 确保存储库部分包含一个端点为"https://maven.google.com"的maven部分。例如:

    < p > allprojects { 存储库{ jcenter () maven { url“https://maven.google.com” } } 李}< / p > < / >

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

After Change Version: 1. 清洁项目 2. 重建项目< / p >

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


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

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

将以下代码添加到构建gradle文件中。然后cleanrebuild项目。

ps:对我来说这是旧的解决方案,所以你应该使用更新版本的 后库。< / p >

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中是否有debugCompilereleaseCompile。将其改为debugImplementationreleaseImplementation。这就是我如何解决它,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. 将multiDexEnabled添加到build.gradle中

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 < / p >

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 

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

在我的情况下,一个库使这个问题,库已成功添加到项目,但当我运行我的应用程序,它显示我这个错误。所以如果你也遇到了这种情况,你可以去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'
}
}
}
}
我也有同样的问题。 我只是启用Instant Run(它被禁用),然后我的项目工作。 你可以在-

中找到它
File->Settings-> Build,Execution,Deployment->Instant Run
在Android studio 3.5中即时运行已被删除。 请参见此处供参考

在你的app / build.gradle中添加这个。会有用的

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

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

< p > defaultConfig { multiDexEnabled真实 } < / p >

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

接下来,链接为我解决了同样的问题。

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

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

dependencies:
flutter:
sdk: flutter
cloud_firestore: ^0.8.2

并在我的IDE终端中运行flutter packages get

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

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

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

我必须打开android/app/build.gradle,然后在文件中添加以下一行作为最后一行: apply plugin: 'com.google.gms.google-services' < / p >

接下来,我必须打开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 >> Edit Project settings>>player,查找Minify部分,然后选择Proguard选项

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

gradle.properties文件中,我有这样的注释行:

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

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

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