gpt4 book ai didi

android - 如何在不使用 Gradle 复制 jar 的情况下将一个模块的源包含在另一个模块中?

转载 作者:行者123 更新时间:2023-12-02 12:02:57 25 4
gpt4 key购买 nike

我想将一个 Android 库项目拆分为模块。预期的项目结构是:

├─ androidLibraryModule

├─ kotlinLibraryModuleA

└─ kotlinLibraryModuleB
在哪里 androidLibraryModule取决于 kotlinLibraryModuleAkotlinLibraryModuleB :
dependencies {
implementation project(":kotlinLibraryModuleA")
implementation project(":kotlinLibraryModuleB")
}
我将发布的唯一内容是 .aar这是构建 androidLibraryModule 的结果我希望它包含 kotlinLibraryModuleA 中的代码和 kotlinLibraryModuleA .
到目前为止,我发现实现此目标的唯一方法是复制 .jar kotlinLibraryModuleA 的文件和 kotlinLibraryModuleB进入 libs androidLibraryModule 的文件夹这边走:
task copyJar(type: Copy) {
from jar
into "${project(":androidLibraryModule").projectDir.absolutePath}/libs"
}

jar.finalizedBy(copyJar)
此解决方案有效,但感觉有点像 hack。
这是唯一的解决方案还是有更好的方法来实现这个结果?
编辑:如果 androidLibraryModule是一个 Android 应用程序模块,不需要复制任务就可以工作。

最佳答案

问题是,aar默认情况下只包含来自其模块的代码和资源。当您创建应用程序时,库模块会将其依赖项传递给应用程序,因此所有类都包含在最终的 apk 中。
如果您只想将库发布为 aar ,您有 2 个选项:

  • 将依赖项作为 jars 包含在其中 - 这称为 fat jar/aar(快速搜索发现多个插件,但我对其中任何一个都没有经验,因此您需要自己查看)
  • 如果你将库发布到 maven,你可以在 pom.xml 中指定它的依赖。 ,例如。这个答案:Android library dependencies missing from POM with Gradle
  • 关于android - 如何在不使用 Gradle 复制 jar 的情况下将一个模块的源包含在另一个模块中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64439942/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com