Flutter: ¿Cómo cambiar Android minSdkVersion en Flutter Project?
Estaba intentando iniciar un proyecto de aleteo para una aplicación que usa Bluetooth para comunicarse. Para eso, estaba usando flutter blue .
Desafortunadamente, al intentar ejecutar (en un dispositivo Android) el primer ejemplo que creé, me encontré con el siguiente error:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library [:flutter_blue] /home/maldus/Projects/flutter/polmac/build/flutter_blue/intermediates/manifests/full/debug/AndroidManifest.xml as the library might be using APIs not available in 16
Suggestion: use a compatible library with a minSdk of at most 16,
or increase this project's minSdk version to at least 19,
or use tools:overrideLibrary="com.pauldemarco.flutterblue" to force usage (may lead to runtime failures)
Si estuviera en Android Studio, sabría cómo mejorar Android minSdkVersion, pero en un proyecto Flutter (usando VSCode) estaba un poco perdido.
¿Es posible aumentar minSdkVersion con Flutter y cómo?
De hecho, es posible aumentar minSdkVersion, pero me tomó demasiado tiempo descubrirlo porque las búsquedas en Google arrojan principalmente como resultado discusiones sobre la versión mínima absoluta de Sdk que flutter debería poder admitir, no cómo aumentarla en su propio proyecto. .
Como en un proyecto de Android Studio, debes editar el build.gradle
archivo. En un proyecto de aleteo, se encuentra en la ruta ./android/app/build.gradle
.
El parámetro que debe cambiarse es, por supuesto, minSdkVersion 16
aumentarlo a lo que necesita (en este caso 19).
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.projectname"
minSdkVersion 19 //*** This is the part that needs to be changed, previously was 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
Ahora parece obvio, pero me llevó bastante tiempo descubrirlo por mi cuenta.
Flutter 2.8 o posterior
build.gradle
actualizar
Antes de actualizar a Flutter 2.8
android {
compileSdkVersion 30
defaultConfig {
applicationId "com.example.app"
minSdkVersion 21
targetSdkVersion 30
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
multiDexEnabled true
}
Después de actualizar a Flutter 2.8:
android {
compileSdkVersion flutter.compileSdkVersion
defaultConfig {
applicationId "com.example.app"
minSdkVersion flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
Debes cambiar de local.properties
las siguientes instrucciones:
- Primero vaya a android->local.properties
- Y los cambios desde aquí
- Cambie así desde build.gradle
android {
compileSdkVersion localProperties.getProperty('flutter.compileSdkVersion').toInteger()
defaultConfig {
minSdkVersion localProperties.getProperty('flutter.minSdkVersion').toInteger()
targetSdkVersion localProperties.getProperty('flutter.targetSdkVersion').toInteger()
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}