blob: dfce6d1deb8ff53f0fa5e12292fd2735bea6a54d [file] [log] [blame]
// 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()
}