在多模块的Android Studio项目中集成.aar文件

5

我在Android Studio中有一个多模块项目,我想集成一个.aar文件到一个模块中,该模块被引用作为App模块的库。项目结构如下:

- module1
- module2
- module3
- module4
- moduleApp

模块1被用作模块2中的库引用。

build.gradle module2

  dependencies {
        ...
        compile project(':module1')
    }

Module2和其他模块被引用在App模块中。

build.gradle moduleApp:

dependencies {
    ...
    compile project(':module2')
    compile project(':module3')
    compile project(':module4')
}

我需要在module1中将一个.aar文件作为库文件进行集成,因为这是module1实现所必需的。我按照正常方式进行集成:

build.gradle module1:

repositories {
    flatDir {
        dirs 'libs'
    }
} 

dependencies {
    compile 'package.name.of.aar:myLibrary@aar'
}

然而,当我运行gradle sync时,我收到了以下错误:
failed to resolve package.name.of.aar:myLibrary@aar in module2
failed to resolve package.name.of.aar:myLibrary@aar in moduleApp

我该如何让module2和moduleApp找到.aar库?我应该在它们的build.gradle文件中包含更多内容吗?

2个回答

0

尝试更改

dependencies {
   compile 'package.name.of.aar:myLibrary@aar'
}

目标:

dependencies {
   compile ('package.name.of.aar:myLibrary@aar'){
      transitive=true
   }
}

或者,只需添加:

compile 'package.name.of.aar:myLibrary@aar'

到module2和moduleApp模块


flatDir{dirs 'libs'} 是一个有效的仓库。在 module1 的 libs 文件夹下,我放置了 myLibrary.aar 文件。module1 不是 .aar 库,而是需要 myLibrary.aar 的代码模块。 - arjacsoh
抱歉,我完全误解了你的问题。你应该像我链接的答案中所示一样使用 transitive = true。我会更新我的回答。 - RaGe
我已经尝试了你的第二种方法,但它并不起作用。我将应用transisive,但我想知道在将其作为module2和moduleApp的依赖项添加时,是否应将其设置为“compile ':module1'”,因为该模块被其他模块引用为库。 - arjacsoh
有没有办法知道我的aar包的包名? - Manjeet Singh

0

由于您正在使用带有flat repo的aar文件,在所有使用module1的模块(在您的情况下是module2和应用程序)中,您需要添加以下存储库到您的build.gradle文件中:

  repositories {
            flatDir {
                dirs 'libs'
            }
        }

并添加依赖项:

dependencies {
   compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar')
 }

目录libs位于module1中,与build.gradle处于同一级别,它被定义为相对路径。其他模块没有一个libs目录和.aar文件。我认为它可以在其他模块中定义为绝对路径,但这对我没有帮助,我已经排除了这种可能性。此外,我不需要在其他模块中使用它,我只想防止gradle构建失败。这就是这种情况的问题所在。 - arjacsoh
将您的aar移动到Maven仓库中。这将解决任何问题。 - Gabriele Mariotti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接