Як змінити Android minSdkVersion у проекті флаттера


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

Другий => 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 Рівні .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.