简体   繁体   English

Android Gradle依赖关系排除

[英]Android Gradle dependency exclude

One another question about dependency duplication/excluding in gradle. 关于dependency项复制/不包括在gradle中的另一个问题。 My problem looks like that: 我的问题看起来像这样:

Dependencies tree: 依赖关系树:

  • TesterApp TesterApp
    • DataServices 数据服务
      • FirstWebService FirstWebService
        • MyJava.Common.Classes MyJava.Common.Classes
    • MyAndroidGraphics MyAndroidGraphics
      • MyAndroid.Common.Classes MyAndroid.Common.Classes
        • MyJava.Common.Classes MyJava.Common.Classes
    • MyUiViews MyUiViews
      • MyAndroid.Common.Classes MyAndroid.Common.Classes
        • MyJava.Common.Classes MyJava.Common.Classes

Project Tester App build.gradle Project Tester App build.gradle

dependencies {
  compile(project(':data.services'))
  compile(project(':my.android.graphics'))
  compile(project(':my.ui.views'))
}

Data.Services build.gradle Data.Services build.gradle

dependencies {
  compile(project(':first.webservice'))
}

My Android Graphics build.gradle 我的Android图形 build.gradle

dependencies {
  compile(project(':my.android.common.classes'))
}

My UI Views build.gradle 我的UI视图 build.gradle

dependencies {
  compile 'me.dm7.barcodescanner:zxing:1.5'
  compile(project(':my.android.common.classes'))
}

My Android Common Classes build.gradle 我的Android通用类 build.gradle

dependencies {
  compile 'com.android.support:appcompat-v7:25.2.0'
  compile 'com.android.support:support-v4:25.2.0'
  compile 'com.android.support:cardview-v7:25.2.0'
  compile(project(':my.java.common.classes'))
}

My Java Common Classes build.gradle 我的Java公共类 build.gradle

dependencies {
   compile 'com.mcxiaoke.volley:library:1.0.9'
}

As you can see, duplicates are with my.java.common.classes and my.android.common.classes , I cannot merge it as those libraries are used in different projects and are generally common for different projects. 如您所见, my.java.common.classesmy.android.common.classes具有重复my.android.common.classes ,我无法合并它,因为这些库用于不同的项目中,并且通常在不同的项目中很常见。

I was trying to use exclude like that 我试图像那样使用exclude

dependencies {
  compile(project(':data.services')){
    exclude module : ':my.java.common.classes'
  }
  compile(project(':my.android.graphics')){
    exclude module : ':my.java.common.classes'
  }
  compile(project(':my.java.common.classes'))
}

Unfortunately doesn't help much, still has 不幸的是并没有多大帮助,仍然有

com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK trust_root.bks

 File1: D:\projects\android\my.tester.app\my.java.common.classes\build\libs\my.java.common.classes-1.0.jar
 File2: D:\projects\android\my.tester.app\my.android.common.classes\build\libs\my.android.common.classes-1.2.jar

Any ideas, please help. 任何想法,请帮忙。

You should add this to your build.gradle: 您应该将其添加到build.gradle中:

android {
    ...
    packagingOptions {
        pickFirst 'trust_root.bks' // add this
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM