Flutter : Wie ändere ich die Android minSdkVersion in Flutter Project?

Lesezeit: 8 Minuten

Benutzeravatar von Maldus
Maldus

Ich habe versucht, ein Flatterprojekt für eine App zu starten, die Bluetooth zur Kommunikation verwendet. Dafür benutzte ich flattern blau.

Leider wurde beim Versuch, das erste von mir erstellte Beispiel (auf einem Android-Gerät) auszuführen, der folgende Fehler angezeigt:

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)

Wenn ich auf Android Studio wäre, wüsste ich, wie man die Android minSdkVersion erhöht, aber bei einem Flutter-Projekt (mit VSCode) war ich ein wenig verloren.

Ist es möglich, die minSdkVersion mit Flutter zu erhöhen, und wie?

Benutzeravatar von Maldus
Maldus

Es ist tatsächlich möglich, minSdkVersion zu erhöhen, aber ich habe viel zu lange gebraucht, um das herauszufinden, weil die Google-Suche meistens Diskussionen über die absolute Mindest-SDK-Version liefert, die Flattern unterstützen sollte, und nicht, wie man sie in Ihrem eigenen Projekt erhöhen kann .

Wie in einem Android Studio-Projekt müssen Sie die bearbeiten build.gradle Datei. In einem Flatterprojekt ist es am Pfad zu finden ./android/app/build.gradle.

Der zu ändernde Parameter ist natürlich minSdkVersion 16stoßen Sie es auf das, was Sie brauchen (in diesem Fall 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"
}

Scheint jetzt offensichtlich zu sein, aber ich habe lange genug gebraucht, um es selbst herauszufinden.

  • Der Dateipfad war sehr hilfreich! Ich habe mir die Datei build.gradle unten angesehen android/ und konnte für mein ganzes Leben nicht herausfinden, wie ich diese minSdkVersion aktualisieren kann.

    – Adam

    12. Mai 2019 um 5:17 Uhr

  • Was ist, wenn ich die minSdkVersion nicht ändern möchte, da ich auf die niedrigeren SDK-Versionen abzielen möchte? @Maldus

    – pblead26

    18. Juni 2019 um 19:57 Uhr

  • Dann nicht ändern? Ich bin mir nicht sicher, ob ich die Frage verstehe, ich bin auf dieses Problem gestoßen, weil Flutterblue nicht funktioniert hat, ohne die minSDKVersion zu ändern. Wenn Sie Flutterblue mit einer niedrigeren SDK-Version verwenden möchten, befürchte ich, dass dies ein Problem der Flutter-Bibliothek ist.

    – Maldus

    20. Juni 2019 um 13:06 Uhr

  • @ pblead26 Stehe vor dem gleichen Problem. Scheint kein anderer Weg zu sein, als minSdkVersion zu erhöhen.

    – Faizan Mubasher

    26. Februar 2021 um 5:21 Uhr

  • Diese Vorgehensweise zu verwenden ist keine gute Idee! Die Antworten von Francis Nduba & (Mr Random & Jahidul Islam) bieten zwei gute Ansätze. Der Ansatz von (Mr Random & Jahidul Islam) sollte verwendet werden, wenn Sie die minSdkVersion nur für ein bestimmtes Projekt überschreiben und die standardmäßige minSdkVersion unverändert lassen möchten. Der Ansatz von Francis Nduba sollte verwendet werden, wenn Sie eine bestimmte minSdkVersion für alle Ihre Flutter-Projekte verwenden möchten. Im Allgemeinen sollten Sie die standardmäßige minSdkVersion von Flattern nicht für alle Projekte ändern, es sei denn, dies wird von einem Ihrer Pakete/Features benötigt.

    – Irschukhan

    28. Januar um 7:08 Uhr

Benutzeravatar von Jahidul Islam
Jahidul Islam

Flutter 2.8 oder höher

build.gradle aktualisieren

Vor dem Update auf Flutter 2.8

