Flutter升级Android端遇两类报错:Error-32601及清单合并失败
解决Flutter升级后Android构建的两个问题
刚升级Flutter就碰到这俩Android构建问题?我之前也踩过类似的坑,给你整理了靠谱的解决办法:
问题1:Error -32601 "Method not found"
这个错误大多是Flutter与原生Android的方法通道(MethodChannel)不匹配,或者插件版本兼容问题导致的,按下面步骤排查:
- 更新插件版本:打开项目根目录的
pubspec.yaml,把所有依赖的Flutter插件更新到适配当前Flutter SDK的最新版本,然后执行flutter pub get拉取最新依赖。 - 核对方法名一致性:检查Dart端调用
MethodChannel.invokeMethod()时传入的方法名,和Android原生端MethodChannel.setMethodCallHandler()里判断的方法名完全一致,包括大小写、下划线等细节,一点都不能错。 - 清理缓存重建:执行
flutter clean清除项目缓存,手动删除Android模块下的.build文件夹,然后重新运行flutter run构建项目。
问题2:任务':app:processDebugManifest'执行失败(清单合并冲突)
这个是因为项目中引入的不同依赖库使用了不同版本的Android Support库,导致清单合并时版本冲突,解决办法如下:
方法一:通过Manifest直接覆盖版本
- 打开Android模块的
AndroidManifest.xml,在<application>标签里添加tools命名空间:<application xmlns:tools="http://schemas.android.com/tools" ...> - 在
<application>内部添加meta-data标签,指定统一的Support库版本并启用替换:<meta-data android:name="android.support.VERSION" android:value="26.1.0" tools:replace="android:value" />
方法二:统一所有依赖的Support库版本
打开Android模块的build.gradle(注意是Module级别的,不是Project根目录的),在android代码块中添加以下配置,强制所有依赖使用指定版本的Support库:
android { // 其他配置... configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'com.android.support') { if (!requested.name.startsWith("multidex")) { details.useVersion '26.1.0' } } } } }
完成上述配置后,同样执行flutter clean再重新构建项目即可。
内容的提问来源于stack exchange,提问作者Hummingbird
相关产品推荐
相关产品推荐

