问题描述
我想将Android库项目拆分为模块。预期的项目结构为:
├─ androidLibraryModule
│
├─ kotlinLibraryModuleA
│
└─ kotlinLibraryModuleB
androidLibraryModule
取决于kotlinLibraryModuleA
和kotlinLibraryModuleB
的地方:
dependencies {
implementation project(":kotlinLibraryModuleA")
implementation project(":kotlinLibraryModuleB")
}
我唯一要发布的是.aar
,它是构建androidLibraryModule
的结果,我希望它包含kotlinLibraryModuleA
和kotlinLibraryModuleA
中的代码。
到目前为止,我发现实现此目标的唯一方法是将.jar
和kotlinLibraryModuleA
的{{1}}文件复制到kotlinLibraryModuleB
的{{1}}文件夹中方式:
libs
此解决方案有效,但感觉有点像黑客。 这是唯一的解决方案,还是有更好的方法来实现此结果?
编辑:如果androidLibraryModule
是Android应用程序模块,则无需复制任务即可正常工作。
解决方法
问题是,aar
默认仅包含其模块中的代码和资源。创建应用程序时,库模块会将其依赖项传递给应用程序,因此所有类都包含在最终apk中。
如果您只想将图书馆发布为aar
,则有2个选择:
- 将依赖项包含在jar中-称为胖jar / aar(快速搜索发现了多个插件,但我对它们没有任何经验,因此您需要自己看看)
- 如果将库发布为Maven,则可以在
pom.xml
中指定它的依赖项,例如。这个答案:Android library dependencies missing from POM with Gradle