android {
    compileSdkVersion 30

defaultConfig {
    applicationId "com.example.app"
    minSdkVersion 21
    targetSdkVersion 30
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
    multiDexEnabled true
}

Nach dem Update auf Flutter 2.8:

android {
    compileSdkVersion flutter.compileSdkVersion

defaultConfig {
        applicationId "com.example.app"
        minSdkVersion flutter.minSdkVersion
        targetSdkVersion flutter.targetSdkVersion
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

Sie sollten von wechseln local.properties folgende Anweisung:

  1. Gehen Sie zuerst zu android->local.properties

Geben Sie hier die Bildbeschreibung ein

  1. Und Änderungen von hier

Geben Sie hier die Bildbeschreibung ein

  1. Ändern Sie so von 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
}

  • Wissen Sie, warum es nicht angezeigt wird, während ich ein neues Projekt erstellt habe?

    – Karin

    17. Dezember 2021 um 2:33 Uhr

  • Eigentlich wird es standardmäßig generiert, aber wenn Sie nicht in den Android-Ordner gelangen, erstellen Sie es manuell.

    – Jahidul-Islam

    17. Dezember 2021 um 5:49 Uhr

  • Es funktioniert nicht für mich

    – Webmaster

    20. Dezember 2021 um 8:51 Uhr

  • Sie können nicht direkt lesen flutter.minSdkVersion verwenden localProperties.getProperty('flutter.minSdkVersion') Schauen Sie sich meine Antwort an stackoverflow.com/questions/52060516/…

    – Herr Zufällig

    22. Dezember 2021 um 16:17 Uhr


  • local.properties Datei ist normalerweise nicht unter Quellcodeverwaltung. Ich denke also nicht, dass es ein guter Ort ist, um wichtige nicht lokale Konfigurationen wie diese zu haben.

    – David Miguel

    10. Februar um 8:38 Uhr

Benutzeravatar von Francis Nduba Numbi
Francis Nduba Numbi

Falls Sie es nicht wussten, erlaubt der Google Playstore nur minSdkVersion 20 oder höher. Aber Flutter hat immer noch die standardmäßige minSdkVersion auf 16 gesetzt. Können Sie sehen, dass Sie immer gezwungen sind, für jedes neue Projekt manuell zu ändern?

Alle Ihre obigen Vorschläge sind gut, aber sie sind nicht die besten, weil Sie gezwungen sein werden, sich mit dem zu befassen build.gradle für jedes neue Projekt, das Sie erstellen.

Der beste Weg ist, den Wert von zu ändern globale minSdkVersion-Variable von seiner Quelle, so dass alle Projekte, ob neu oder alt, es übernehmen werden. Denken Sie daran flatter.minSdkVersion bedeutet, dass die Variable in ist flattern Verzeichnis (mit dem SDK).

Die betreffende Datei ist flattern.gradle.

Die adresse ist Flutter-Verzeichnis/packages/flutter_tools/gradle/flutter.gradle

class FlutterExtension {
    /** Sets the compileSdkVersion used by default in Flutter app projects. */
    static int compileSdkVersion = 31

    /** Sets the minSdkVersion used by default in Flutter app projects. */
    static int minSdkVersion = 16

    /** Sets the targetSdkVersion used by default in Flutter app projects. */
    static int targetSdkVersion = 31

Ändern Sie den Wert der minSdkVersion von 16 auf 20 oder höher und stören Sie den Code nicht build.gradle.

Wenn Sie möchten, können Sie sich ein Video ansehen, das ich auf Youtube gemacht habe und das unter erklärt: flattern konfigurieren minSdkVersion von 16 auf 20 oder höher

  • Danke @Francis Nduba Numbi, das ist bei weitem die beste Antwort. So muss ich nicht bei jedem einzelnen Projekt Änderungen vornehmen. Mein Ansatz ist es, standardmäßig immer auf höhere Versionen abzuzielen und nur für bestimmte Projekte Abwärtskompatibilität zu gewährleisten.

    – paulobunga

    8. Januar um 15:05 Uhr

  • Ich würde argumentieren, dass Sie die Datei build.gradle ändern sollten. Das Ändern der globalen Variablen wirkt sich nur auf Ihr eigenes System aus. Wenn also jemand anderes in Ihrem Team (oder einer CI/CD-Pipeline) das Projekt klont, wird er Probleme beim Erstellen haben.

    – Jani

    20. Januar um 7:05 Uhr

  • Schöner Punkt. Dann sollten Sie eine Notiz in ReadMe hinterlassen, um über die minimale minSdkVersion zu informieren

    – Francis Nduba Numbi

    23. Januar um 10:21 Uhr

  • Es tut mir leid, das ist eine extrem schlechte Antwort. Sie sollten die Quelle des Tools nicht ändern, wenn Sie das Projekt ändern möchten. Dies bedeutet, dass für ein Projekt in der Quellcodeverwaltung keine eigenen Build-Informationen definiert sind (es wird nicht auf verschiedenen Computern gleich kompiliert), dass JEDES Projekt auf dem eigenen Computer diese Version verwendet und dass ein Upgrade von Flutter sie beschädigt. Das Tool sollte projektunabhängig sein. Um es klar zu sagen: Dies sollte UNTER KEINEN UMSTÄNDEN DURCHGEFÜHRT WERDEN, egal wie “einfach” es aussieht. Jeder, der seinen Build an eine bestimmte Version anheften möchte, sollte ihn bearbeiten build.gradle direkt.

    – zäh

    10. März um 3:52


  • Ich empfehle nicht, diese Antwort zu verwenden. Dies sollte auf Projektebene festgelegt werden

    – Lukas Pighetti

    20. April um 1:47

Benutzeravatar von Herrn Random
Herr Zufall

Für Flattern v2.8

Innerhalb von local.properties hinzufügen

sdk.dir="<path>"
flutter.sdk='<path>'
flutter.buildMode=debug
flutter.versionName=1.0.0
flutter.versionCode=1

flutter.minSdkVersion=21
flutter.targetSdkVersion=30
flutter.compileSdkVersion=30

build.gradle auf App-Ebene

defaultConfig {
    minSdkVersion localProperties.getProperty('flutter.minSdkVersion').toInteger()
    targetSdkVersion localProperties.getProperty('flutter.targetSdkVersion').toInteger()
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
}

Jetzt können Sie verwenden localProperties.getProperty() um den Wert aus der Eigenschaftendatei zu lesen.

Benutzeravatar von Roger Cuesta
Roger Cuesta

Sie können die ändern minSdkVersion in der Datei 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"
}

Benutzeravatar von dphans
Kinder

Mit den neuen Flutter-Projekten (2.8.0) mit dem „Flutter-Stil“ können Sie die minimale SDK-Version in local.properties ändern (anstatt die Datei app/build.gradle zu bearbeiten).

# android/local.properties

flutter.minSdkVersion=19

Schauen Sie in die Datei android/app/build.gradle, Sie sehen die Variablenbeschränkung wie folgt:

# android/app/build.gradle

android {

  defaultConfig {
    minSdkVersion flutter.minSdkVersion
    targetSdkVersion flutter.targetSdkVersion
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
  }
}

Benutzeravatar von Aizan Sagheer
Aizan Sagher

Alle Antworten sind die besten. Aber der folgende Weg ist am besten, um die SdkVersion nach Flutter 2.8 zu ändern:

Gehen Sie in Ihr Stammverzeichnis, in dem Flutter installiert ist. Es sollte wie sein

C:\src\flutter\flutter

Dann geh zu

packages>Flutter tools>gradle>

In Gradle sehen Sie viele Dateien, suchen Sie flutter.gradle . Klicken Sie mit der rechten Maustaste darauf und bearbeiten Sie es mit einem Texteditor/Notepad.

hier finden Sie alle SDK-Versionen. Ändern Sie sie, speichern Sie, und dann können Sie loslegen

Der vollständige Pfad sollte so aussehen: (in meinem Fall)

C:\src\flutter\flutter\packages\flutter_tools\gradle

Im Bild sehen Sie SDKs

  • Das habe ich gesucht, danke!

    – Apoorv Pandey

    22. September um 21:14 Uhr

1432210cookie-checkFlutter : Wie ändere ich die Android minSdkVersion in Flutter Project?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy