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

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升级后会直接导致构建失败,直接替换为官方维护的地理编码插件是最稳定的选择:
    1. 打开pubspec.yaml文件,删除原有的geocoder依赖,添加geocoding最新版本依赖,执行flutter pub get拉取包。
    2. 将原有坐标反查地址的逻辑替换为如下代码:

import 'package:geocoding/geocoding.dart';

// 根据经纬度查询地址
List placeMarks = await placemarkFromCoordinates(
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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:15:59