Android Studio将AAR中的类发布到本地maven repo

时间:2018-05-02 08:22:46

标签: android-studio android-gradle

Android Studio(3.1.2)中存在一个问题,它引用了发布到我当地maven仓库的AAR中的类。

我已成功将AAR文件发布到我当地的maven repo,并将其包含在需要在本文后使用AAR的项目中:

https://medium.com/@kuassivi/tip-work-with-third-party-projects-locally-with-gradle-961d6c9efb02

基本上我在buildcript和所有项目的存储库部分的顶级项目中添加了对mavenLocal()的引用。我还在app gradle构建中添加了对AAR的引用(即实现groupid:artifactid:version)。我还没有做更多的事情。

如果我在Android Studio中进行gradle重建,一切都编译得很好但是如果我编辑一个引用AAR中的类的文件,则IDE无法解析引用。

当我找到类(即cmd o)时,IDE正确地在AAR的classes.jar中找到该类并对其进行反编译。

我猜这种情况正在发生,部分原因是因为它无法获取我在aar文件旁边发布到本地maven仓库的源jar。

如何让IDE获取源文件并正确引用AAR中的类?如果可能的话,我宁愿通过改变gradle脚本而不是通过IDE向导来实现这一点。

经过多次挖掘,我发现使用maven repo是无关紧要的,因为它从〜/ .gradle / caches / transforms-1 / files-1.1中的gradle缓存中获取AAR文件而不是来自maven当地的回购我还可以使用"实现com.company:artifact-name:0.8:sources"来包含源文件。这里有一个很好的信息:

https://www.alonsoruibal.com/my-gradle-tips-and-tricks/

然而,Android Studio仍然无法识别导入,虽然编译工作,但导入在编辑器中以红色标记。我想我必须要有一些魔法,我不知道。

1 个答案:

答案 0 :(得分:0)

我在github上放了一个简单的例子:

https://github.com/jmc420/kotlin_examples

在multiproject文件夹中有2个单独的项目,一个名为"嵌套"其中包含一个名为" multiprojectlibrary"的android库项目。其中"嵌套"通过成绩引用包括。

"多项目图书馆"使用maven发布插件通过命令gradle publishToMavenLocal将aar发布到mavenLocal。

在"独立" project" multipleprojectlibrary"是从mavenLocal读取的依赖项。

"嵌套"项目运作可靠。

在"独立"中使用mavenLocal项目似乎非常不可靠。有时候"独立"项目正确使用mavenLocal" multipleprojectlibrary"但当你进行更新并再次发布时,"独立"项目开始使用" multipleprojectlibrary" in .gradle / caches / transforms-1 / files-1.1。

似乎有两个问题。一个是"新项目" Android Studio的菜单选项只允许您制作应用程序;你只能通过" New Module"来创建一个Android库,它将库作为应用程序的子项目。创建"新图书馆"的选项会解决这个问题。

另一个问题是,不清楚maven本地存储和gradle缓存是如何交互的。它们似乎不同步,同步gradle似乎没有将gradle缓存与mavenLocal repo同步。