我正在尝试从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中的通用代码移到共享库中。如果两个项目都相似,也许您可​​能只需要一个模块,并使用项目风格来区分它们。如果没有很多信息,很难说这是否是一个好方法。

10-08 16:49