打包过程中的复制文件 - 消息.JodaTime的属性



我最近在我的Android应用程序中用JodaDateTime类替换了JavaDate类。我使用Jackson来解析json.我将以下行添加到我的 build.gradle 文件中

compile com.fasterxml.jackson.datatype:jackson-datatype-joda:2.4.3
compile net.danlew:android.joda:2.7.1

它破坏了我的构建。错误消息duplicate files during packaging of APK 。它还建议了以下备选方案。

android {
  packagingOptions {
    exclude 'org/joda/time/format/messages_da.properties'
  }
}

JodaTime中有很多这样的文件,例如"messages_da.properties","messages_fr.properties"。我相信这些用于提供基于区域设置的格式。

我的预感表明,这些文件不应该被排除在外。如果那里的专家可以为此提供解决方案,那就太好了

实际上是由于依赖于项目中的多个joda-time模块而导致的问题。

若要解决此问题,应从项目中包含重复joda-time模块的任何依赖项中排除任何重复的joda-time模块。

要找出哪些依赖项包括重复的joda-time,请使用命令./gradlew app:dependencies列出完整的依赖项图。然后查看依赖项列表并找到包含重复joda-time模块的依赖项。然后,从包含其副本的任何依赖项中排除joda-time。完成此操作后,您的应用程序将构建良好。

如何从依赖项中排除joda-time的示例:

 // An offending dependency that contains a duplicate joda-time.
 compile('com.some.project:some-module:0.1') {
        // Exclude joda-time from this dependency to remove the errors.
        exclude module: 'joda-time'
    }

这是处理依赖关系冲突的正确方法。

我解决了这个问题,就像

android {
    packagingOptions {
        exclude 'org/joda/time/format/*.properties'
    }
}

我的肮脏解决方案:

android {
    packagingOptions {
        exclude 'META-INF/maven/joda-time/joda-time/pom.properties'
        exclude 'META-INF/maven/joda-time/joda-time/pom.xml'
        pickFirst 'org/joda/time/format/messages.properties'
        pickFirst 'org/joda/time/format/messages_cs.properties'
        pickFirst 'org/joda/time/format/messages_da.properties'
        pickFirst 'org/joda/time/format/messages_de.properties'
        pickFirst 'org/joda/time/format/messages_en.properties'
        pickFirst 'org/joda/time/format/messages_es.properties'
        pickFirst 'org/joda/time/format/messages_fr.properties'
        pickFirst 'org/joda/time/format/messages_it.properties'
        pickFirst 'org/joda/time/format/messages_ja.properties'
        pickFirst 'org/joda/time/format/messages_no.properties'
        pickFirst 'org/joda/time/format/messages_nl.properties'
        pickFirst 'org/joda/time/format/messages_pl.properties'
        pickFirst 'org/joda/time/format/messages_pt.properties'
        pickFirst 'org/joda/time/format/messages_ru.properties'
        pickFirst 'org/joda/time/format/messages_tr.properties'
    }
}

最新更新