【问题标题】:Duplicate files copied in APK Android - Can it be merged?在 APK Android 中复制的重复文件 - 可以合并吗?
【发布时间】:2017-07-13 03:55:43
【问题描述】:

在我的 android 项目中,我将两个库作为 JAR 包含到 libs 文件夹中。我将它们添加到构建 Gradle 中,如下所示。

dependencies {
    compile files('libs/siddhi-core-4.0.0-M13-SNAPSHOT.jar')
    compile files('libs/siddhi-execution-math-4.0.2-SNAPSHOT.jar')
}

这两个 jar 文件具有相同名称(“org.wso2.siddhi.annotation.Extension”)但内容不同的文件。这两个文件对项目都很重要。 由于它具有相同的名称 gradle 不会构建说

Duplicate files copied in APK

如何将这两个文件合并为一个同名文件? 这两个文件是带有类名列表的文本文件。在两个文件中,它们有两个不同的列表。所以我想将它们合并到同名文本文件中的一个列表中。

【问题讨论】:

    标签: android android-studio gradle build.gradle


    【解决方案1】:

    我终于找到了答案。在 app build gradle 中,您可以指定合并有冲突的文件。

    packagingOptions {         
        merge 'META-INF/annotations/org.wso2.siddhi.annotation.Extension'
    }
    

    详情看这里https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.PackagingOptions.html

    【讨论】:

      【解决方案2】:

      您可以通过先解压缩文件从 jar 中排除文件,然后复制没有这些文件的 jar, 之后编译那个 unZip 复制文件而不是实际文件,像这样

      task unzipJar(type: Copy) {
         from zipTree('libs/siddhi-core-4.0.0-M13-SNAPSHOT.jar')
         into ("$buildDir/libs/siddhi-core-4.0.0-M13-SNAPSHOT")
         include "**/*.class"
         exclude "org.wso2.siddhi.annotation.Extension"
      }
      
      dependencies {
         compile files('libs/siddhi-execution-math-4.0.2-SNAPSHOT.jar')
         compile files("$buildDir/libs/siddhi-core-4.0.0-M13-SNAPSHOT") {
            builtBy "unzipJar"
         }
      }
      

      请检查一下,即使我没有机会使用它,但它应该可以工作。

      【讨论】:

      • 但这不是它所要求的:我怎样才能保留这两个文件或将它们合并到一个文件中?
      • 为什么你需要两次相同的文件?
      • 两个文件的内容不同。它包含稍后在程序中扫描的扩展列表
      • 奇怪的是两个不同的功能文件,同名同包。
      • "org.wso2.siddhi.annotation.Extension" 是一个包含类列表的文本文件。必须将这些文件中的所有内容放在一个文件中以执行其他类。
      【解决方案3】:

      你不能因为两个文件具有相同的名称解析。(org.wso2.siddhi.annotation.Extension)。 所以它不会起作用。 让我们说一些你如何包含两个罐子而不是你将如何使用其中一个 IE。运行时如何将类唯一标识为两个类具有相同的命名空间和名称。

      【讨论】:

        【解决方案4】:

        试试这个

         dependencies {
               compile files('libs/siddhi-execution-math-4.0.2-SNAPSHOT.jar')
               compile files("$buildDir/libs/siddhi-core-4.0.0-M13-SNAPSHOT") {
                  builtBy "unzipJar"
               }
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-10-24
          • 2016-12-13
          • 1970-01-01
          • 2017-10-07
          • 2017-04-13
          • 2012-03-06
          • 2016-10-01
          相关资源
          最近更新 更多