Modules and Source Sets

Modules, Source Sets and the Project Tree

A Gradle 19,597 build is a root project plus modules. BookNest has one, :app, which applies com.android.application; larger apps add com.android.library modules such as :core:data that build in parallel. These are the committed files:

Every file in BookNest's baselineShell
git ls-files
Output
.gitignore
README.md
app/build.gradle.kts
app/src/main/AndroidManifest.xml
app/src/main/assets/books.json
app/src/main/java/com/example/booknest/MainActivity.kt
app/src/main/java/com/example/booknest/data/Book.kt
app/src/main/res/values/strings.xml
build.gradle.kts
gradle.properties
gradle/libs.versions.toml
gradle/wrapper/gradle-wrapper.jar
gradle/wrapper/gradle-wrapper.properties
gradlew
gradlew.bat
settings.gradle.kts

Under src/, each source set has the same layout (java or kotlin, res, assets, a manifest). main goes into every build, test and androidTest hold JVM and on-device tests (Testing), and debug or release files apply to one build type, merged over main. AAPT2 compiles res/ into typed IDs such as R.string.app_name; assets/ is copied raw, so the shared books.json sits there unchanged.