如何发布 Android .aar 源码让 Android Studio 自动找到它们?

Posted

技术标签:

【中文标题】如何发布 Android .aar 源码让 Android Studio 自动找到它们?【英文标题】:How to publish Android .aar sources to make Android Studio automatically find them? 【发布时间】:2014-04-10 15:58:43 【问题描述】:

我正在将库发布到内部 Sonatype Nexus 存储库。

android Studio 具有自动查找通过 gradle 引用的库的正确源代码的功能。我将我们 aar 的源代码作为单独的 jar 发布到 nexus。 但 Android Studio 并没有接受它们。

如何发布源代码才能在 Android Studio 中使用?

【问题讨论】:

这方面有什么更新吗? 【参考方案1】:

我为此功能写了gradle plugin。希望对你有帮助。

----- 编辑 ------

如何发布 Android .aar 源?

android 

    task sourcesJar(type: Jar) 
        classifier = 'sources'
        from android.sourceSets.main.java.srcDirs
    

    artifacts 
        archives sourcesJar
    

    uploadArchives 
        repositories 
            mavenDeployer 
                ...
            
        
    

【讨论】:

是的,这个插件是为 gradle 2.+ 编写的。如果需要,您可以自己修改插件。只是一点点改变。 所以据我了解,您的插件有助于下载依赖项的源代码,但这里的问题是“如何发布 Android..”。你也能回答这个问题吗?当知道您的插件可以用来在本地(也)读取它们时? 我认为问题不在于未发布的资源,而是 Android Studio 不知道在哪里寻找 AAR。我们发布了所有内部 AAR 的来源,但 AS 仍然找不到它们。【参考方案2】:

暂时不可以。

【讨论】:

Retrofit 等库正在通过 MavenCentral 提供源代码。这是 Maven Central 的特定功能吗? Gradle 在构建时不从存储库下载源工件是一个限制(因为在构建时不需要它)。我们需要找到一种方法让它下载它并通过发送到 IDE 的模型公开它。 但是,如果我去上课,例如 OkHttp Android Studio 会显示一个按钮搜索源。对于 Maven Central 上的大多数开源库,单击此按钮后可以找到并完美显示源代码。但对于我们自己的 Repo,它不起作用。 仅供参考 retoryfit 和 okhttp 被打包为 jar 而不是 aar @XavierDucrohet 我可以指示 Gradle 下载我的依赖项的源代码(例如 gist.github.com/stefanhoth/37f86c8e41d648cbd2c8 ),但是 AAR 文件中的类仍然找不到源代码。你有机会缩小差距吗?

以上是关于如何发布 Android .aar 源码让 Android Studio 自动找到它们?的主要内容,如果未能解决你的问题,请参考以下文章

Android 源码环境下用Android.mk 导入aar

Android 源码环境下用Android.mk 导入aar

[Android Pro] AAR and JAR

如何让用Android studio 导出jar包并混淆和aar

如何在Android库AAR中包含第三方JAR,而无需合并代码

如何发布带有远程依赖项 (gradle) 的 Android 库 (aar)?