Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android gradle build:父子共享库_Android_Android Studio_Gradle_Android Gradle Plugin_Build.gradle - Fatal编程技术网

Android gradle build:父子共享库

Android gradle build:父子共享库,android,android-studio,gradle,android-gradle-plugin,build.gradle,Android,Android Studio,Gradle,Android Gradle Plugin,Build.gradle,我们的项目结构如下: Project |__build.gradle |__settings.gradle |__app (android application) |__build.gradle |__libA (android library) |__libB (android library) |__libA (android library) 我的应用程序依赖于libA和libBlibB但是又取决于libA。我应该如何构建我的构建,以便app和libB共享

我们的项目结构如下:

Project
|__build.gradle
|__settings.gradle
|__app (android application)
   |__build.gradle
   |__libA (android library)
   |__libB (android library)
      |__libA (android library)
我的应用程序依赖于
libA
libB
<代码>libB但是又取决于
libA
。我应该如何构建我的构建,以便
app
libB
共享同一份
libA

注意:
app
libA
libB
都是从源代码编译的,而不仅仅是jar文件。

只需使用:

Project
|__build.gradle
|__settings.gradle
|__app (android application)
   |__build.gradle
|__libA (android library)
   |__build.gradle
|__libB (android library)
   |__build.gradle
设置.gradle
中:

include ':app' , ':libA' , 'libB'
dependencies {
    compile project(':libA')
    compile project(':libB')
}
dependencies {
    compile project(':libA')
}
app/build.gradle
中:

include ':app' , ':libA' , 'libB'
dependencies {
    compile project(':libA')
    compile project(':libB')
}
dependencies {
    compile project(':libA')
}
libB/build.gradle
中:

include ':app' , ':libA' , 'libB'
dependencies {
    compile project(':libA')
    compile project(':libB')
}
dependencies {
    compile project(':libA')
}

是 啊这种方法目前正在发挥作用。但它编译了两次libA。编译libA需要一些时间,将来越来越多像libB这样的lib将依赖于它。@chiraghaingradle管理它。另一个解决方案是在maven存储库中发布libA和libB,我认为gradle不会处理这个问题。我确实看到了libA的两个编译日志。在maven上发布实际上不是一种选择。我们想从源代码构建它。@ChiragJain双重编译还是双重日志?Gradle使用缓存。在settings.Gradle中,我给出了projectPath,它的工作原理如下:
project(“:libA”).projectDir=新文件(rootProject.projectDir,“../libA”)
。我可以为同一个库提供多个这样的路径吗。如果在当前文件夹中找不到,我希望它看起来更高一步。