如何从library依赖库的aar文件中去除不用的jar包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从library依赖库的aar文件中去除不用的jar包相关的知识,希望对你有一定的参考价值。

android Studio中依次点击【File】——【New Module】,打开窗体【Create New Module】。

在窗体【Create New Module】中点击【Import .JAR/.AAR Package】选项,然后点击按钮【Next】,进入包文件选择界面,通过文件选择对话框选择一个.jar包或者.aar包,最后点击按钮【Finish】,即完成包文件的导入。导入的结果如图所示。

3
那么导入一个包文件后如果我们想把它给移除掉,那该怎么做呢?选择一个包文件,右键,发现右键命令中没有移除包的功能。此时,我们可以选择右键菜单中的选项【Open Module Settings】,打开窗体【Project Structure】,选择要移除的包,然后点击窗体左上角的“减号”按钮,然后点击按钮【OK】即可完成包的移除。
参考技术A

IDEA?我记得是有个,点开就有库的维护

在android中创建一个具有依赖项的库

【中文标题】在android中创建一个具有依赖项的库【英文标题】:Create a library with dependencies in android 【发布时间】:2016-09-01 04:00:36 【问题描述】:

我创建了一个库“LibA”,它依赖于许多 3rd 方库,如 RecyclerView、EventBus 等。当我尝试将它作为 aar 包含在另一个项目中时,Library 被成功包含,但依赖项没有出现在 aar 中。

Q1我怎样才能在LibA中包含依赖,这样当其他项目包含这个库时,它就不用担心我的库的内部依赖了。

Q2 gradle 是如何管理库的依赖的,是一次性下载所有的依赖,还是先检查主项目中已经存在的依赖?

Q3当有人包含来自 jcenter 的库时,是否会带来所有的依赖关系?

任何帮助将不胜感激。 :)

【问题讨论】:

【参考方案1】:

aar 文件不包含嵌套(或transitive)依赖项,并且没有描述库使用的依赖项的 pom 文件。

这意味着,如果您使用 flatDir 存储库导入 aar 文件,您还必须在项目中指定依赖项。

Q1 如何在 LibA 中包含依赖项,这样当其他项目包含此库时,它不应该担心我的库的内部依赖项。

您应该使用 ma​​ven 存储库(您必须在私有或公共 maven 存储库中发布库),您不会遇到同样的问题。 在这种情况下,gradle 使用 pom 文件下载依赖项,该文件将包含依赖项列表。

Q2 gradle 是如何管理库的依赖的,是一次性下载所有的依赖,还是先检查主项目中已经存在的依赖?

Gradle 为您处理依赖项。它不会两次或多次添加相同的依赖项。

Q3 当有人包含来自 jcenter 的库时,是否会带来所有依赖项?

如前所述,在这种情况下,依赖项有一个描述所有嵌套依赖项的 pom 文件。 Gradle 会自动下载它。

【讨论】:

只是术语上的小修正——我认为“嵌套”应该是“传递” @EugenMartynov 是的。在这种情况下,嵌套是可传递的。【参考方案2】:

Q1 如何在 LibA 中包含依赖项,这样当其他项目包含此库时,它不应该担心我的库的内部依赖项。

你应该使用一些依赖管理器。例如 Maven Central,它有 .pom 文件,它定义了应该使用的所有附加依赖项

Q2 gradle 是如何管理库的依赖的,是一次性下载所有的依赖,还是先检查主项目中已经存在的依赖?

gradle 下载所有必要的依赖项。它为依赖关系创建一个图表,尝试解决冲突并下载它们

Q3 当有人包含来自 jcenter 的库时,是否会带来所有依赖项?

如果 pom 文件中没有定义其他依赖项,则不会下载它们,只有库

【讨论】:

以上是关于如何从library依赖库的aar文件中去除不用的jar包的主要内容,如果未能解决你的问题,请参考以下文章

使用 gradle 未解决 aar 库的传递依赖关系

使用 gradle 未解决 aar 库的传递依赖关系

本地 aar 库的传递依赖

制作包含依赖库的AAR包

原生库的 Android AAR 包

在android中创建一个具有依赖项的库