Java Gradle生成失败-在APK META-INF中复制了重复的文件

Java Gradle生成失败-在APK META-INF中复制了重复的文件,java,android,gradle,android-gradle-plugin,Java,Android,Gradle,Android Gradle Plugin,我一进入elasticsearch依赖项,就会出现此错误 编译“org.elasticsearch.client:transport:5.0.0” 详细错误日志: Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDevDebug'. > com.android.build.api.transform.TransformException: com.android.builder.packa

我一进入elasticsearch依赖项,就会出现此错误

编译“org.elasticsearch.client:transport:5.0.0”

详细错误日志:

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDevDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/io.netty.versions.properties
    File1: C:\Users\Dell\.gradle\caches\modules-2\files-2.1\io.netty\netty-buffer\4.1.5.Final\b5fb6bccda4d63d4a74c9faccdf32f77ab66abc1\netty-buffer-4.1.5.Final.jar
    File2: C:\Users\Dell\.gradle\caches\modules-2\files-2.1\io.netty\netty-handler\4.1.5.Final\6262900ee9487e62560030a136160df953b1cd6b\netty-handler-4.1.5.Final.jar
    File3: C:\Users\Dell\.gradle\caches\modules-2\files-2.1\io.netty\netty-transport\4.1.5.Final\37126b370722ff9631ee13c91139aacec0a71d1d\netty-transport-4.1.5.Final.jar
    File4: C:\Users\Dell\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec-http\4.1.5.Final\87bda1b9ec7e3f75ca721fc87735cbedad2aa1a\netty-codec-http-4.1.5.Final.jar
    File5: C:\Users\Dell\.gradle\caches\modules-2\files-2.1\io.netty\netty-resolver\4.1.5.Final\5f367bedcdc185a727fda3296b9a18014cdc22c4\netty-resolver-4.1.5.Final.jar
    File6: C:\Users\Dell\.gradle\caches\modules-2\files-2.1\io.netty\netty-codec\4.1.5.Final\66bbf9324fa36467d041083f89328e2a24ec4f67\netty-codec-4.1.5.Final.jar
    File7: C:\Users\Dell\.gradle\caches\modules-2\files-2.1\io.netty\netty-common\4.1.5.Final\607f8433d8782445e72abe34e43a7e57e86a5e6c\netty-common-4.1.5.Final.jar
渐变文件:

    apply plugin: 'com.android.application'
    apply plugin: 'com.neenbedankt.android-apt'

    android {
        compileSdkVersion 25
        buildToolsVersion '25.0.3'

        defaultConfig {
            applicationId "..."
            minSdkVersion 18
            targetSdkVersion 25
            versionCode 6
            versionName "20170616.06"
            multiDexEnabled true
            ndk {
                abiFilter "armeabi-v7a"
            }

        }

        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                //    signingConfig signingConfigs.release
            }
        }
        productFlavors {
            dev {
                applicationId "..."
                minSdkVersion 21
            }
            prod {
                applicationId "..."
            }
        }
        packagingOptions {
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/DEPENDENCIES'
            exclude 'META-INF/LICENSE-FIREBASE.txt'
            exclude 'META-INF/NOTICE'
            exclude 'META-INF/DEPENDENCIES.txt'
            exclude 'META-INF/LICENSE.txt'
            exclude 'META-INF/NOTICE.txt'
            exclude 'META-INF/NOTICE'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/DEPENDENCIES'
            exclude 'META-INF/notice.txt'
            exclude 'META-INF/license.txt'
            exclude 'META-INF/dependencies.txt'
            exclude 'META-INF/LGPL2.1'

        }
        lintOptions {
            abortOnError false
        }
    }
    repositories {
        jcenter()
        maven { url "https://dl.bintray.com/drummer-aidan/maven" }
        mavenCentral()
    }
    configurations {
        compile.exclude group: "org.apache.httpcomponents", module: "httpclient"
    }
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        // https://mvnrepository.com/artifact/commons-io/commons-io
        compile group: 'commons-io', name: 'commons-io', version: '2.4'

        compile 'com.android.support:appcompat-v7:' + rootProject.ext.supportLibraryVersion
        compile 'com.android.support:cardview-v7:' + rootProject.ext.supportLibraryVersion
        compile 'com.android.support:recyclerview-v7:' + rootProject.ext.supportLibraryVersion
        compile 'com.android.support:support-v4:' + rootProject.ext.supportLibraryVersion
        compile 'com.android.support:design:' + rootProject.ext.supportLibraryVersion
        compile 'com.android.support:percent:' + rootProject.ext.supportLibraryVersion
        compile 'com.android.support:animated-vector-drawable:' + rootProject.ext.supportLibraryVersion
        compile 'com.android.support:support-annotations:' + rootProject.ext.supportLibraryVersion
        compile 'com.android.support:support-compat:' + rootProject.ext.supportLibraryVersion
        compile 'com.android.support:support-core-ui:' + rootProject.ext.supportLibraryVersion
        compile 'com.android.support:support-v13:' + rootProject.ext.supportLibraryVersion
        compile 'com.android.support:support-v4:' + rootProject.ext.supportLibraryVersion'        

        compile 'com.google.firebase:firebase-storage:' + rootProject.ext.firebaseVersion
        compile 'com.google.firebase:firebase-common:' + rootProject.ext.firebaseVersion
        compile 'com.google.firebase:firebase-auth:' + rootProject.ext.firebaseVersion
        compile 'com.google.firebase:firebase-database:' + rootProject.ext.firebaseVersion
        compile 'com.google.firebase:firebase-crash:' + rootProject.ext.firebaseVersion
        compile 'com.google.firebase:firebase-core:' + rootProject.ext.firebaseVersion
        // this line must be included to integrate with Firebase
        compile 'com.google.firebase:firebase-messaging:' + rootProject.ext.firebaseVersion
        // this line must be included to use FCM
        compile 'com.google.firebase:firebase-ads:' + rootProject.ext.firebaseVersion

        compile 'com.google.android.gms:play-services-auth:' + rootProject.ext.firebaseVersion
        compile 'com.google.android.gms:play-services-plus:' + rootProject.ext.firebaseVersion
        compile 'com.google.android.gms:play-services-location:' + rootProject.ext.firebaseVersion
        compile 'com.google.android.gms:play-services-places:' + rootProject.ext.firebaseVersion


    compile "im.ene.toro2:toro-ext-exoplayer2:${toroVersion}"
    compile group: 'com.google.code.gson', name: 'gson', version: '2.8.0'


    compile 'com.jakewharton:butterknife:' + rootProject.ext.butterknifeVersion
    apt 'com.jakewharton:butterknife-compiler:' + rootProject.ext.butterknifeVersion

    //RxAndroid
    compile 'io.reactivex:rxandroid:' + rootProject.ext.rxandroidVersion
    compile 'io.reactivex:rxjava:' + rootProject.ext.rxjavaVersion
    compile 'com.squareup.retrofit2:adapter-rxjava:' + rootProject.ext.retroRxAdapterVersion
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.google.firebase:firebase-auth:10.0.1'
    compile 'com.firebaseui:firebase-ui-database:0.4.0'
    compile 'com.google.firebase:firebase-invites:10.2.1'
    compile 'com.firebase:firebase-client-android:2.5.2+'
    compile 'com.facebook.android:facebook-android-sdk:[4,5)'
    compile 'com.android.support:multidex:1.0.1'
    compile 'pub.devrel:easypermissions:0.1.5'
    compile 'com.github.bumptech.glide:glide:3.6.0'
    compile 'de.hdodenhof:circleimageview:2.0.0'
    compile 'com.fasterxml.jackson.core:jackson-databind:2.7.3'
    compile 'com.danikula:videocache:2.6.4'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.dinuscxj:circleprogressbar:1.1.1'
    compile 'com.afollestad.material-dialogs:core:0.9.4.5'
    compile 'com.afollestad:easyvideoplayer:0.3.0'
    compile 'com.googlecode.mp4parser:isoparser:1.1.22'
    compile 'javax.inject:javax.inject:1'
    compile 'com.google.firebase:firebase-storage:10.0.1'
    testCompile 'junit:junit:4.12'
    compile 'com.google.api-client:google-api-client:1.21.0'
    compile 'com.google.apis:google-api-services-people:v1-rev2-1.21.0'
    compile 'org.elasticsearch.client:transport:5.0.0'

    compile project(':ffmpeg4android_lib')

}


