我有一个多模块 Android 项目,它有一个名为 app
的模块,它是 Android 应用程序,它包含 features
,其中每个 feature
是单独的模块。
我想提取其中一个功能模块作为 aar
库。
我从在项目中创建一个 demo
应用程序开始,该应用程序将我的功能模块作为依赖项:
实现项目(':player')
我调整了应用程序的代码以使其正常工作,并且在我的项目内的演示应用程序中它按预期工作。
我的下一步是构建 aar
文件并将其包含在单独的项目中。我通过使用任务做到了:
Gradle -> 播放器
-> 任务 -> 构建 -> 构建
在新项目中导入创建的 aar
文件后,我得到了很多 java.lang.ClassNotFoundException
异常,因为来自 player
的模块的类> 所依赖的模块不在生成的 .jar
文件中。
我没有提到,但是 player
模块依赖于一些其他模块,例如 domain
、base-android
、data
等等,似乎所有这些模块都没有包含在 aar
文件中。
起初我以为将这些模块的implementation
更改为api
会解决问题,但事实并非如此。
我的问题是:在构建 aar
库时我是否遗漏了什么?我认为,如果某个项目在包含在模块中时效果很好,那么在创建 aar
文件后它也应该像那样工作,但似乎并非如此。
最佳答案
您将收到 ClassNotFoundException,因为您的模块的 aar 不包含其他子模块的代码或 aar 文件。要解决此问题,您可以查看此 gradle 插件,它会自动将所有子模块的 arr 包含到您的主模块中。查看 fat AAR,这里是链接:https://github.com/kezong/fat-aar-android
关于android - 从多模块项目构建库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62349554/