我正在尝试从maven迁移到Gradle以获取Android项目,我面临以下问题: 我有三个项目,即
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和 projA中的FooProjA
然后在projB我可以做
FooProjLib foo = new FooProjLib
工作正常
但是当我做的时候
FooProjA foo = new FooProjA
Gradle给我包projA不存在,我观察到的是两个依赖都解决但只有lib可以引用而不是apk。
有没有人知道如何解决这个问题?
答案 0 :(得分:1)
你无法完全按照自己的意愿行事。 projA无法构建应用程序(即APK),还有其他依赖于它的东西。 projB只能依赖于projA,如果projA是一个Android库,意味着在它的构建文件中你有这个声明:
apply plugin: 'android-library'
而不是
apply plugin: 'android'
当然,这意味着projA不会构建一个APK,而是会构建一个AAR。
如果projA也需要成为APK,那么您必须对事物进行重组,以使projB中需要的公共代码移出到共享库中。如果两个项目都相似,那么你可能只有一个模块,并使用项目风格来区分它们;如果没有更多的信息,这很难说这是一个好方法。