从多个模块编译一个 .aar 库文件
Posted
技术标签:
【中文标题】从多个模块编译一个 .aar 库文件【英文标题】:Compiling one .aar library file from multiple modules 【发布时间】:2017-01-30 17:19:43 【问题描述】:大家好,我有一个由多个模块组成的库项目:
模块 1 模块 2 模块 3 模块 4我想将所有四个模块导出为一个 .aar 库文件,因此我正在考虑为每个模块生成 .aar 文件并将其包含到其他 .aar 文件中,我不确定这是否可行这个很好的做法,所以我想听听你的意见?从多个模块编译一个 .aar 文件的最佳方法是什么?
编辑: 我设法找到解决方案 https://github.com/adwiv/android-fat-aar 并将所有模块放在一个 .aar 文件中。但由于我使用的是匕首,我收到以下错误:stack=java.lang.NoClassDefFoundError: 解析失败: Ldagger/internal/Preconditions .... 引起: java.lang.ClassNotFoundException:找不到类 路径上的“dagger.internal.Preconditions”:DexPathList[[...
似乎依赖项没有包含在 .aar 文件中。
【问题讨论】:
你可以创建一个新模块(让我们将其命名为 all-lib),它使用所有这些模块作为其 gradle 中的依赖项,然后导出该模块(all-lib) 【参考方案1】:“标准”的做法是在编译过程中直接使用将生成 1 aar 的模块。
假设module1
是库的主要部分,您将在build.gradle
上看到以下内容
apply plugin: 'com.android.library' // it's a library, generates aar
dependencies
// the other modules are dependencies on this one
compile project(':module2')
compile project(':module3')
compile project(':module4')
【讨论】:
已修复,会产生aar而不是jar 好吧,我会试试看,我会接受你的回答。谢谢你,祝你有美好的一天。 @MoshErsan ops,我的错字真糟糕。谢谢。 是的,但我认为这不包括来自其他模块的 Xml 资源,仅来自中心一个。以上是关于从多个模块编译一个 .aar 库文件的主要内容,如果未能解决你的问题,请参考以下文章