You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改local.properties中flutter.minSdkVersion=21仍不生效求助

问题描述
  • 新建Flutter项目,仅在pubspec.yaml中添加了以下依赖:
    flutter_inappwebview: 5.0.5
    
  • 为让该包正常运行,需提高minSdkVersion,因此编辑local.properties文件,在末尾添加相关配置:
    sdk.dir=xxxx\AppData\Local\Android\Sdk
    flutter.sdk=D:\Flutter\flutter
    flutter.buildMode=debug
    flutter.versionName=1.0.0
    flutter.versionCode=1
    flutter.minSdkVersion=21
    flutter.targetSdkVersion=30
    flutter.compileSdkVersion=30
    
  • 但仍收到错误提示:

    lib\main.dart:1
    xxxx\gbc\android\app\src\debug\AndroidManifest.xml Error:
    uses-sdk:minSdkVersion 16 cannot be smaller than version 17 declared in library [:flutter_inappwebview]
    xxxx\gbc\build\flutter_inappwebview\intermediates\library_manifest\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 17,
    or use tools:overrideLibrary="com.pichillilorenzo.flutter_inappwebview" to force usage (may lead to runtime failures)

解决方法

方法1:直接修改android/app/build.gradle的minSdkVersion

打开android/app/build.gradle文件,找到defaultConfig代码块,把minSdkVersion改成至少17(你设置的21完全没问题):

defaultConfig {
    applicationId "com.example.your_app"
    minSdkVersion 21 // 调整这里,数值≥17即可
    targetSdkVersion 30
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
}

修改后重新编译项目即可,这是最直接有效的方式。

方法2:让gradle读取local.properties的配置

如果想通过local.properties统一管理版本号,需要确保gradle能正确读取这些配置。在android/app/build.gradle文件开头添加以下代码:

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterMinSdkVersion = localProperties.getProperty('flutter.minSdkVersion') ?: '16'

然后在defaultConfig里引用这个变量:

minSdkVersion flutterMinSdkVersion.toInteger()

这样gradle就会使用你在local.properties里设置的21作为minSdkVersion了。

方法3:强制覆盖(不推荐)

如果暂时不想升级minSdk,可以尝试在AndroidManifest.xml里添加强制覆盖配置,但这种方式可能导致低版本设备上运行崩溃,谨慎使用:

  1. 先在manifest标签里添加tools命名空间:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.your_app">
  1. 在uses-sdk标签里添加overrideLibrary属性:
<uses-sdk android:minSdkVersion="16"
    android:targetSdkVersion="30"
    tools:overrideLibrary="com.pichillilorenzo.flutter_inappwebview"/>

内容的提问来源于stack exchange,提问作者s k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 01:01:01