我正在尝试从maven迁移到Android项目的Gradle,并且面临以下问题:
我有三个项目,即
root
- projlib
build.gradle
- projA
build.gradle
- projB
build.gradle
build.gradle
settings.gradle
基本上,我要实现的是projB取决于projA和projlib。 projlib是一个lib文件夹,可编译并生成一个lib(jar)文件。 projA是一个Android应用程序,而projB是另一个需要在projA中引用代码的Android应用程序。现在我在projB build.gradle文件中添加的是
dependencies {
compile project(':projlib')
compile project(':projA')
}
所以说如果有课
projlib中的FooProjLib和
项目中的FooProjA
然后在projB中我可以做
FooProjLib foo = new FooProjLib
哪个很好
但是当我这样做
FooProjA foo = new FooProjA
Gradle给我的包projA不存在,我观察到的是这两个依赖关系都已解决,但只有lib可以被引用,而apk不能。
有谁知道如何解决这个问题?
最佳答案
您不能完全按照自己的意愿做。 projA无法构建应用程序(即APK),并且依赖于它。如果projA是Android库,则projB只能依赖projA,这意味着在其构建文件中您具有以下声明:
apply plugin: 'android-library'
代替
apply plugin: 'android'
当然,这意味着projA不会构建APK,而是会构建AAR。
如果projA也需要是APK,则必须重新组织内容,以便projB也需要的projA中的通用代码移到共享库中。如果两个项目都相似,也许您可能只需要一个模块,并使用项目风格来区分它们。如果没有很多信息,很难说这是否是一个好方法。