gpt4 book ai didi

java - jcenter 的依赖项是否编译到 aar 库中?

转载 作者:行者123 更新时间:2023-12-01 09:44:12 27 4
gpt4 key购买 nike

我在 Android Studio 中创建了一个库 (aar),其中包含一些依赖于 Joda Time 类的实用方法。我在我的 gradle 文件中使用来自 jcenter 的依赖项和以下代码行

编译“joda-time:joda-time:2.9.4”

然后,我将我的库添加到私有(private) Maven 存储库,并创建了一个新的 Android 项目,并从此存储库将我的库添加到其中。

当我尝试在新项目中使用我的库的方法时,出现以下错误:-

java.lang.NoClassDefFoundError: org.joda.time.DateTime

我尝试返回到我的库,而不是通过 jcenter 包含 joda 时间,而是将 .jar 文件直接添加到我的“libs”文件夹中,这次当我在新项目中尝试这些方法时,它们起作用了,而我没有出现上述错误。

这是否意味着从 jcenter 包含时,依赖项实际上并未编译到 aar 文件中?有没有办法做到这一点?

最佳答案

AAR 文件仅包含已编译的 dex 代码、 list (部分)和库的资源。当您将 joda-time 的 jar 文件复制到项目中时,它会内置到 AAR 中。当使用 gradle 依赖项时,gradle(以及 Android Studio)知道如何解析 joda-time 库来构建 AAR,但仅此而已。由于您的 AAR 正在 jcenter 上发布,因此您需要有一个 AAR 的 Maven list ,其中还将 joda-time 列为依赖项。之后,项目将能够仅列出您的库作为依赖项,并且对 joda-time 的依赖项将由 gradle 解决(通过其 Maven 支持。)

关于java - jcenter 的依赖项是否编译到 aar 库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38201435/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com