VS Code中Flutter打包APK报错求助:Android资源链接失败
:speech_recognition:verifyReleaseResources资源链接错误 我之前打包Flutter APK时也碰到过完全一样的问题——用flutter build apk --split-per-abi命令打包,结果卡在了Gradle的assembleRelease任务,具体是:speech_recognition:verifyReleaseResources任务报错,说找不到android:attr/fontStyle、android:attr/font这类资源,而且Flutter自动生成android/settings_aar.gradle文件还失败了。试过AndroidX兼容性检查、flutter clean、pub get/pub update都没用,最后手动修改settings.gradle才搞定,具体步骤如下:
问题根源
这个问题本质是speech_recognition插件的编译配置和你的项目Android Gradle环境不匹配,插件依赖的旧版Android资源属性和当前项目的compileSdk/AndroidX版本冲突,而且自动配置文件生成失败,必须手动调整插件的引入方式。
解决步骤
先关闭所有相关IDE
把VS Code和Android Studio都关掉,避免文件被进程占用导致修改无效。手动修改
android/settings.gradle
打开项目的android/settings.gradle文件,做以下调整:- 如果文件里有引用
settings_aar.gradle的代码,先删掉这部分; - 替换成以下配置,确保插件能正确使用项目的Gradle配置:
include ':app' def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() def plugins = new Properties() def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') if (pluginsFile.exists()) { pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } } plugins.each { name, path -> def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() include ":$name" project(":$name").projectDir = pluginDirectory }
- 如果文件里有引用
统一子项目的编译配置
打开android/build.gradle,在allprojects块后面添加subprojects配置,强制所有插件使用项目的compileSdk和AndroidX版本:subprojects { afterEvaluate { project -> if (project.hasProperty("android")) { android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion } } } }注意要确保你的
android/build.gradle里已经定义了ext属性,比如:ext { compileSdkVersion = 33 buildToolsVersion = "33.0.2" minSdkVersion = 21 targetSdkVersion = 33 }重新执行打包命令
回到项目根目录,依次执行:flutter cleanflutter pub get- 最后执行
flutter build apk --split-per-abi
如果还是不行,可以试试把speech_recognition插件更新到最新版本,或者考虑替换成维护更活跃的语音识别插件(比如功能类似的同类型插件)。
内容的提问来源于stack exchange,提问作者Solid Soft

