Android Gradle Logic

new-silvermoon/awesome-android-agent-skills/.github/skills/build_and_tooling/android-gradle-logic

by new-silvermoon82900eacc8dbe13de93c6310af27b9df4b2bd2f6No licenseListed Oct 9, 2026Updated Oct 9, 2026

Expert guidance on setting up scalable Gradle build logic using Convention Plugins and Version Catalogs.

Instructions onlySoftware Development
AI-generated overview

Guides setting up scalable Android Gradle build logic with convention plugins and version catalogs.

What it does
Provides step-by-step instructions for centralizing Android build configuration using Gradle convention plugins and a version catalog. It covers project structure with a build-logic composite build, settings.gradle.kts configuration, libs.versions.toml plugin and library definitions, writing a convention plugin class, registering it, and applying it in modules. The deliverable is guidance and code snippets rather than generated files.
When to use it
Use when an Android project repeats build configuration across many build.gradle.kts files and you want to centralize it. It suits teams adopting the Now in Android style build-logic setup or introducing convention plugins and version catalogs.
Requirements
An Android project using Gradle with Kotlin DSL; no scripts are shipped, only instructions and code examples.

Android Gradle Build Logic & Convention Plugins

This skill helps you configure a scalable, maintainable build system for Android apps using Gradle Convention Plugins and Version Catalogs, following the "Now in Android" (NiA) architecture.

Goal

Stop copy-pasting code between build.gradle.kts files. Centralize build logic (Compose setup, Kotlin options, Hilt, etc.) in reusable plugins.

Project Structure

Ensure your project has a build-logic directory included in settings.gradle.kts as a composite build.

text
root/├── build-logic/│   ├── convention/│   │   ├── src/main/kotlin/│   │   │   └── AndroidApplicationConventionPlugin.kt│   │   └── build.gradle.kts│   ├── build.gradle.kts│   └── settings.gradle.kts├── gradle/│   └── libs.versions.toml├── app/│   └── build.gradle.kts└── settings.gradle.kts

Step 1: Configure settings.gradle.kts

Include the build-logic as a plugin management source.

kotlin
// settings.gradle.ktspluginManagement {    includeBuild("build-logic")    repositories {        google()        mavenCentral()        gradlePluginPortal()    }}dependencyResolutionManagement {    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)    repositories {        google()        mavenCentral()    }}

Step 2: Define Dependencies in libs.versions.toml

Use the Version Catalog for both libraries and plugins.

toml
[versions]androidGradlePlugin = "8.2.0"kotlin = "1.9.20"
[libraries]# ...
[plugins]android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" }kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }# Define your own plugins herenowinandroid-android-application = { id = "nowinandroid.android.application", version = "unspecified" }

Step 3: Create a Convention Plugin

Inside build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt:

kotlin
import com.android.build.api.dsl.ApplicationExtensionimport org.gradle.api.Pluginimport org.gradle.api.Projectimport org.gradle.kotlin.dsl.configure
class AndroidApplicationConventionPlugin : Plugin<Project> {    override fun apply(target: Project) {        with(target) {            with(pluginManager) {                apply("com.android.application")                apply("org.jetbrains.kotlin.android")            }
            extensions.configure<ApplicationExtension> {                defaultConfig.targetSdk = 34                // Configure common options here            }        }    }}

Don't forget to register it in build-logic/convention/build.gradle.kts:

kotlin
gradlePlugin {    plugins {        register("androidApplication") {            id = "nowinandroid.android.application"            implementationClass = "AndroidApplicationConventionPlugin"        }    }}

Usage

Apply your custom plugin in your modules (e.g., app/build.gradle.kts):

kotlin
plugins {    alias(libs.plugins.nowinandroid.android.application)}

This drastically cleans up module-level build files.

Source and attribution

Source:new-silvermoon/awesome-android-agent-skillsin.github/skills/build_and_tooling/android-gradle-logicat commit82900ea

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal