So ändern Sie Android minSdkVersion im Flatterprojekt

86

Ich habe versucht, ein Flatterprojekt für eine App mit Bluetooth zu starten, um zu kommunizieren. Dafür habe ich Flatterblau verwendet .

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ürde ich wissen, wie man die Android minSdkVersion hochfährt, aber bei einem Flatterprojekt (mit VSCode) war ich ein wenig verloren.

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

Maldus
quelle

Antworten:

204

Es ist zwar möglich, minSdkVersion zu erhöhen, aber ich habe viel zu viel Zeit gebraucht, um es herauszufinden, da Google-Suchanfragen meistens zu Ergebnissen führen, da Diskussionen über das absolute Minimum des Flatterns der Sdk-Version unterstützt werden sollten und nicht, wie es in Ihrem eigenen Projekt erhöht werden kann .

Wie in einem Android Studio-Projekt müssen Sie die build.gradleDatei bearbeiten . In einem Flatterprojekt befindet es sich am Pfad ./android/app/build.gradle.

Der Parameter, der geändert werden muss minSdkVersion 16, erhöht ihn natürlich auf das, was Sie benötigen (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, aber ich habe lange genug gebraucht, um es selbst herauszufinden.

Maldus
quelle
8
Der Dateipfad war sehr hilfreich! Ich habe mir die Datei build.gradle unter angesehen android/und konnte für mein ganzes Leben nicht herausfinden, wie ich diese minSdkVersion aktualisieren kann.
Adam
Was ist, wenn ich die minSdkVersion nicht ändern möchte, da ich auf die niedrigeren SDK-Versionen abzielen möchte? @ Malaldus
pblead26
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, ist dies leider ein Problem der Flatterbibliothek.
Maldus
9

Sie können das ändern minSdkVersionin 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"
}
Roger Cuesta
quelle
1

Befolgen Sie diese Schritte, um das minSdkVersionProblem zu ändern .

Zuerst => YouProject_name/android/app/build.gradle

Zweitens => defaultconfig {// Sie finden es in 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
    }
Umair Afzal
quelle
0

Wenn für Ihre App eine bestimmte Mindestversion der Android-Plattform erforderlich ist, können Sie diese Versionsanforderung als Einstellungen auf API-Ebene in der App- build.gradleDatei angeben . Während des Erstellungsprozesses werden diese Einstellungen in die Manifestdatei Ihrer App eingefügt. Durch die Angabe der Anforderungen auf API-Ebene wird sichergestellt, dass Ihre App nur auf Geräten installiert werden kann, auf denen eine kompatible Version der Android-Plattform ausgeführt wird.

Sie müssen minSdkVersionin build.gradleDatei setzen, sich in befinden  <app dir>/android/app und einen Wert im  defaultConfigBlock setzen:

Es stehen zwei Einstellungen auf API-Ebene zur Verfügung:

  • minSdkVersion - Die Mindestversion der Android-Plattform, auf der die App ausgeführt wird, angegeben durch die API-Level-ID der Plattform.
  • targetSdkVersion - Gibt die API-Ebene an, auf der die App ausgeführt werden soll. In einigen Fällen kann die App auf diese Weise Manifestelemente oder Verhaltensweisen verwenden, die auf der Ziel-API-Ebene definiert sind, anstatt nur diejenigen zu verwenden, die für die Mindest-API-Ebene definiert sind.

Fügen Sie build.gradle dem defaultConfig {} Block, der im Block verschachtelt ist  , eine oder mehrere der oben genannten Einstellungen hinzu, um die Standardanforderungen auf API-Ebene in einer Datei  festzulegen  android {} . Sie können diese Standardwerte auch für verschiedene Versionen Ihrer App überschreiben, indem Sie die Einstellungen zum Erstellen von Typen oder Produktvarianten hinzufügen. Die folgende  build.gradle Datei gibt die Standardeinstellungen  minSdkVersion und  targetSdkVersion Einstellungen im  defaultConfig {} Block an und überschreibt  minSdkVersion eine Produktvariante.

android {
   compileSdkVersion 29

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

Weitere Informationen finden Sie in der Dokumentation zu den Verwendungselementen sdk-element manifest und im Dokument API Levels .

Paresh Mangukiya
quelle