Android库JAR可以依赖Android库AAR吗?

Android库JAR可以依赖Android库AAR吗?,第1张

概述我有一个 Android库项目FooLib. FooLib引用了诸如Android上下文之类的东西,但不需要任何资源文件(res /中的东西),所以我目前将其打包为JAR供我的应用程序使用. 我现在想让FooLib依赖于BarLib,但BarLib确实使用了资源,因此我无法将BarLib打包为JAR.相反,它被打包为AAR.我是否有可能让FooLib依赖BarLib但继续将FooLib打包为JAR 我有一个 Android库项目Foolib. Foolib引用了诸如AndroID上下文之类的东西,但不需要任何资源文件(res /中的东西),所以我目前将其打包为JAR供我的应用程序使用.

我现在想让Foolib依赖于barlib,但barlib确实使用了资源,因此我无法将barlib打包为JAR.相反,它被打包为AAR.我是否有可能让Foolib依赖barlib但继续将Foolib打包为JAR?或者,在Foolib中具有AAR依赖性是否也迫使我将其作为AAR?

解决方法 如果您有一个包含JAR文件和AAR文件作为依赖项的项目(请参阅下面的注释),那么您可以将特定于AndroID的JAR作为依赖于AndroID API中的类的依赖项,尽管JAR文件不能包含AndroID资源.你已经知道了.仅仅因为它依赖于AndroID类并不意味着它需要打包为AAR.

在这里,我所说的可能是一个包含许多JAR和AAR依赖项的单模块项目. JAR文件只是类文件的集合(可能是非AndroID资源和其他文件),并且没有依赖感,因此没有什么可以破解的.当需要进行构建时,构建器只是将所有内容捆绑在一起并打包它,并且不会检查JAR是否对其他类具有无法解析的依赖性 – 您将在运行时发现类加载器异常.

如果您在IDE中讨论多模块项目中的库模块,那么这是另一回事.如果你有一个可以编译成普通JAR的模块A(它在构建文件中使用apply plugin:’java’语句),那么它不能依赖于AndroID模块(apply plugin:’android-library’)编译成AAR.这可能永远不会被修复,或者至少在可预见的未来不会被修复:这是因为AndroID模块具有更复杂的源文件夹概念,而Gradle中的Java插件无法理解AndroID的源集.

反过来也是如此–AndroID模块可以依赖普通的Java模块.

注意

由于Gradle构建器中尚未解决的限制,您无法以与构建文件中的JAR相同的方式访问本地AAR(通过编译文件(…)语句引用它们);你必须欺骗Gradle认为他们在某种Maven存储库中(可能将它们放在一个真正的Maven存储库中,可以是本地存储库).如果需要,请参阅Adding local .aar files to my gradle build以获取解决方法.

总结

以上是内存溢出为你收集整理的Android库JAR可以依赖Android库AAR吗?全部内容,希望文章能够帮你解决Android库JAR可以依赖Android库AAR吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1135987.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存