干净后Android Gradle无法构建(取决于具有本机库的AAR)

时间:2015-06-04 21:34:19

标签: android-gradle

我有一个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的构建服务器上,或从源代码控制中获取新副本。

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

1 个答案:

答案 0 :(得分:0)

发生这种情况的原因是因为依赖关系线发生了变化,并且不再正确。我无法弄清楚为什么它会在一次构建后工作,但不能在干净之后。错误信息不清楚!即使工件根据依赖声明不存在,它也会通过该构建步骤并尝试编译。

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

工件的名称如下:

com.company:artifact:1.2.0.0.+@aar

该工件存在。然而,有人错误地将其改为:

com.company:artifact:1.2.0.0.0.+@aar

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

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