【问题标题】:How to find which files are using a particular external library in an Android Studio project如何在 Android Studio 项目中查找哪些文件正在使用特定的外部库
【发布时间】:2018-05-17 09:14:41
【问题描述】:

问题

在 Android Studio 项目的项目视图中的“外部库”下,我有这些库“stax-stax-api:1.0.1@jar”和“xpp3:xpp3:1.1.3.3@jar”。他们给我带来了问题,以至于我无法构建项目。我似乎无法弄清楚它们是如何到达那里或在哪里使用的。

我现在构建时收到的错误消息是:

"Error:Error: xpp3 定义的类与 Android 现在提供的类冲突。解决方案包括查找没有相同问题的较新版本或替代库(例如,对于 httpclient,请改用 HttpUrlConnection 或 okhttp ),或者使用类似 jarjar 的东西重新打包库。[DuplicatePlatformClasses]"

错误消息很好,只是它没有告诉我谁首先在使用这个库。

问题

有没有一种简单的方法可以找出它们在项目中的使用位置?或者甚至是一种简单但不需要查看每个文件的方法?这是一个包含大量文件的多模块项目。如果我可以删除它们,这会告诉我,但没有删除选项。

这可能是我忽略的非常简单的事情。任何帮助表示赞赏。很高兴根据要求添加更多信息。

我尝试过的

我尝试“分析依赖关系”,但它没有显示任何我可以看到的引用。

更新:我忘了提到我也尝试过./gradlew app:dependencies,但它只告诉我我的项目依赖于这些库。我已经知道了。有没有办法获得一些更具体的信息,以便我可以删除这些库?

更新 2: 接受的答案确实有效,但我需要重定向控制台输出。

【问题讨论】:

  • @cricket_007 “重复”实际上并没有回答我的问题。我知道这些东西是依赖关系,但它们具体来自哪里以及如何删除它们?
  • 好吧,我已经解决了这个问题,但解决方案只是运气(偶然我发现了一个没有使用的依赖项导致了问题)。不幸的是,所谓的“重复”没有帮助,但没有办法将其标记为不重复。
  • 删除库可以在不同的答案中找到。你问如何找到哪些库是其他库的一部分,这就是副本的用途。这会向您显示 artifactId 和 groupId,您可以从中明确排除项目中已编译的项目
  • 如果输出对于终端来说太大,重定向到一个文件。 ./gradlew app:dependencies > dependencies.txt
  • 好的,谢谢你的提示。在分析结果后,我看不到对我添加回的库的任何直接引用。但是我认为如果我不知道这个库并遵循这棵树,我也会解决这个问题。所以是的,我现在会更自信地说它确实是重复的。谢谢你的帮助!不知道为什么正常的 gradle 任务没有输出所有数据 - 双击任务 - >帮助 - >依赖项下的任务时。

标签: android intellij-idea android-gradle-plugin


【解决方案1】:
gradle app:dependencies

它会显示你项目的依赖树

在这个link 上很好地解释了该命令以及如何使用它。

使用它来重定向控制台输出(如果它被剪辑):

./gradlew app:dependencies > dependencies.txt

【讨论】:

  • 我已经尝试过了,但它只给了我高级信息。你知道如何使它更具体吗?我认为这可能是正确的道路;找到正确的 Gradle 命令。我得研究 Gradle。
  • 好的,这确实有效,但我需要我在 cricket_007 的回答中添加的提示
  • 谢谢你,罗伯托
【解决方案2】:

可以在“Project-tool-window”中探索Project,以查看在“Android tool Window”中不可见的使用的外部库。 https://www.jetbrains.com/help/idea/project-tool-window.html 这样我就解决了我的问题。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多