Android Gradle 清理后无法构建(取决于带有本机库的 AAR)

Android Gradle fails to build after clean (depends on AAR with native libraries)

我有一个 Android 库项目 (projA),它依赖于另一个库项目 (projB)。我还有一个内部 Maven 服务器 (Archiva)。 projA 包含这些行:

dependencies {
    maven { url 'http://company.com/internal/repository' }
    compile 'com.company:projB:2.0.7@aar'
    ...
}

projB 是使用 Android 库插件构建的 AAR,发布到 company.com Archiva 服务器,它包含本机代码。提取 AAR 显示 .so 文件存在于它们应该存在的位置,并且包装器 JAR 文件也存在。如果我 运行: ./gradlew clean build 构建失败并出现未解析的符号。但是,如果我 运行

./gradlew clean build
./gradlew build

然后 第二个 构建将成功!

这是一个问题,例如,在始终使用 clean 或从源代码管理获取新副本的构建服务器上。

为什么会发生这种情况,我该如何解决?

之所以会这样,是因为依赖线变了,不再对了。我不明白为什么它会在一次构建后起作用,但在清理后却不起作用。错误信息不明确!即使根据依赖声明该工件不存在,它也会通过该构建步骤并尝试编译。

最后,修复依赖关系解决了这个问题。

神器是这样命名的:

com.company:artifact:1.2.0.0.+@aar

那个神器存在。然而,有人错误地将其更改为:

com.company:artifact:1.2.0.0.0.+@aar

那不存在。我在我的本地 ~/.m2 中有这个工件的副本,它适合第一个,但不适合第二个。

所以,奇怪的是,依赖解析有一个误报,然后构建就会失败。更糟糕的是,第二个构建(没有 干净)会成功