Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Gradle应用程序和库jar冲突_Android_Jar_Gradle - Fatal编程技术网

Android Gradle应用程序和库jar冲突

Android Gradle应用程序和库jar冲突,android,jar,gradle,Android,Jar,Gradle,我想将一个大型应用程序从Ant迁移到Gradle。 由于应用程序被(错误地)创建为多个库,第一次迁移将保留相同的模块(它将在第二步中重构),并且它可能会以这种结构结束: -- Project/ |-- App/ |-- libs/ |-- src/... |-- build.gradle |-- Module1/

我想将一个大型应用程序从Ant迁移到Gradle。 由于应用程序被(错误地)创建为多个库,第一次迁移将保留相同的模块(它将在第二步中重构),并且它可能会以这种结构结束:

-- Project/ |-- App/ |-- libs/ |-- src/... |-- build.gradle |-- Module1/ |-- libs/ |-- lib1.jar |-- lib2.jar |-- src/... |-- build.gradle |-- Module2/ |-- libs/ |-- lib2.jar |-- lib3.jar |-- src/... |-- build.gradle build.gradle settings.gradle --计划/ |--应用程序/ |--自由基/ |--src/。。。 |--格雷德尔先生 |--模块1/ |--自由基/ |--lib1.jar |--lib2.jar |--src/。。。 |--格雷德尔先生 |--模块2/ |--自由基/ |--lib2.jar |--lib3.jar |--src/。。。 |--格雷德尔先生 格雷德尔先生 格雷德尔酒店 应用程序build.gradle如下所示:

... apply plugin: 'com.android.application' dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:support-v4:20.0.0' compile 'com.android.support:appcompat-v7:20.0.0' compile project(':Module1') compile project(':Module2') } ... ... apply plugin: 'com.android.library' dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:support-v4:20.0.0' compile 'com.android.support:appcompat-v7:20.0.0' } ... ... 应用插件:“com.android.application” 依赖关系{ 编译文件树(目录:“libs”,包括:['*.jar']) 编译'com.android.support:support-v4:20.0.0' 编译'com.android.support:appcompat-v7:20.0.0' 编译项目(“:Module1”) 编译项目(“:Module2”) } ... 然后每个模块build.gradle都将是这样的:

... apply plugin: 'com.android.application' dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:support-v4:20.0.0' compile 'com.android.support:appcompat-v7:20.0.0' compile project(':Module1') compile project(':Module2') } ... ... apply plugin: 'com.android.library' dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:support-v4:20.0.0' compile 'com.android.support:appcompat-v7:20.0.0' } ... ... 应用插件:“com.android.library” 依赖关系{ 编译文件树(目录:“libs”,包括:['*.jar']) 编译'com.android.support:support-v4:20.0.0' 编译'com.android.support:appcompat-v7:20.0.0' } ... 每个模块都可以正确编译,但问题发生在构建APK时,因为lib2.jar被复制了2次,导致错误:

错误:梯度:任务“:app:packageDebug”的执行失败

在APK META-INF/ASL2.0中复制的重复文件 然后是通往两个罐子的路

我如何告诉Gradle在从每个模块构建APK时不要多次复制相同的JAR? 目前,我无法将依赖项转移到Maven central repo,即使我将来会这样做。
也许在父应用程序中添加所有LIB?这对我来说不是很好。。。在这种情况下,如何在build.gradle模块中指定依赖项?

在gradle项目文件中,您可以将其添加到“android”块中:


META-INF/ASL2.0文件似乎正在复制。

您是否尝试过这种方式:tools.android.com/tech-docs/new-build-system/tips(最后一段)?