是否将jcenter的依赖项编译为aar库?

时间:2016-07-05 10:45:05

标签: java android maven android-studio

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

编译' joda-time:joda-time:2.9.4'

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

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

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

我尝试回到我的图书馆而不是通过jcenter包含joda时间我将.jar文件直接添加到我的&#lib;'文件夹,这次当我尝试我的新项目中的方法时,我们没有得到上述错误。

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

1 个答案:

答案 0 :(得分:1)

AAR文件只包含已编译的dex代码,清单(部分)和库的资源。当您将joda-time的jar文件复制到项目中时,它会内置到AAR中。当使用gradle依赖项时,gradle(以及Android Studio)知道如何解析用于构建AAR的joda-time库,但就是这样。由于您的AAR是在jcenter上发布的,因此您需要为AAR提供maven清单,该清单还将joda-time列为依赖关系。之后,项目将只能将您的库列为依赖项,并且可以通过gradle(通过其maven支持)解决对joda-time的依赖性。