Android--Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.

本文介绍了解决Android项目构建过程中出现的APK重复文件错误的方法,包括修改Gradle配置排除特定文件、解决依赖冲突等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/rxjava.properties
	File1: C:\Users\82661\.gradle\caches\modules-2\files-2.1\io.reactivex\rxjava\1.2.0\42bfaf64c94f3848ebf5cf1c2ea4ec9d1b3ac6c8\rxjava-1.2.0.jar
	File2: D:\ThoughtCode\Android-code\YunHealth\app\build\intermediates\exploded-aar\cn.bmob.android\bmob-sdk\3.5.0\jars\classes.jar


* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output.

解决办法:


1.在Gradle:app中加入代码:

    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }

插入后Gradle如下:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion '24.0.0'
    useLibrary 'org.apache.http.legacy'

    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }

    defaultConfig {
        applicationId "wang.fly.com.yunhealth"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
repositories{
    flatDir{
        dirs 'libs' //存放aar的目录地址
    }
}
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile name: 'SMSSDK-2.1.2', ext: 'aar'
    compile name: 'SMSSDKGUI-2.1.2', ext: 'aar'
    testCompile 'junit:junit:4.12'
    //3.5.0:请务必查看下面注释[1]
    compile 'cn.bmob.android:bmob-sdk:3.5.0'
    //如果你想应用能够兼容Android6.0,请添加此依赖(org.apache.http.legacy.jar)
    compile 'cn.bmob.android:http-legacy:1.0'
    //配置Mob短信验证
    compile 'com.android.support:appcompat-v7:25.0.0'
    compile 'com.android.support:recyclerview-v7:25.0.+'
    compile 'io.reactivex:rxjava:1.2.0'
    compile 'io.reactivex:rxandroid:1.2.0'
    compile files('libs/MobCommons-2016.1012.1447.jar')
    compile files('libs/MobTools-2016.1012.1447.jar')
}

解决结果:对我无效


2.解决依赖冲突

手动导入了Bmob第三方依赖,并将冲突的依赖文件删除(据此应该可以尝试使用gradle依赖,将rxjava包的最新版导入)

参考博文:

Gradle依赖项学习总结,dependencies、transitive、force、exclude的使用与依赖冲突解决 | Paincker | Hacker Meets Painter
http://www.paincker.com/gradle-dependencies


解决结果:成功







这个错误通常是由于dex方法数超出限制引起的。你可以尝试以下方法解决: 1.app的build.gradle文件中添加下面的代码: ```groovy android { defaultConfig { ... multiDexEnabled true } ... } dependencies { implementation 'com.android.support:multidex:1.0.3' } ``` 然后在你的Application类中添加下面的代码: ```java public class MyApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } ... } ``` 2. 如果你使用了很多第三方库,可以尝试使用ProGuard来优化代码。在app的build.gradle文件中添加下面的代码: ```groovy android { ... buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } ``` 然后在app的根目录下创建一个proguard-rules.pro文件,添加下面的代码: ``` -dontwarn okio.** -dontwarn javax.annotation.** -dontwarn com.squareup.okhttp.** -dontwarn retrofit2.Platform$Java8 -dontwarn retrofit2.Platform$Java8$.* -dontwarn retrofit2.Platform$Java9 -dontwarn retrofit2.Platform$Java9$.* -keep class com.google.gson.** { *; } -keep class org.apache.commons.io.** { *; } -keep class retrofit2.** { *; } -keepattributes Signature -keepattributes Exceptions -keepattributes InnerClasses ``` 注意:ProGuard可能会导致某些库出现问题,因此需要进行适当的测试和调整。 3. 如果以上方法都无法解决问题,可以尝试升级Gradle版本或者在项目中使用AndroidX。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值