Как изменить Android minSdkVersion в проекте flutter

86

Я пытался запустить проект флаттера для приложения, использующего Bluetooth для связи. Для этого я использовал синий флаттер .

К сожалению, при попытке запустить (на устройстве Android) первый созданный мной пример я столкнулся со следующей ошибкой:

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)

Если бы я был на Android Studio, я бы знал, как поднять Android minSdkVersion, но в проекте флаттера (с использованием VSCode) я немного потерялся.

Можно ли увеличить minSdkVersion с помощью флаттера и как?

Мальдус
источник

Ответы:

204

Действительно, можно увеличить minSdkVersion, но мне потребовалось слишком много времени, чтобы выяснить это, потому что поиск в Google в основном дает в результате дискуссии об абсолютном минимуме флаттера версии Sdk, который должен поддерживать флаттер, а не о том, как увеличить его в вашем собственном проекте. .

Как и в проекте Android Studio, вы должны отредактировать build.gradleфайл. В проекте флаттера он находится на пути ./android/app/build.gradle.

Параметр, который необходимо изменить, - это, конечно minSdkVersion 16, поднять его до того, что вам нужно (в данном случае 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"
}

Сейчас это кажется очевидным, но мне потребовалось достаточно времени, чтобы разобраться в этом самостоятельно.

Мальдус
источник
8
Путь к файлу очень помог! Я смотрел на файл build.gradle android/и не мог понять, как обновить эту minSdkVersion.
Адам
Что делать, если я не хочу изменять minSdkVersion, поскольку хочу настроить таргетинг на более низкие версии SDK? @Maldus
pblead26
Тогда не меняй это? Я не уверен, что понимаю вопрос, я столкнулся с этой проблемой, потому что flutterblue не работал без изменения minSDKVersion. Если вы хотите использовать flutterblue с более ранней версией SDK, я боюсь, что это проблема библиотеки flutter.
Maldus
9

Вы можете изменить minSdkVersionв файле Project_Name/android/app/build.gradle, defaultconfig:

defaultConfig {
    // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
    applicationId "com.example.projectname"
    minSdkVersion 16 // <--- There
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
Роджер Куэста
источник
1

Выполните следующие действия, чтобы minSdkVersionрешить проблему.

Первый => YouProject_name/android/app/build.gradle

Second => defaultconfig {// вы можете найти его внутри build.gradle}

defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.umair.product_details_using_crud"
        minSdkVersion 16 // here you can change minSdkVersison
        targetSdkVersion 28
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }
Умайр Афзал
источник
0

Если вашему приложению требуется определенная минимальная версия платформы Android, вы можете указать эту версию в качестве настроек уровня API в build.gradleфайле приложения . В процессе сборки эти настройки объединяются в файл манифеста вашего приложения. Указание требований уровня API гарантирует, что ваше приложение может быть установлено только на устройствах, на которых работает совместимая версия платформы Android.

Вам нужно сделать набор minSdkVersionв build.gradleфайле, находящемся внутри,  <app dir>/android/app и установить значение в  defaultConfigблоке:

Доступны две настройки уровня API:

  • minSdkVersion - Минимальная версия платформы Android, на которой будет работать приложение, определяется идентификатором уровня API платформы.
  • targetSdkVersion - Указывает уровень API, на котором приложение предназначено для работы. В некоторых случаях это позволяет приложению использовать элементы манифеста или поведения, определенные на целевом уровне API, а не ограничиваться использованием только тех, которые определены для минимального уровня API.

Чтобы указать требования уровня API по умолчанию в  build.gradle файле, добавьте один или несколько параметров выше в  defaultConfig {} блок, вложенный внутри  android {} блока. Вы также можете переопределить эти значения по умолчанию для разных версий вашего приложения, добавив настройки для типов сборки или вкусов продуктов. В следующем  build.gradle файле указаны значения по умолчанию  minSdkVersion и  targetSdkVersion настройки в  defaultConfig {} блоке и переопределения  minSdkVersion для одного вкуса продукта.

android {
   compileSdkVersion 29

  ...
  defaultConfig {
    applicationId "com.app.yourapp”
    minSdkVersion 16
    targetSdkVersion 29
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
  }
  productFlavors {
    main {
      ...
    }
    afterLollipop {
      ...
      minSdkVersion 21
    }
  }
}

Для получения дополнительной информации см. Документацию по элементу манифеста uses-sdk- element и документ уровней API .

Пареш Мангукия
источник