关于Gradle中AAR文件的传递依赖性,有几个问题浮出水面:
-
Android Studio 0.2.3 cannot resolve transitive aar dependencies
-
Android Gradle library dependency with library dependency using Nexus
-
Aar in repository. External dependency and NoClassDefFoundError
我也遇到类似的问题,试图在远程存储库中的AAR文件上设置传递依赖 . 我有App A,取决于库B,而库B又依赖于库C.库C在Maven仓库中 . 库B在同一个仓库中,其中POM包含对库C的依赖性 . 应用程序A在其依赖项中具有库B.但是,运行 gradle clean assembleDebug 会导致:"Module version [Library B] depends on libraries but is not a library itself" .
我试着给其中一个问题一个赏金,希望清楚,没有运气 .
我的猜测是,我和那些有上述SO问题的人有两种可能的困难来源:
-
来自远程存储库的传递AAR依赖性简单地被破坏
-
来自远程存储库的传递AAR依赖项工作,但我们的POM文件,
build.gradle
文件或某些破坏依赖项的内容有所不同
The Question :是否有人知道某个公共存储库(例如,Maven Central)中的AAR工件,它依赖于另一个AAR工件,也在同一个公共存储库中?
我对依赖于本地存储库中的某些内容的AAR不感兴趣,例如依赖于 com.android.support:support-v4
的Maven Central中的AAR . 在我的情况下,如果库B和库C都在我的本地Maven存储库( ~/.m2
)中,一切正常 .
根据Xav,what I am doing should work . 因此,我希望有人可以指出一个有效的例子,这样我就可以用它来确定我们其他人可能出错的地方 .
NOTE :我知道要求异地资源是禁止的 . 在这种情况下,我不是自己寻找资源,而是作为工作配置的示例,帮助调试非工作配置 . 如果您有另一种方式来编写显示工作配置的答案,那就太棒了!
谢谢!
3 回答
我没有公开示例,但我已在内部托管的Nexus存储库中成功设置了此方案 . 这是设置:
App - Android应用程序项目LibraryB - Android库项目picasso - 来自Square的开源库(可在Maven Central上获得)LibraryA - Android库项目
应用依赖于LibraryB和毕加索LibraryB依赖于LibraryA
这是LibraryB的POM(从Nexus下载)
这是LibraryB的build.gradle
这是LibraryA的POM(从Nexus下载)
LibraryA的build.gradle与上面的LibraryB非常相似 .
通过以下Gradle命令上载LibraryA和LibraryB的工件和POM
App的build.gradle看起来像这样
如果您需要任何进一步的信息,请告诉我 .
看来Gradle 1.9和
com.android.tools.build:gradle:0.7.+
已经解决了我的问题 . 至少,我再也无法重现这个问题了 .从Android Studio 0.4.4开始,使用.AAR依赖项与使用.JAR依赖项一样简单 . 只需将其放入
\libs
目录并在build.gradle
中引用它: