Android Gradle Logic

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

作者 new-silvermoon82900eacc8dbe13de93c6310af27b9df4b2bd2f6无许可证收录于 2026年10月9日更新于 2026年10月9日

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

AI 生成的概览

指导使用约定插件和版本目录搭建可扩展的 Android Gradle 构建逻辑。

功能
提供分步说明,帮助使用 Gradle 约定插件和版本目录集中管理 Android 构建配置。内容涵盖包含 build-logic 复合构建的项目结构、settings.gradle.kts 配置、libs.versions.toml 中插件与库的定义、编写约定插件类、注册插件以及在模块中应用。产出为指导与代码片段,而非生成的文件。
适用场景
适用于 Android 项目在多个 build.gradle.kts 文件中重复构建配置、希望集中管理的场景。也适合采用 Now in Android 风格 build-logic 结构或引入约定插件与版本目录的团队。
运行要求
使用 Kotlin DSL 的 Gradle Android 项目;不附带脚本,仅提供说明与代码示例。

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.

来源与署名

来源:new-silvermoon/awesome-android-agent-skills位于.github/skills/build_and_tooling/android-gradle-logic提交82900ea

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架