When building Android apps with Flutter, managing the Android SDK versions in your project is essential for compatibility and performance. The SDK versions are defined in the android/app/build.gradle file under the android block. In this documentation, we will cover the three key parameters: compileSdkVersion, targetSdkVersion, and minSdkVersion.
Definition: The compileSdkVersion is the version of the Android SDK that is used to compile the app.
Usage: This does not affect the behavior of your app directly but ensures that you can use the latest Android API features while compiling.
Recommended Setting: Always use the latest stable version of the SDK. For instance, at the time of writing, it could be 35 for Android 15.
android { compileSdkVersion 35 }
Definition: The targetSdkVersion specifies the Android version for which your app is designed and tested.
Usage: This version affects how the system treats your app. Android uses this to enable or disable specific platform behaviors and compatibility changes.
Impact: If you set the targetSdkVersion to a higher version, your app will behave as if it was running on that version, including any restrictions or features introduced by that version.
Recommended Setting: Always set this to the highest version that your app is compatible with. Google Play typically requires you to target the most recent Android version within a specific timeframe.
Although not asked, it’s important to also be aware of minSdkVersion, which defines the minimum Android version that your app supports.
android { minSdkVersion 21 // Example, supports Android 5.0 and above }
android { compileSdkVersion 35 defaultConfig { applicationId "com.example.myapp" minSdkVersion 21 targetSdkVersion 35 versionCode 1 versionName "1.0" } }
Here are the key differences between compileSdkVersion and targetSdkVersion:
compileSdkVersion determines the maximum Android API level available during compilation.
targetSdkVersion determines the highest Android API level that your app is designed to work with.