apply plugin: 'com.google.gms.google-services'
PS:已经有很多类似的帖子发布了,但是没有一篇对我有帮助


有人能帮我吗?另外,请告诉我解决这些问题的一般方法。

在android部分添加下面的代码

packagingOptions {
    pickFirst  'META-INF/*'
}
github发行票证建议使用

 packagingOptions {
        pickFirst 'META-INF/INDEX.LIST'
        pickFirst 'META-INF/LICENSE'
        pickFirst 'META-INF/io.netty.versions.properties'
    }

不建议直接在android应用程序中使用
ElasticSearch
。这样做的缺点是:

  • 任何人都可以反编译您的应用程序,并获取您的
    ElasticSearch
    实例
    restapi
    链接,以他们想要的方式使用您的
    索引
    ,甚至修改或删除它们。API链接必须公开,用户才能访问
  • Android SDK依赖项
    ElasticSearch
    依赖项之间,会有类似于这个问题的依赖项冲突
  • 如果要自定义生成请求的方式,则必须发布应用程序的更新
  • 更好的方法是,制作自己的API来处理
    ElasticSearch
    实例的请求。从应用程序中,对该实例发出请求,该实例依次对您的
    ElasticSearch
    实例发出请求。当有人点击您的API时,您可以获取用于搜索的变量并构建自己的查询。这种方法的优点是:

  • 你的
    ElasticSearch
    链接可以是私有的,没有人可以删除你的索引
  • 如果要修改生成查询的方式,则无需更新应用程序的代码
  • 您不会遇到依赖冲突
  • 别忘了把

    packagingOptions {
        pickFirst  'META-INF/*'
    }
    

    如果您使用模块,请创建所有gradle文件。

    尝试此
    android{packagingOptions{pickFirst'META-INF/INDEX。列出'pickFirst'META-INF/LICENSE'pickFirst'META-INF/io.netty.versions.properties'}
    错误:将字节码转换为dex时出错:原因:dex无法解析版本52字节码。这是由使用Java8或更高版本编译的库依赖项引起的。如果您在库子模块中使用“java”gradle插件,请将targetCompatibility='1.7'sourceCompatibility='1.7'添加到该子模块的build.gradle文件。
    您的一个依赖项使用android不支持的java 8。如果你想保持这种依赖性,你必须升级到Android Studio 3.0以获得内置的Java 8支持。仅仅重复其他答案是没有用的,它只是给这个网站增添了混乱。为了让你的答案有用,它应该包含新的信息,并对问题及其解决方案提供新的见解。