如何在Flutter项目中更改Android minSdkVersion

时间:2018-08-28 14:39:47

标签: android flutter android-sdk-tools

我正在尝试启动一个使用蓝牙进行通信的App的Flutter项目。为此,我使用的是flutter blue

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

6 个答案:

答案 0 :(得分:13)

确实有可能增加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"
}

现在似乎很明显,但花了我足够长的时间自己解决。

答案 1 :(得分:2)

您可以在Project_Name / android / app / build.gradle,defaultconfig中更改minSdkVersion:

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"
}

答案 2 :(得分: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
    }

答案 3 :(得分:1)

我在我的 flutter 应用程序中设置 Auth0、flutter_appauth 和 flutter_secure_storage 时遇到了这个问题。更改 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.
  • 出了什么问题: 任务“:app:processDebugManifest”执行失败。
<块引用>

清单合并失败:AndroidManifest.xml 中的属性 data@scheme 需要占位符替换,但未提供任何值。

解决方案是添加 manifestPlaceholders

view image

答案 4 :(得分:0)

如果您的应用需要特定的最低Android平台最低版本,则可以在应用的build.gradle文件中将该版本要求指定为API级别设置。在构建过程中,这些设置将合并到您应用的清单文件中。指定API级别要求可确保您的应用只能安装在运行兼容版本的Android平台的设备上。

您必须在minSdkVersion中的build.gradle文件中设置<app dir>/android/app,并在defaultConfig块中设置一个值:

有两种API级别设置:

  • minSdkVersion-应用将在其上运行的Android平台的最低版本,由平台的API级别标识符指定。
  • targetSdkVersion-指定设计运行该应用程序的API级别。在某些情况下,这使应用程序可以使用在目标API级别定义的清单元素或行为,而不仅限于使用为最低API级别定义的元素或行为。

要在build.gradle文件中指定默认的API级别要求,请将上面的一个或多个设置添加到defaultConfig {}块中嵌套的android {}块中。您还可以通过添加构建类型或产品口味的设置来覆盖应用程序不同版本的这些默认值。以下build.gradle文件在minSdkVersion块中指定了默认的targetSdkVersiondefaultConfig {}设置,并为一种产品口味覆盖了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 Levels文档。

答案 5 :(得分:-1)

第一次运行 扑通干净

然后更改文件中的 minSdkVersion Project_Name/android/app/build.gradle , defaultconfig :