// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package com.flutter.gradle import org.gradle.api.GradleException /** * For apps only. Provides the flutter extension used in the app-level Gradle * build file (app/build.gradle or app/build.gradle.kts). * * The versions specified here should match the values in * packages/flutter_tools/lib/src/android/gradle_utils.dart, so when bumping, * make sure to update the versions specified there. * * Learn more about extensions in Gradle: * * https://docs.gradle.org/8.0.2/userguide/custom_plugins.html#sec:getting_input_from_the_build */ @Suppress("unused") // The values in this class are used in Flutter developers app-level build.gradle file. open class FlutterExtension { /** Sets the compileSdkVersion used by default in Flutter app projects. */ val compileSdkVersion: Int = 36 /** Sets the minSdkVersion used by default in Flutter app projects. */ val minSdkVersion: Int = 24 /** * Sets the targetSdkVersion used by default in Flutter app projects. * targetSdkVersion should always be the latest available stable version. * * See https://developer.android.com/guide/topics/manifest/uses-sdk-element. */ val targetSdkVersion: Int = 36 /** * Sets the ndkVersion used by default in Flutter app projects. * Chosen as default version of the AGP version found in packages/flutter_tools/gradle/build.gradle.kts * and in packages/flutter_tools/gradle/build.gradle.kts as found in * https://developer.android.com/studio/projects/install-ndk#default-ndk-per-agp. */ val ndkVersion: String = "28.2.13676358" /** * Specifies the relative directory to the Flutter project directory. * In an app project, this is ../.. since the app's Gradle build file is under android/app. */ var source: String? = "../.." /** Allows to override the target file. Otherwise, the target is lib/main.dart. */ var target: String? = null /** The versionCode that was read from app's local.properties. */ var flutterVersionCode: String? = null /** The versionName that was read from app's local.properties. */ var flutterVersionName: String? = null /** Returns flutterVersionCode as an integer with error handling. */ fun getVersionCode(): Int { val versionCode = flutterVersionCode ?: throw GradleException("flutterVersionCode must not be null.") return versionCode.toIntOrNull() ?: throw GradleException("flutterVersionCode must be an integer.") } /** Returns flutterVersionName with error handling. */ fun getVersionName(): String = flutterVersionName ?: throw GradleException("flutterVersionName must not be null.") // The default getter name that Kotlin creates conflicts with the above methods. @get:JvmName("getVersionCodeProperty") val versionCode: Int get() = getVersionCode() // The default getter name that Kotlin creates conflicts with the above methods. @get:JvmName("getVersionNameProperty") val versionName: String get() = getVersionName() }