androidBuildGradleTemplate function

String androidBuildGradleTemplate(
  1. String org,
  2. String pluginName
)

Generates android/build.gradle using the modern plugins {} DSL.

Uses plugins {} at the very top as required by Gradle 7+ — no legacy buildscript {} or apply plugin blocks which break AGP 8/9+.

Implementation

String androidBuildGradleTemplate(String org, String pluginName) =>
    '''
plugins {
    id "com.android.library"
    // Flutter's build infrastructure applies KGP automatically (built-in Kotlin).
    // Do NOT add "org.jetbrains.kotlin.android" here — it triggers a deprecation
    // warning and will break in future Flutter versions.
    // See: https://docs.flutter.dev/release/breaking-changes/migrate-to-built-in-kotlin
}

group = "$org.$pluginName"
version = "1.0"

android {
    namespace = "$org.$pluginName"
    compileSdk = ${BuildVersions.androidCompileSdk}
    ndkVersion = "${BuildVersions.androidNdk}"

    externalNativeBuild {
        cmake { path = "../src/CMakeLists.txt" }
    }

    compileOptions {
        sourceCompatibility = JavaVersion.${BuildVersions.androidJavaVersion}
        targetCompatibility = JavaVersion.${BuildVersions.androidJavaVersion}
    }

    kotlinOptions { jvmTarget = "${BuildVersions.androidJvmTarget}" }

    defaultConfig { minSdk = ${BuildVersions.androidMinSdk} }

    sourceSets {
        main {
            // Do NOT add to java.srcDirs — in AGP 8.x that routes .kt files
            // through the Java compiler and causes "Unresolved reference" errors.
            kotlin.srcDirs += "\${project.projectDir}/../lib/src/generated/kotlin"
        }
    }
}

dependencies {
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:${BuildVersions.kotlinCoroutines}"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:${BuildVersions.kotlinCoroutines}"
}
''';