Gradle Error - 在APK AndroidManifest.xml中复制的重复文件

时间:2013-07-22 04:33:10

标签: android android-studio gradle

我正在尝试将图书馆(Evernote Android-SDK)导入Android Studio。我找到并下载它(它出现在外部库部分或项目浏览器中)。然后它开始告诉我它正在创建一个重复的文件。

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_

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

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

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

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

3 个答案:

答案 0 :(得分:7)

我认为您不能通过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,然后以这种方式引用它。他们使用Intellij执行此操作readme includes instructions,这应该与Android Studio相同。

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

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