百度地图flutter配置
百度
文档
https://lbsyun.baidu.com/faq/api?title=flutter/loc
控制台
https://lbsyun.baidu.com/apiconsole/center
Flutter插件
flutter_bmflocation: ^3.8.2
flutter_baidu_mapapi_base: ^3.9.5
flutter_baidu_mapapi_map: ^3.9.5
flutter_baidu_mapapi_search: ^3.9.5
flutter_baidu_mapapi_utils: ^3.9.5
permission_handler: ^12.0.1安卓
申请权限
<!-- 这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!-- 这个权限用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- 访问网络,网络定位需要上网 -->
<uses-permission android:name="android.permission.INTERNET"/>
<!-- 允许访问振动设备 -->
<uses-permission android:name="android.permission.VIBRATE"/>
<!-- 允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失 -->
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<!-- 允许程序读取或写入系统设置 -->
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<!-- android 9.0上使用前台服务,需要添加权限 -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<!-- 用于读取手机当前的状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 读取缓存数据 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />在src下MainActivity.kt同级目录下创建MainApplication.kt
package 你的包名
import com.baidu.mapapi.base.BmfMapApplication
class MyApplication : BmfMapApplication() {
override fun onCreate() {
super.onCreate()
}
}在AndroidManifest.xml
manifest标签下增加
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,POI检索等 -->
<uses-permission android:name="android.permission.INTERNET" />在application标签下增加
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="你的密钥" />在android/app/build.gradle.kts中增加
android {
...
defaultConfig {
...
// 👇 自定义 Application
manifestPlaceholders.put("applicationName", "com.kelifangtech.unityshield.MyApplication")
}
}配置你的应用签名android/app/build.gradle.kts 将签名文件防止在android目录下
android {
...
signingConfigs {
create("release") {
storeFile = file("../app.jks") // 签名文件(keystore/jks)的路径
storePassword = "xxx" // keystore 密码
keyAlias = "app" // keystore 内的 key 别名
keyPassword = "xxx" // key 的密码
}
}
buildTypes {
release {
signingConfig = signingConfigs.getByName("release")
// 添加防混淆配置
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
}
debug {
signingConfig = signingConfigs.getByName("release") // 确保开发和调试使用一致的签名,方便调试
}
}
}在android/app/proguard-rules.pro文件中写入
-keep class com.baidu.location.** {*;}参考文档 https://lbsyun.baidu.com/faq/api?title=android-locsdk/guide/addition-func/obfuscation