【问题标题】:Duplicate file when deploying apk部署apk时文件重复
【发布时间】:2011-11-12 10:27:22
【问题描述】:

这个问题似乎出现在少数人身上,但由于某种原因,我无法应用其他线程中建议的解决方案,所以......

我正在尝试使用嵌入式网络服务器构建一个简单的 android 应用程序。如果码头选择的服务器。我正在使用 maven 通过 maven-android-plugin 管理依赖项。我添加了 jetty-server v8.x 作为默认范围的依赖项。当我尝试将我的 apk 部署到沙箱时,出现错误

找到 APK 的重复文件:about.html

所以有问题的文件来自 jetty 包,或者更确切地说,它存在于两个 jetty 包中,一个是 jetty-server 的依赖项。那里的其他线程似乎建议我从一个罐子或另一个罐子中删除文件,但这并不是一个真正可扩展的解决方案,因为我不是罐子的所有者。

这个问题有更通用的解决方案吗?管理冲突和构建或部署时间的东西?

我应该注意,我是一个 Java 菜鸟,并且已经走了 NetBeans 和 maven 路线,因为这是我熟悉的工具包。

【问题讨论】:

    标签: android maven-2 jetty


    【解决方案1】:

    好的,找到了。解决方案是使用以下命令构建

    mvn android:deploy -Dandroid.extractDuplicates=true
    

    【讨论】:

    • 祝贺解决方案。如果可以,请确保通过单击左侧的复选标记将您的答案标记为“已接受”。这将向其他人表明您的问题已解决。干杯~
    • @clumsyjedi 我也一直在尝试解决我的重复文件问题(settings.xml)。我转换为 maven 项目并在转换中构建为 pom,但在“rgladwell.github.com/m2e-android”的第三步中,我从未收到该错误。因此,我只是尝试在 Maven 控制台中输入您的构建命令,但什么也没发生。我真的很困惑,只是希望这个错误消失。有小费吗?谢谢。
    • 对我来说没有帮助,即使在 pom.xml 中有 true
    【解决方案2】:

    有几个问题:

    首先,要集成 Jetty,您的项目将需要一个 pom.xml 文件。 Android APK(原样)不知道如何在没有某种桥接的情况下解决具有 Maven 依赖项的 pom。因此,您需要在 Eclipse 上安装一些用于 Pom 管理的插件。请按照此处的说明进行操作:http://rgladwell.github.com/m2e-android/ (我发现使用这里描述的方法创建一个新项目比将我现有的 Android 应用程序转换为 Maven 项目更容易,但我确信它会以任何一种方式工作。)

    其次,一旦你安装了它,你必须确保你的 pom.xml 包含必要的依赖项、构建目标和变量。因此,打开您的 pom.xml,并确保您拥有以下内容:

    1. 在“构建”节点中:

      sourceDirectory -> 源代码

      defaultGoal -> 安装(我想...)

    2. 在“依赖”节点中:

      ...所有 jetty/cometd 依赖项(org.cometd.java、org.eclipse.jetty 等)

    第三,您应该知道您不能只单击绿色运行按钮并通过 ADB 启动应用程序。您必须以 Maven 方式安装它(运行方式 -> Maven build/install/test/whatever)

    【讨论】:

      【解决方案3】:

      你应该打开你的war文件并检查你是否真的有两个about.html文件。前段时间,我的战争文件中有两个 web.xml。如果您确实有重复文件,那么您应该尝试排除这些文件。

      也许您的项目中有一个文件,而副本是由 maven 插件生成的。

      【讨论】:

      • 感谢您的回复,但重复文件来自包含的依赖项,即 jetty-server 和 jetty-continuation,它是 jetty-server 的依赖项。
      【解决方案4】:

      我也刚刚意识到您可能已经正确使用了 android-maven 插件。另一个重要提示:在码头依赖项上将范围更改为运行时。这对我来说构建成功,而使用默认范围(编译)总是在 APK 错误中抛出重复文件。

      【讨论】:

      • 感谢您的回复哈洛。是的,我已经在使用 maven android 插件了。您的第一条评论似乎特定于插件的设置和构建过程,我相信我已经做到了。您的第二点似乎与问题更相关。如果我将依赖项的范围更改为运行时,那么我不会收到重复文件错误。但是,运行时依赖对我没有用,因为我无法引用 jetty-server 提供的类。
      猜你喜欢
      • 2018-07-18
      • 1970-01-01
      • 2015-12-20
      • 2011-11-23
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      相关资源
      最近更新 更多