Android 如何解决gradle中的模块依赖

Android 如何解决gradle中的模块依赖,android,android-studio,android-gradle-plugin,Android,Android Studio,Android Gradle Plugin,我有应用程序模块和另一个模块 在格拉德尔: 应用程序gradle 格雷德尔先生 在模块和运行后,我都有“compile'com.android.support:appcompat-v7:26.1.0'”,gradle显示此错误: 将字节码转换为dex时出错:原因:com.android.dex.DexException: 多个dex文件定义/BuildConfig 有时我们从google产品/API导入不同的版本。所以 尝试组织gradle文件以解决此类问题 您还可以参考“了解管理多模块项目中的

我有应用程序模块和另一个模块 在格拉德尔: 应用程序gradle 格雷德尔先生 在模块和运行后,我都有“compile'com.android.support:appcompat-v7:26.1.0'”,gradle显示此错误:

将字节码转换为dex时出错:原因:com.android.dex.DexException: 多个dex文件定义/BuildConfig

有时我们从google产品/API导入不同的版本。所以 尝试组织gradle文件以解决此类问题


您还可以参考“了解管理多模块项目中的支持库”

避免在模块中定义依赖项,而是在项目级别定义它们。首先,将项目的所有依赖项(所有模块)放在一个Gradle文件中,如库。Gradle

ext {

   minSdkVersion = 9
   compileSdkVersion = 25
   buildToolsVersion = "25.0.0"

   //Android
   androidSupportVersion = "25.0.0"
   butterknifeVersion = "8.0.1"

/*...*/

libraries = [

        androidSupport   : "com.android.support:support-v4:${androidSupportVersion}",
        appCompat        : "com.android.support:appcompat-v7:${androidSupportVersion}",
        designSupport    : "com.android.support:design:${androidSupportVersion}",

        /*...*/

        ]



}
然后将其添加到项目主build.gradle文件(最后一行):

最后,在应用程序的模块build.gradle文件中使用它(一个如何执行的示例):


这将避免所有模块之间存在重复或冲突的依赖关系。

能否显示您的项目结构?特别是你的两个gradle文件。有时候,这可以通过简单的重建来解决——我今天遇到了这个问题。如果您已经尝试过,那么正如@SharpEdge所说,我们需要看到更多。
buildscript {

repositories {

    jcenter()

}

dependencies {

    classpath 'com.android.tools.build:gradle:2.2.2'

    /*...*/

  }

}

apply from: "./libraries.gradle"
apply plugin: 'com.android.application'
/*...*/

android {

    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

  /*...*/
}

dependencies {

    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':your-base-module-name')

    compile rootProject.ext.libraries.appCompat
    compile rootProject.ext.libraries.androidSupport
    compile rootProject.ext.libraries.designSupport

    /*...*/
}