Я пытался запустить проект флаттера для приложения, использующего 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 с помощью флаттера и как?
Действительно, можно увеличить 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"
}
Сейчас это кажется очевидным, но мне потребовалось достаточно времени, чтобы разобраться в этом самостоятельно.
Путь к файлу очень помог! Я смотрел файл build.gradle в android/ и не мог понять, как обновить эту minSdkVersion.
Что делать, если я не хочу изменять minSdkVersion, поскольку я хочу настроить таргетинг на более низкие версии SDK? @Maldus
Тогда не меняй это? Я не уверен, что понимаю вопрос, я столкнулся с этой проблемой, потому что flutterblue не работал без изменения minSDKVersion. Если вы хотите использовать flutterblue с более ранней версией SDK, я боюсь, что это проблема библиотеки flutter.
@ pblead26 Столкнулся с той же проблемой. Кажется, нет другого пути, кроме увеличения minSdkVersion.
Вы можете изменить 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"
}
Выполните следующие действия, чтобы решить проблему с 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
}
Если вашему приложению требуется определенная минимальная версия платформы 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
}
}
}
Для получения дополнительной информации см. Документацию по элементу манифеста использует-sdk-element и документ Уровни API.
Я столкнулся с этой проблемой при настройке Auth0, flutter_appauth и flutter_secure_storage в моем приложении flutter. После изменения версии minSdkVersion я получил эту ошибку
C:\Users\myusername\AndroidStudioProjects\wole\android\app\src\debug\AndroidManifest.xml Error:
Attribute data@scheme at AndroidManifest.xml requires a placeholder substitution but no value for <appAuthRedirectScheme> is provided.
FAILURE: Build failed with an exception.
Manifest merger failed : Attribute data@scheme at AndroidManifest.xml requires a placeholder substitution but no value for is provided.
Решение добавляет manifestPlaceholder таким образом

первый забег порхать чисто
затем измените minSdkVersion в файле Имя проекта / android / app / build.gradle, defaultconfig:
Справочная информация о minSdkVersion, которая может быть полезна: developer.android.com/ndk/guides/sdk-versions#minsdkversion