当前位置: 首页 > 工具软件 > AndroidCommon > 使用案例 >

android依赖本地工程排除,Android Gradle依赖项排除(Android Gradle dependency exclude)

庄元龙
2023-12-01

Android Gradle依赖项排除(Android Gradle dependency exclude)

另一个关于dependency重复/在gradle中排除的问题。 我的问题看起来像这样:

依赖树:

TesterApp

数据服务

FirstWebService

MyJava.Common.Classes

MyAndroidGraphics

MyAndroid.Common.Classes

MyJava.Common.Classes

MyUiViews

MyAndroid.Common.Classes

MyJava.Common.Classes

Project Tester App build.gradle

dependencies {

compile(project(':data.services'))

compile(project(':my.android.graphics'))

compile(project(':my.ui.views'))

}

Data.Services build.gradle

dependencies {

compile(project(':first.webservice'))

}

我的Android Graphics build.gradle

dependencies {

compile(project(':my.android.common.classes'))

}

我的UI视图 build.gradle

dependencies {

compile 'me.dm7.barcodescanner:zxing:1.5'

compile(project(':my.android.common.classes'))

}

我的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'))

}

我的Java公共类 build.gradle

dependencies {

compile 'com.mcxiaoke.volley:library:1.0.9'

}

正如您所看到的,重复是my.java.common.classes和my.android.common.classes ,我无法合并它,因为这些库在不同的项目中使用,并且通常用于不同的项目。

我试图使用那样的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'))

}

遗憾的是没有多大帮助,仍然有

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

任何想法,请帮助。

One another question about dependency duplication/excluding in gradle. My problem looks like that:

Dependencies tree:

TesterApp

DataServices

FirstWebService

MyJava.Common.Classes

MyAndroidGraphics

MyAndroid.Common.Classes

MyJava.Common.Classes

MyUiViews

MyAndroid.Common.Classes

MyJava.Common.Classes

Project Tester App build.gradle

dependencies {

compile(project(':data.services'))

compile(project(':my.android.graphics'))

compile(project(':my.ui.views'))

}

Data.Services build.gradle

dependencies {

compile(project(':first.webservice'))

}

My Android Graphics build.gradle

dependencies {

compile(project(':my.android.common.classes'))

}

My UI Views build.gradle

dependencies {

compile 'me.dm7.barcodescanner:zxing:1.5'

compile(project(':my.android.common.classes'))

}

My Android Common Classes 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

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.

I was trying to use exclude like that

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.

原文:https://stackoverflow.com/questions/45185388

更新时间:2019-11-19 02:25

最满意答案

您应该将它添加到build.gradle:

android {

...

packagingOptions {

pickFirst 'trust_root.bks' // add this

}

}

You should add this to your build.gradle:

android {

...

packagingOptions {

pickFirst 'trust_root.bks' // add this

}

}

2017-07-19

相关问答

问题出在'play-services-gcm'而不是'play-services' compile ('co.realtime:messaging-android:2.1.58'){

exclude group: 'com.google.android.gms', module: 'play-services'

}

那些错误的错误......好吧我以为我可以删除这个问题,但是,有一段时间有人有同样的问题,所以我会留在这里希望也许它可以帮助有需要的人。 The problem wa

...

我个人“我希望我在一年前知道这个”列表中的一件事就是你可以手动添加Realm添加到你的项目而不是依赖Gradle插件。 buildscript {

ext.kotlin_version = '1.2.51'

ext.realm_version = '5.3.1'

repositories {

jcenter()

mavenCentral()

}

dependencies {

classpath "io.rea

...

您可能还需要排除测试依赖性。 在脚本中包含以下内容: testCompile("org.springframework.boot:spring-boot-starter-te‌​st") {

exclude group: 'com.vaadin.external.google', module: 'android-json

'}

It's likely you have a test dependency as well that needs to be excluded. Inclu

...

您应该将它添加到build.gradle: android {

...

packagingOptions {

pickFirst 'trust_root.bks' // add this

}

}

You should add this to your build.gradle: android {

...

packagingOptions {

pickFirst 'trust_root.bks' // add this

...

解决方案是将xstream降级到v1.4.7并排除xmlpull。 compile ('com.thoughtworks.xstream:xstream:1.4.7') {

exclude group: 'xmlpull', module: 'xmlpull'

}

我不知道为什么,但我猜测它必须与java8相关。 Solution was to downgrade xstream to v1.4.7 and exclude xmlpull. compile ('com.thoughtwo

...

实际上,您排除了群组,因为我相信您想排除完整的ProjectTwo模块。 如果我没有错,然后尝试: configurations {

compile.exclude module: 'ProjectTwo'

}

You are actually excluding group where as I believe you want to exclude complete ProjectTwo module. If I am not wrong then try: configuratio

...

您不能排除工件的某些特定部分,因为Gradle不知道其中的内容。 要Gradle它是单片的:你要么包含神器内部的任何东西,要么不包括它。 使用ProGuard可以实现您想要的功能。 这是构建应用程序发布版本时的常见步骤,您可以指定要缩小的规则,这将删除不必要的代码。 Android文档有一个代码缩小的文章,其中包含更多详细信息。 可能出现的唯一问题是,如果依赖项本身包含ProGuard配置文件,则可能无法强制缩小指定要保留的内容。 但是,我刚刚调查了你问过的AAR,情况似乎并非如此。 You ca

...

您在应用和测试中使用的是不同版本。 您可以使用以下方法强制应用中的库: compile 'com.google.android.apps.common.testing.accessibility.framework:accessibility-test-framework:2.1.0'

或者只能在测试中使用espresso框架以避免问题: androidTestcompile 'com.android.support.test.espresso:espresso-core:2.2.2'

You

...

只需将此任务添加到build.gradle,然后运行gradle findDuplicates即可找到jar task findDuplicates {

doLast {

def findMe = 'org/apache/commons/codec/StringEncoderComparator.class'

configurations.runtime.asFileTree.matching {

include '**/*.jar'

...

所以我在一位朋友的帮助下想出了这个。 我之所以无法删除support-annotation是因为大多数其他依赖项都使用support-v4作为传递依赖,而那些support-v4也有自己的support-annotation副本。 现在有两个解决方案 解决方案1: 从包含support-v4作为传递依赖的所有依赖项中排除support-annotation 。 解决方案2: 仅从我的support-v4依赖项中排除support-annotation ,并从support-v4作为传递依赖项的所有

...

 类似资料: