# flutter_bmfmap_example
🚧 **重要说明(必看)**
本项目在 **Flutter 新版本(Android Gradle Plugin ≥ 8.x)** 环境下运行时,
会遇到 **百度 Flutter 地图 / 定位插件构建失败的问题**。
这些问题并非使用方式错误,而是 **插件本身尚未完全适配新 Flutter / 新 AGP 体系**。
本仓库已对相关插件做了 **必要的兼容修复**,并将插件 **直接内置在项目中**,
以避免大家在 AGP 8.x + Flutter 新版本环境下反复踩坑。
---
## ❗ 常见问题汇总(两个必踩坑)
如果你使用以下百度 Flutter 插件:
- `flutter_bmflocation`
- `flutter_baidu_mapapi_map`
- `flutter_baidu_mapapi_search`
- `flutter_baidu_mapapi_utils`
并且你的环境是:
- Flutter 3.x / 4.x
- Android Gradle Plugin ≥ 8.x
- Gradle ≥ 8.x
- JDK ≥ 17
你**大概率会依次遇到以下两个错误**:
### ❌ 问题一:缺少 namespace
```text
Namespace not specified. Specify a namespace in the module's build file.
```error: cannot find symbol
PluginRegistry.Registrar
百度 Flutter 插件仍基于 旧版 Android Gradle Plugin(3.x)模板:
- Android Library Module 中 未声明
namespace - 而 AGP 8+ 已强制要求所有 module 必须显式声明 namespace
因此在新 AGP 环境下会 直接构建失败。
插件中仍存在以下旧代码(Embedding v1):
public static void registerWith(PluginRegistry.Registrar registrar) {
}而 Flutter 新版本 Android 端默认使用 Embedding v2,
PluginRegistry.Registrar 已不再可用,导致 Java 编译直接失败。
- 本仓库 已内置修复后的插件源码
- ✅ 补充了
namespace - ✅ 移除了已废弃的
registerWith(PluginRegistry.Registrar) - 使用 path 本地依赖
- 使用者 无需手动复制 pub cache
- 一次修复,长期可用
flutter_bmfmap_example/
├── flutter_bmflocation-3.4.0/
│ └── android/
│ ├── build.gradle
│ └── src/main/java/
│ └── FlutterBmflocationPlugin.java
├── lib/
├── pubspec.yaml
└── README.md
文件路径:
flutter_bmflocation-3.4.0/android/build.gradle
android {
namespace "com.baidu.flutter_bmflocation"
compileSdkVersion 30
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
defaultConfig {
minSdkVersion 19
}
}文件路径:
flutter_bmflocation-3.4.0/android/src/main/java/...
FlutterBmflocationPlugin.java
已删除以下方法:
public static void registerWith(PluginRegistry.Registrar registrar)插件仅保留 Flutter Embedding v2 生命周期方法:
onAttachedToEngine(...)
onDetachedFromEngine(...)修改 pubspec.yaml:
dependencies:
flutter_bmflocation:
path: flutter_bmflocation-3.4.0flutter pub get---android\app\src\main\AndroidManifest.xml<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="请在此输入您在开放平台上申请的API_KEY" />flutter run🎉 Android 端即可正常构建运行。
-
❌ 不推荐直接修改 pub cache
- 每次
flutter pub get都可能被覆盖
- 每次
-
⚠️ 插件仍使用旧 AGP DSL- 后续升级 Flutter / AGP 可能仍需手动适配
-
✅ 使用本仓库内置插件是目前最稳妥、可维护的方案
- Flutter: 3.x / 4.x
- Android Gradle Plugin: 8.x
- Gradle: 8.x
- JDK: 17(推荐)
感谢百度地图 Flutter 插件的维护者。 也希望这份文档能帮助更多开发者 少踩坑、快上手。
如果你觉得本项目对你有帮助,欢迎 ⭐ Star 支持一下!






