【问题标题】:Gradle Error - Duplicate Files copied in APK AndroidManifest.xmlGradle 错误 - 在 APK AndroidManifest.xml 中复制的文件重复
【发布时间】:2017-05-31 19:47:28
【问题描述】:

我正在尝试将库(Evernote Android-SDK)导入 Android Studio。我得到了 gradle 来找到并下载它(它出现在外部库部分或项目资源管理器中)。然后它开始告诉我它正在创建一个重复文件。

buildscript {
    repositories {
        mavenCentral()
   }
   dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
   }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.android.support:support-v4:13.0.+'
    compile 'com.evernote:android-sdk:1.1.+'
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 16
    }
}

这是出现的一组错误。

Gradle: : duplicate files during packaging of APK C:\Users\SSMI\My Projects\AutoNote\AndroidProject\AutoNote\build\apk\AutoNote-debug-unaligned.apk
Gradle: Execution failed for task ':AutoNote:packageDebug'.
    > Duplicate files copied in APK AndroidManifest.xml
    File 1: C:\Users\SSMI\My Projects\AutoNote\AndroidProject\AutoNote\build\libs\AutoNote-debug.ap_
    File 2: C:\Users\SSMI\My Projects\AutoNote\AndroidProject\AutoNote\build\libs\AutoNote-debug.ap_

这里有什么问题,我该如何解决?

回答
所以我所做的是在项目根目录中放置一个名为库的文件夹。我将 evernote sdk 库文件夹移到其中并将其命名为 evernote。

然后我去文件项目结构。我忽略了警告。我进入模块点击+并添加了evernote文件夹。然后我选择了我的应用程序项目模块并转到依赖项选项卡。我点击 + 那里(你可能需要 Alt+Insert 如果它不会点击)并添加我导入的模块(evernote)。

然后我被骗以为它不起作用,因为我忘记在源文件中导入它。

【问题讨论】:

  • 请检查您的项目结构(文件 -> 项目结构)。你的印象笔记库是如何包含在你的项目中的?它应该作为一个模块添加一次。

标签: android android-studio gradle


【解决方案1】:

我不认为你可以通过 maven 和 Android Studio 引用 Evernote Android SDK。问题源于Android库不能打包成简单的jar。

Evernote 库是使用与 Android Studio gradle 插件不兼容的 maven-android-plugin 构建的。这是因为 maven 插件使用 apklib 格式重新分发库,而 gradle 使用新的 aar 格式。这就是为什么 gradle 无法将 Evernote 的 AndroidManifest 与您自己的 AndroidManifest 合并,从而导致重复。

相反,您必须克隆 Evernote SDK 的源代码,手动将其导入 Android Studio,然后以这种方式引用它。他们的readme includes instructions 使用 Intellij 执行此操作,这应该与 Android Studio 相同。

【讨论】:

  • 感谢您的帮助。我现在确实让它工作了。真的太糟糕了,你不能像我试图做的那样使用 gradle 来获取最新版本。它应该能够按照我的方式工作。
  • 我以为我已经成功了。所以它说它编译了fin​​,但android studio仍然在我引用evernote api部分的行中显示错误。是否还有其他步骤可以使代码完成正常工作?
  • 不应该有。如果您修改了 gradle 文件,您可以尝试将它们与您的 Android Studio 项目重新同步 - stackoverflow.com/a/17098412/108
  • 好的。这一切似乎都在起作用。我只是做得不太好。
【解决方案2】:

我遇到了同样的错误,这似乎是由于两个 jar 文件中有一个同名的文件造成的。对我来说,这两个文件的根目录中都有一个名为“about.html”的文件。重命名文件后,一切正常。

【讨论】:

    【解决方案3】:

    您已经添加了一个包含 Manifest.xml 文件的库 jar 您可以将类型 jar 重命名为 zip。然后解压缩 zip 并删除 Manifest.xml 文件。 之后,您可以再次压缩文件夹以进行压缩。最后将 type 重命名为 jar。

    【讨论】:

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