我正在尝试创建一个依赖于另一个库模块的android库moduleD,而这又取决于两个库模块。一切似乎都很好,但是当我尝试在应用程序中使用库时,我得到ClassNotFoundException
。
MyLibrary/
+-- moduleA
+-- src/main/java/
+-- com/example/a
+-- moduleB
+-- src/main/java/
+-- com/example/b
+-- moduleC
+-- src/main/java/
+-- com/example/b
+-- com/example/c
`-- MyMissingClass.java <-- MISSING
+-- moduleD
+-- src/main/java/
+-- com/example/b
build.gradle (模块C)
dependencies {
compile project(':moduleA')
compile project(':moduleB')
}
build.gradle (模块D)
dependencies {
compile project(':moduleC')
}
在我的应用程序中,我调用ModuleD调用Module
为了完整起见,我在本地引用了所得到的aars,但我不认为这是问题所在。解压缩moduleD中的classes.jar,我可以看到moduleD的类文件,但不能看到MyMissingClass。
build.gradle (在单独的应用程序项目中)
repositories {
...
flatDir {
dirs 'libs'
}
}
dependencies {
compile(name:'moduleB', ext:'aar')
}
[1]:How to include dependencies in android library gradle project? [2]:How do I ship an Android Library (aar) with remote dependencies (gradle)?
build.gradle (应用程序)
dependencies {
compile(name:'moduleD', ext:'aar') {
transitive true
}
}
这可能适用于外部依赖项(例如,通过maven,中央或本地可用),并且避免捆绑外部依赖项是有意义的,否则可以单独升级/降级以避免冲突或获取错误修正。但是,模块A-C是项目的内部模块,现在只在这一个库中使用。
是否可以为moduleD创建一个包含所有类的aar(或jar),并且可以在应用程序中实际使用它,因为库项目被分解为单独的模块?