Gradle错误(一)

来源:互联网 发布:电信大数据营销 编辑:程序博客网 时间:2024/06/05 14:48

日志

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/READMEFile1: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.jboss.spec.javax.interceptor\jboss-interceptors-api_1.2_spec\1.0.0.Alpha3\4c0be1c46e8f6493b2a8eb1e6117e3085eb9cc1e\jboss-interceptors-api_1.2_spec-1.0.0.Alpha3.jarFile2: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.jboss.spec.javax.el\jboss-el-api_3.0_spec\1.0.0.Alpha1\dac35e60bf8851e87698ff19b30dc3c678ca5436\jboss-el-api_3.0_spec-1.0.0.Alpha1.jarFile3: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.jboss.spec.javax.annotation\jboss-annotations-api_1.2_spec\1.0.0.Alpha1\669a896d009dc616a8e418aa22ab05245322ae9\jboss-annotations-api_1.2_spec-1.0.0.Alpha1.jar

分析

AndroidStudio开发有时出现Duplicate files copied in APK错误,导致程序不能编译或打包。原因在编译或打包阶段出现文件重复,如该错。

方案

据错误提示在gradle中配置packagingOptions()

packagingOptions{    exclude  'META-INF/README'}

注意

上述配置运行出现类似错误:

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/INDEX.LISTFile1: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.jboss.forge.furnace.container\cdi-impl\2.3.0.Final\a344eb75280bef06792c9e0d8f823671bedcd77b\cdi-impl-2.3.0.Final.jarFile2: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.jboss.forge.furnace.container\cdi-api\2.3.0.Final\cc2fcf5785ea9bc6160d829e38dbc91916d1d743\cdi-api-2.3.0.Final.jarFile3: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.jboss.windup.rules\rules-spi\2.0.0.Alpha1\671a0cdded50e47ce3777859803863fbe3271024\rules-spi-2.0.0.Alpha1-forge-addon.jarFile4: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.jboss.forge.furnace\furnace-proxy\2.3.0.Final\5c3786bcf27c306f94ccc0c3a08a85c611227a5e\furnace-proxy-2.3.0.Final.jarFile5: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.jboss.forge.furnace.container\cdi\2.3.0.Final\3f7a4a065c669a77a61314e1466c1c236afc498e\cdi-2.3.0.Final-forge-addon.jarFile6: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.jboss.windup.rules\rules\2.0.0.Alpha1\ed13111f0d0377d3fed0387fc46e307e36e458ab\rules-2.0.0.Alpha1.jarFile7: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.jboss.windup.rules\rules-api\2.0.0.Alpha1\9a3f2a849dcfa4810ecf21bb838a75d6aad75129\rules-api-2.0.0.Alpha1.jarFile8: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.jboss.classfilewriter\jboss-classfilewriter\1.0.4.Final\de3312a15f1d1385abb88ea448d5672cb514e58f\jboss-classfilewriter-1.0.4.Final.jarFile9: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.jboss.spec.javax.interceptor\jboss-interceptors-api_1.2_spec\1.0.0.Alpha3\4c0be1c46e8f6493b2a8eb1e6117e3085eb9cc1e\jboss-interceptors-api_1.2_spec-1.0.0.Alpha3.jarFile10: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.jboss.forge.furnace\furnace-api\2.3.0.Final\2d9b5c37e8f8b768377d15f562bea1b18a3d2953\furnace-api-2.3.0.Final.jarFile11: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.jboss.spec.javax.el\jboss-el-api_3.0_spec\1.0.0.Alpha1\dac35e60bf8851e87698ff19b30dc3c678ca5436\jboss-el-api_3.0_spec-1.0.0.Alpha1.jarFile12: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.jboss.windup.rules\rules-impl\2.0.0.Alpha1\73e0958080367459c88faeef36a054ff8c202866\rules-impl-2.0.0.Alpha1.jarFile13: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\org.jboss.spec.javax.annotation\jboss-annotations-api_1.2_spec\1.0.0.Alpha1\669a896d009dc616a8e418aa22ab05245322ae9\jboss-annotations-api_1.2_spec-1.0.0.Alpha1.jar

继续配置:

packagingOptions{    exclude  'META-INF/README'    exclude 'META-INF/INDEX.LIST'}

再次重复则配置直至错误消失。

引申

1. 多Module jar重复

创建多Module且用一依赖,如:

compile 'com.google.code.gson:gson:2.6.2'

Moudule中加依赖后出现jar重复,导致运行失败。此时将其中一Moudle依赖保留上面写法,其余更改如下:

provided 'com.google.code.gson:gson:2.6.2'

或右键module,选open module setting,选需修改module,切换至dependencies页面,将需修改jar之scope设provided模式。

2. 用第三方依赖jar重复

不同Module用同一依赖,可更改scope为provided模式。但若所用两第三方依赖含同jar,则不能更改scope,具体参照上述方案。

原创粉丝点击