如何在Flutter项目中更改Android minSdkVersion


84

我正在尝试为使用蓝牙进行通信的应用程序启动一个Flutter项目。为此,我使用了颤动的蓝色

不幸的是,当尝试运行(在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,如何?

Answers:


202

确实有可能增加minSdkVersion,但是我花了太多时间才找到它,因为google搜索主要是收益,因为关于绝对最小Sdk版本抖动的结果讨论应该能够支持,而不是如何在您自己的项目中增加它。

就像在Android Studio项目中一样,您必须编辑build.gradle文件。在颤动的项目中,可以在path中找到它./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
pblead26

那不要改变吗?我不确定我是否理解这个问题,因为没有修改minSDKVersion,flutterblue无法正常工作,所以我遇到了这个问题。如果要在较低的SDK版本中使用flutterblue,恐怕这是flutter库的问题。
马尔杜斯(Maldus)

8

您可以更改minSdkVersion该文件中Project_Name/android/app/build.gradledefaultconfig

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级别设置可用:

  • minSdkVersion —应用将在其上运行的Android平台的最低版本,由平台的API级别标识符指定。
  • targetSdkVersion —指定设计应用程序运行的API级别。在某些情况下,这允许应用使用目标API级别中定义的清单元素或行为,而不是被限制为仅使用针对最低API级别定义的元素或行为。

要在build.gradle 文件中指定默认的API级别要求 ,请将上面的一个或多个设置添加到该 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级别”文档。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.