【发布时间】:2020-10-02 13:58:53
【问题描述】:
我有一个多模块 Android 项目,其中有一个名为 app 的模块,它是 Android 应用程序,其中包含 features,其中每个 feature 是单独的模块。
我想将其中一个功能模块提取为aar 库。
我从在项目中创建一个 demo 应用程序开始,该应用程序将我的功能模块作为依赖项:
implementation project(':player')
我调整了应用程序的代码以使其正常工作,并且在项目内的我的演示应用程序中它按预期工作。
我的下一步是构建aar 文件并将其包含在单独的项目中。我是通过使用任务做到的:
Gradle -> player -> 任务 -> 构建 -> 构建
在新项目中导入创建的aar 文件后,我收到很多java.lang.ClassNotFoundException 异常,因为player 模块所依赖的模块中的类不在生成的.jar 文件中。
我没有提到,但是player 模块依赖于少数其他模块,例如domain、base-android、data 等等,似乎所有这些模块都不包含在aar 文件中.
起初我以为将这些模块的 implementation 更改为 api 会解决问题,但事实并非如此。
我的问题是:在构建 aar 库时我是否遗漏了什么?我认为如果在一个项目的模块中包含某些东西时效果很好,那么在创建 aar 文件后它也应该像这样工作,但似乎不是。
【问题讨论】:
标签: android gradle android-library aar android-module