java - 将模块添加到我的 Android 应用程序时出现 DuplicateFileException

标签 java android gradle mqtt

我正在尝试添加 Paho MQTT我的 Android 应用程序的服务(和客户端),但在运行我的应用程序时遇到 com.android.builder.packaging.DuplicateFileException 运行时异常。

在我看来,一切都设置正确,当我清理/构建时,我根本没有收到任何错误。

我的应用程序 build.gradle 文件如下所示:

dependencies {
    compile fileTree(dir: '../org.eclipse.paho.android/service/libs', excludes: ["org.eclipse.paho.client.mqttv3-1.1.0.jar"], include: '')
    compile fileTree(include: ['*.jar'], dir: 'libs', excludes: ["*org.eclipse.paho.client.mqttv3-1.1.0.jar"])
    compile (project(':org.eclipse.paho.android.service')){
        // exclude module: "org.eclipse.paho.client.mqttv3"
        transitive=true
    }

    // Uncommenting the below (when commenting out the above) WORKS.
    //   However, I need to be able to alter the source, to I do need to be able 
    //   to import the Paho MQTT service as a module to my app.
    // compile 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0'
    // compile 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'

    ...

但是,当我运行时,我收到一个 DuplicateFileException 异常:

* 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 org/eclipse/paho/client/mqttv3/internal/nls/messages_zh_TW.properties
    File1: /Users/me/.gradle/caches/modules-2/files-2.1/org.eclipse.paho/org.eclipse.paho.client.mqttv3/1.1.0/89d827ffa47c241f2627421ef1d6c7a8c207a341/org.eclipse.paho.client.mqttv3-1.1.0.jar
    File2: /Users/me/myapp/code/myapp-android/org.eclipse.paho.android.service/build/intermediates/bundles/default/classes.jar

我的文件层次结构如下所示:

enter image description here

我觉得没问题。

有谁知道如何解决这个问题吗?该错误声称 org.eclipse.paho.client.mqttv3-1.1.0.jarclasses.jar 冲突,但我的 gradle 文件明确排除了 org.eclipse.paho.client.mqttv3-1.1.0.jar (或者我认为是这样)。

我在这里不知所措;欢迎任何指点。

最佳答案

发生这种情况是因为您的两个依赖项正在使用 Eclipse Paho MQTT 库。

以下应该可以解决问题

将以下内容添加到您的应用程序级别 gradle 文件

packagingOptions {
    exclude 'META-INF/ECLIPSE_.SF'
    exclude 'META-INF/ECLIPSE_.RSA'
}

compile("one-of-your-dependency:1.0.0"){
    exclude group: 'org.eclipse.paho'
}

关于java - 将模块添加到我的 Android 应用程序时出现 DuplicateFileException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45889589/

相关文章:

java - glide 不从 SD 卡加载图像

java - AWSLambdaClient 的替代品是什么

java - 自定义 ImageView 从 ListAdapter 中消失

android - 如何在水平平面列表中显示箭头以指示存在不可见的 ScrollView 内容

android - 有必要在gradle中激活zipalign吗?

java - 如何将其从 IntelliJ 迁移到 Android Studio

java - 如何根据数组的内容顺序有效地修改数组的内容?

java - 同时使用按键事件和鼠标事件

android - 向下滚动时隐藏 AppBar

java - Spring Boot 依赖错误 gradle