首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建依赖于多个AAR的AAR

创建依赖于多个AAR的AAR
EN

Stack Overflow用户
提问于 2016-07-18 15:46:51
回答 2查看 3K关注 0票数 8

我正在构建一个可以在其他应用程序中使用的SDK。

我的项目结构如下:

代码语言:javascript
复制
ProjectFolder
  |
  +--AndroidLibs
  |      |
  |      +--UI (android library - AAR)
  |      |
  |      +--Protocol (android library - AAR)
  |      |
  |      +--infra (android library - AAR)
  |
  +--SDK(depends on UI, Protocol and Infra) 
  |
  +--APP(depends on SDK)

正如您所看到的,我们有三个不同的库,每个库都是我们系统中的一个模块(下面,ui和协议)。他们中的每一个都在创建一个AAR。

我们的SDK是一个包装器,带有对底层的一些API调用。

我们希望创建一个依赖于所有其他AAR的AAR,但由于某种原因,当我们尝试运行它时,它说他找不到某些类的源代码。

我发现了一些与这个问题有关的问题,但它们没有起作用。还试图处理transitive依赖项,但底线是相同的--找不到源代码。

  1. android-studio-how-to-package-single-aar-from-multiple-library-projects:有一个答案是没有解决办法的(谷歌员工)。
  2. 用多个aars创建aar-罐:使用transitive依赖项。
  3. 创建带有所有" AAR“依赖项的aar的Mojo

我们还能做些什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-21 22:42:08

从我的回答这里

据我所知,您不能将aars包含在aar中。它们没有说明所需依赖项的配置文件。你可以

  1. 从您正在使用的库中删除源代码并使用您的aar编译它。如果UI/Protocal/Infra库是内部的,而您是唯一的提供者,这将完成任务。
  2. 考虑上传到装订盘Maven中央储存库

第二种方法更可取,因为这样您的客户端所要做的就是包括一个链接,比如compile 'com.abc.efg:version',以获取您配置的所有依赖项。这也是一个更好的选择,因为有处理版本冲突的方法(例如。( exclude group)。

想象一下,如果您的客户端正在使用另一个sdk,它正在引入不同版本的UI/Protocal/Infra。如果您的aar是通过第一种方法提供给他们的,由于版本冲突,他们甚至无法构建项目。然而,对于第二个版本,他们可以简单地完成

代码语言:javascript
复制
compile ('com.abc.efg:version') { exclude group: 'com.companyName.ui' }

别再头痛了。一个真实的例子是Facebook的SDK。它吸引了google的播放服务,但人们通常已经把它作为他们项目的依赖项,并遇到了像这样的问题。

票数 4
EN

Stack Overflow用户

发布于 2016-07-27 16:50:01

因为您的项目通常同时依赖内部库和第三方库。内部库可以发布在Artifactory存储库上,并使用Gradle解决对Artifactory的依赖关系。

这很容易!看看下面的文章,

这是高度可伸缩的,并且易于跨多个模块维护您的代码。

希望这能帮到你!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38440975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档