Android:如何将AAR的依赖关系构建到APK中?

时间:2017-04-13 01:54:04

标签: android gradle android-gradle build.gradle gradlew

我有一个AAR,它有依赖关系A和B.现在我将这个AAR添加为APK的依赖项的一部分。

所以在APK的build.gradle中,我有:

compile(name:'MyAAR', ext:'aar')

这很好,并且成功构建。但问题是,当我实际测试应用程序时,我得到了致命的异常:

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/squareup/okhttp/OkHttpClient;
        at com.squareup.picasso.OkHttpDownloader.defaultOkHttpClient(OkHttpDownloader.java:31) ...

这是因为APK不依赖毕加索,但我在我的AAR中使用了毕加索。

所以我的问题是,我如何构建AAR,以便当APK构建针对AAR时,它也会自动获取AAR的依赖关系。我试过transitive = true,但没有工作。

1 个答案:

答案 0 :(得分:0)

aar文件不包含传递依赖项 它也没有一个描述依赖关系的pom文件。 transitive=true是默认值,它告诉Gradle下载pom文件中指定的依赖项。这是因为它在你的情况下不起作用。

在您的情况下,您必须在build.gradle文件中添加其他依赖项。

另一种方法是在 maven存储库(公共或私有)中发布库。在这种情况下,使用pom文件的Gradle也可以下载依赖项。