Flutter调用geocoder坐标查地址出现Android embedding弃用警告如何处理?
Flutter geocoder插件Android V2 embedding弃用警告解决方案
问题场景
在Flutter开发中实现坐标反查地址(Find Address From Coordinates)功能时,调用geocoder插件的代码如下:
final addresses = await Geocoder.local.findAddressesFromCoordinates(coordinates); selectedAddress = addresses.first;
项目构建时控制台输出如下警告:
插件
geocoder使用了已弃用的Android embedding版本。为避免意外运行时故障或未来构建失败,请确认该插件是否支持Android V2 embedding;若不支持建议移除,因为Flutter后续版本将移除这些已弃用的API。如果你是插件作者,可查阅官方文档了解插件向V2 embedding迁移的指引。
解决方法
- 优先方案:替换为官方维护的geocoding插件
原geocoder插件已停止维护多年,原生层未适配Android V2 embedding,后续Flutter升级后会直接导致构建失败,直接替换为官方维护的地理编码插件是最稳定的选择:- 打开
pubspec.yaml文件,删除原有的geocoder依赖,添加geocoding最新版本依赖,执行flutter pub get拉取包。 - 将原有坐标反查地址的逻辑替换为如下代码:
- 打开
import 'package:geocoding/geocoding.dart';
// 根据经纬度查询地址
List
coordinates.latitude,
coordinates.longitude,
);
// 获取第一条匹配的地址结果
selectedAddress = placeMarks.first;
3. 按照插件说明配置Android、iOS端的定位/地理编码相关权限即可,该插件完全适配最新Flutter构建规范,不会再触发相关警告。 - **临时方案:隐藏警告(不推荐长期使用)** 如果项目迭代紧张暂时无法替换插件,可以通过配置跳过插件嵌入版本检查临时隐藏警告,但该方法没有解决根本兼容问题,后续Flutter移除旧版嵌入API后项目会直接无法构建: 1. 打开Android项目目录下的`gradle.properties`文件 2. 新增如下配置项: ```properties # 跳过Android插件嵌入版本合规检查 flutter.suppressAndroidEmbeddingWarnings=true
配置完成后重新构建项目,警告就不会再输出。
- 自定义方案:自行适配插件源码
如果业务逻辑强绑定原geocoder插件的特殊能力,可以自行fork插件源码,按照Flutter官方的Android V2 embedding迁移规范修改插件原生层代码,修改完成后在pubspec.yaml中通过git地址引用自己修改后的插件版本即可,该方案需要自行维护插件代码,适配成本较高。
内容的提问来源于stack exchange,提问作者ngoding lou
相关产品推荐
相关产品推荐

