构建一个 Android 库模块,该模块依赖于其他两个模块,包括结果中的模块 类 和资源

Building an Android Library module that depends on two other modules including the modules classes and resources in the result

我需要帮助解决这个问题。我的项目有三个模块,我称之为模块 A、B 和 C。它们都是 Android 库模块。

C 是最终产品。我想将其导出为 AAR,其中包含 A 和 B 的所有 类 和资源。

我注意到仅仅添加:

implementation project(':libA')
implementation project(':libB')

不会将 A 和 B 添加到 C,我将不得不单独分发它们,这不是我想要的(尽管如果没有其他方法我可以这样做)。

我还注意到,如果我构建 A 和 B,手动将生成的 AAR 复制到 C 中的 lib 文件夹并添加依赖项

implementation fileTree(include: ["*.aar"], dir: "libs")

然后它确实在最终结果中包含了 A 和 B。但我不想每次都手动执行此操作,所以我想要的是创建一个 gradle 任务来为我执行此操作。

经过几次尝试,没有运气。我一直无法创建这个。到目前为止,我尝试的是创建自定义 gradle 配置(我们称之为 aarDependency)并将依赖项声明为

aarDependency project(':libA')
aarDependency project(':libB')

然后我把我的任务写成

task copyAARDependencies(type: Copy) {
    dependsOn(":libA:assembleRelease")
    dependsOn(":libB:assembleRelease")

    from configurations.aarDependency.artifacts.files
    into("libs")
}

可惜,没有文件被复制。

有人对此有任何解决方案吗?如果有其他解决方案,则不需要是 gradle 脚本。

提前致谢。

您正在尝试实现 so-called“fat-aar”,有一个 Gradle 插件可用于 https://github.com/kezong/fat-aar-android