将模块添加到我的Android应用程序时获取DuplicateFileException
问题描述:
我试图将Paho MQTT服务(和客户端)添加到我的Android应用程序,但运行我的应用程序时遇到了com.android.builder.packaging.DuplicateFileException
运行时异常。将模块添加到我的Android应用程序时获取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
我的文件层次结构是这样的:
这看起来对我来说还不错。
有没有人有任何关于如何解决这个问题的指针?该错误声称org.eclipse.paho.client.mqttv3-1.1.0.jar
与classes.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'
}