假设我们有三个Android模块:ModuleA、ModuleB和ModuleC。我们需要创建一个依赖于ModuleA和ModuleB的Android库模块ModuleLib,同时可以让ModuleLib访问ModuleA和ModuleB的所有类和资源文件。
android {
...
sourceSets {
main {
java {
srcDirs 'src/main/java'
}
res {
srcDirs 'src/main/res'
}
}
}
...
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
artifacts {
archives androidSourcesJar
archives androidJavadocsJar
}
dependencies {
implementation project(':ModuleA')
implementation project(':ModuleB')
}
apply plugin: 'com.android.library'
android {
...
}
dependencies {
...
}
task copyA(type: Copy) {
from project(':ModuleA').configurations.compile
into 'libs'
}
task copyB(type: Copy) {
from project(':ModuleB').configurations.compile
into 'libs'
}
tasks.whenTaskAdded { task ->
if (task.name.startsWith('assemble') && task.name.endsWith('Release')) {
task.dependsOn(copyA, copyB)
}
}
$ ./gradlew build
通过这种方法,我们可以创建一个依赖于其他两个模块的Android库模