I have an gradle-based Android project with 4 submodules - two libraries and two applications. I was trying to simplify the build.gradle files of each submodule by moving some of of the shared code/configurations to the top level build.gradle file and use subprojects {}
to make that code available to each submodule.
The file system structure looks like this:
Root
|- App1/
|- App2/
|- Lib1/
|- Lib2/
|- build.gradle
|- settings.gradle
The problem is that if I add an android {}
section to the subprojects then gradle tasks fail. For example, this is my top-level build.gradle file:
subprojects { project ->
android {
buildToolsVersion "20.0.0"
}
}
Running gradle returns this:
What went wrong: A problem occurred evaluating root project 'android'. Could not find method android() for arguments [build_7dngpra6ldok366maq0on77r7e$_run_closure3_closure5@43d95624] on root project 'android'.
I searched for similar posts and some people suggest adding the line apply plugin: 'android'
to each subproject in order to expose the missing android()
method that gradle is complaining about. However, that solution doesn't work for me because it would effectively add that line to library project, which require apply plugin: 'android-library'
instead.
Is there a way to use android {}
inside of subprojects {}
when you have apps and libraries in the same project?