android - 从多模块项目构建库

标签 android gradle android-library aar android-module

我有一个多模块 Android 项目,它有一个名为 app 的模块,它是 Android 应用程序,它包含 features,其中每个 feature 是单独的模块。

我想提取其中一个功能模块作为 aar 库。

我从在项目中创建一个 demo 应用程序开始,该应用程序将我的功能模块作为依赖项:

实现项目(':player')

我调整了应用程序的代码以使其正常工作,并且在我的项目内的演示应用程序中它按预期工作。

我的下一步是构建 aar 文件并将其包含在单独的项目中。我通过使用任务做到了:

Gradle -> 播放器 -> 任务 -> 构建 -> 构建

在新项目中导入创建的 aar 文件后,我得到了很多 java.lang.ClassNotFoundException 异常,因为来自 player 的模块的类> 所依赖的模块不在生成的 .jar 文件中。

我没有提到,但是 player 模块依赖于一些其他模块,例如 domainbase-androiddata 等等,似乎所有这些模块都没有包含在 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/

相关文章:

java - Gradle Eclipse 使用不正确的依赖版本

android - 使用 AAR 和源 JAR 将 Android 库发布到 Maven

android - 你如何在 android 中解析嵌入在它们自身中的 XML 标签?

android - 如何在应用程序的 AndroidManifest.xml 中引用库项目中的图标

java - 如何在 GridView Widget 中设置固定数量的项目?

Android - 库模块的 Gradle 依赖项

Android Studio 0.4 在 APK META-INF/LICENSE.txt 中复制的重复文件

android - 如何处理 ActivityNotFoundException?

android - 如何正确应用google服务插件?

java - Micronaut 属性注入(inject)不适用于 Gradle 多项目构建