新版本flutter(3.32.7) android 端集成百度地图sdk_fluuter3.32.7
新版本flutter(3.32.7) android 端集成百度地图sdk
因为官方文档有很多地方没有说清楚,导致在适配过程中踩了很多坑,本文档基于已经实现集成的flutter安卓端应用编写。
官方文档地址:https://lbs.baidu.com/faq/api?title=flutter/loc/create-project/configure
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面,因其毫秒级热重载能够实现快速开发、具备超强原生性能以及富有表现力和灵活的UI,越来越受开发者喜爱,因此推出百度定位Flutter插件供广大开发者在开发Flutter Application的时候,可以集成本插件实现基本定位需求。
集成后地图长这样:
第一步:打开/创建一个flutter application工程
根据开发者的实际使用情况,打开一个已有的flutter application工程,或新建一个flutter application工程。 这里不再赘述。
第二步申请Android端AK
在百度地图开放平台控制台应用管理中创建Android端AK
如果之前没有认证过需要先登录,再认证开发者。
地址:https://lbs.baidu.com/apiconsole/key
创建这个需要两个东西,一个是packageName,在这获取:
另一个是 SHA1码,网上自行查找获取方法。
创建完后长这样:
第三步:添加依赖
pubspec.yaml
文件添加flutter依赖
# 百度地图 flutter_baidu_mapapi_base: ^3.9.5 flutter_baidu_mapapi_map: ^3.9.5 flutter_baidu_mapapi_utils: ^3.9.5 flutter_baidu_mapapi_search: ^3.9.5 permission_handler: ^12.0.1 # 动态申请权限插件 geolocator: ^14.0.2 # 获取当前定位插件
百度地图使用只需要前四个即可,后面是我定位还有获取权限使用。不需要的可以不加
dart run pub get
下载依赖
第四步:新建 MyApplication.kt
文件
在 MainActivity
同级目录下创建 MyApplication.kt
文件,内容如下:
package xxx // 这个package要和 MainActivity 里面的一致import com.baidu.mapapi.base.BmfMapApplicationclass MyApplication : BmfMapApplication() { override fun onCreate() { super.onCreate() }}
创建好了长这样:
第五步:调整 android AndroidManifest.xml
文件
调整 android/app/src/main/AndroidManifest.xml
文件,调整如下:
1、在 manifest
子节点新增如下内容,用于sdk的权限声明
<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" /> <uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" /> <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" /> <uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" /> <uses-permission android:name=\"android.permission.INTERNET\" /> <uses-permission android:name