FlutterプロジェクトでAndroidminSdkVersionを変更する方法


84

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を増やすことは可能ですか?

回答:


203

minSdkVersionを増やすことは確かに可能ですが、グーグル検索はほとんどの場合、自分のプロジェクトで増やす方法ではなく、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を更新する方法を一生理解できませんでした。
アダム

より低いSDKバージョンをターゲットにしたいので、minSdkVersionを変更したくない場合はどうなりますか?@Maldus
pblead

それなら変えないの?質問を理解できるかどうかわかりません。minSDKVersionを変更しないとflutterblueが機能しなかったため、この問題が発生しました。より低いSDKバージョンでflutterblueを使用したい場合、それはflutterライブラリの問題であると思います。
マルダス

8

あなた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プラットフォームの特定の最小バージョンが必要な場合は、そのバージョン要件をアプリのbuild.gradleファイルのAPIレベル設定として指定できます。ビルドプロセス中に、これらの設定はアプリのマニフェストファイルにマージされます。APIレベルの要件を指定すると、互換性のあるバージョンのAndroidプラットフォームを実行しているデバイスにのみアプリをインストールできるようになります。

あなたは、セットをしなければならないminSdkVersionbuild.gradleにある、ファイル <app dir>/android/app およびに値を設定する defaultConfigブロック:

使用可能なAPIレベル設定は2つあります。

  • minSdkVersion —プラットフォームのAPIレベル識別子で指定された、アプリが実行されるAndroidプラットフォームの最小バージョン。
  • targetSdkVersion —アプリが実行するように設計されているAPIレベルを指定します。場合によっては、これにより、アプリは、最小APIレベルで定義されたものだけを使用するように制限されるのではなく、ターゲットAPIレベルで定義されたマニフェスト要素または動作を使用できます。

build.gradle ファイルでデフォルトのAPIレベル要件を指定するに は、上記の1つ以上の設定をdefaultConfig {} ブロックに追加し、 ブロック内にネストし android {} ます。ビルドタイプまたは製品フレーバーに設定を追加することで、アプリのさまざまなバージョンのこれらのデフォルト値をオーバーライドすることもできます。次の build.gradle ファイル は、 ブロック内のデフォルトminSdkVersion と targetSdkVersion設定を指定 し、   1つの製品フレーバー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レベルのドキュメントを参照しください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.