当前位置: 首页 > 知识库问答 >
问题:

一个Android库JAR可以依赖于一个Android库AAR吗?

景嘉实
2023-03-14

我现在想让foolib依赖于barlib,但是barlib确实使用了资源,所以我不能将barlib打包为一个jar。相反,它被打包为AAR。我有没有可能让foolib依赖于barlib但继续将foolib打包为一个jar?或者,在foolib中有一个AAR依赖项是否也迫使我使它成为一个AAR?

共有1个答案

闾丘书
2023-03-14

如果您有一个包含JAR文件和AAR文件作为依赖项的项目(参见下面的注释),那么您可以将特定于Android的JAR作为依赖项,依赖于Android API中的类,尽管JAR文件不能包含您已经知道的Android资源。仅仅因为它依赖于Android类并不意味着它需要被包装成一个AAR。

这里我要讨论的是一个包含大量JAR和AAR依赖项的单模块项目。一个JAR文件只是类文件(可能还有非Android资源和其他文件)的集合,没有依赖性,所以没有什么可以破坏的。当需要进行构建时,构建器只是将所有东西捆绑在一起并打包,而不检查JAR是否对其他类有不可解析的依赖关系--您将在运行时发现类加载器异常。

如果您谈论的是IDE中多模块项目中的库模块,那么这是另一回事。如果您有一个可以编译为普通JAR的模块a(它使用构建文件中的apply plugin:'java'语句),那么它就不能依赖于编译为AAR的Android模块(apply plugin:'android-library')。这可能永远无法解决,或者至少在可预见的将来无法解决:这是因为Android模块有一个复杂得多的源代码文件夹概念,而Gradle中的Java插件无法理解Android的源代码集。

相反,Android模块可以依赖于普通Java模块。

注意

由于Gradle builder中尚未解决的限制,您不能像构建文件中的JAR那样访问本地AAR(通过compile files(...)语句引用它们);您必须愚弄Gradle,使其认为它们在某种Maven存储库中(也许可以将它们放在实际的Maven存储库中,它可以是本地的)。如果需要的话,请参见将本地.aar文件添加到我的gradle构建中。

 类似资料:
  • 问题内容: 嗨,我有一个产生AAR的Android库项目。 一切都很好,但是当我在另一个项目中使用AAR时,出现此错误: AAR使用了毕加索,生成毕加索的依赖项是否也可以导出? 问题答案: 如何设置本地Maven存储库。 警告:以下食谱工作,但也许可以使用改善,因为我是 远 从Maven的专家。去年,我在CWAC库中采用了这种方法。 步骤#1:在您的图书馆专案档案中加入您的 区块。还添加和语句以提

  • 问题内容: 我看到了类似的问题,但未找到可接受的答案。问题-我有一些小功能我自己的android库。我的库使用其他库-fe Hawk(无sql数据库)。我的图书馆gradle文件: 图书馆工作正常。如果我将它用作另一个项目中的项目-它也可以工作。但是当我生成文件(带有-> )并包含到单独的项目中时-失败。项目仅查看我的图书馆的班级。Hawk com.orhanobut.hawk软件包和off其他软

  • 我有一个android gradle项目结构,看起来像这样 < li >模块1-aar < li >模块2-aar < li>testapp-apk 关键事实 模块2 aar取决于模块1 aar。 testapp apk取决于模块2 aar。 JDK11 Gradle 7.4.2 Androidgradle插件7.1.3 没有javadocs、gpg、签名或发布,一切都构建得很好。App运行,一切

  • 问题内容: 我经历了太多的代码,试图找出我做错了什么,但我却步履蹒跚,浪费时间。这将非常简单,但我无法弄清楚。 我正在开发一个Android应用程序,需要将2个微调器放在一个活动上。第二个微调器将根据第一个微调器上选择的条目进行填充。听起来很简单吧? 所以这就是我想做的。如果用户选择Mobile,则应显示中的内容,当用户选择Large business 时应运行,最后一个条目应调用。我得到的只是一

  • 我写了一些库,其中有一部分UI。此外,这个库使用另一个库。我想提供发行版来在任何应用程序中使用这部分UI。 我得库有下一个依赖项: /home/user/projects/mainapp/app/build/intermediates/explodede-aar/com.my.sdk/sdk/0.0.1/res/values/values.xml:78:21-29:找不到与给定名称匹配的资源:at

  • 我正在用Tianium框架构建一个Android模块,我必须以AAR格式包含一个外部依赖项。我试图从AAR(即归档文件)中只提取类JAR,并将其包含在模块中,但这种技巧只适用于不依赖于任何资源的库(这就是制作AAR而不是JAR的原因)。 有没有办法在钛模块(使用Ant作为构建工具)的构建过程中包含AAR? 编辑:似乎在Appcelerator会有人做这件事:https://jira.appcele