修改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里添加强制覆盖配置,但这种方式可能导致低版本设备上运行崩溃,谨慎使用:
- 先在
manifest标签里添加tools命名空间:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.example.your_app">
- 在
uses-sdk标签里添加overrideLibrary属性:
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="30" tools:overrideLibrary="com.pichillilorenzo.flutter_inappwebview"/>
内容的提问来源于stack exchange,提问作者s k

