Flutter集成高德地图问题.
记录下 Flutter 集成高德地图问题
在 Flutter 项目中集成高德地图插件时发现高德地图几年没有更新,插件与现有的 Flutter 开发环境已经脱节严重,在直接引入插件后会各种报错 , 就算解决了编译报错,可运行, 打包后又无法正常运行.
1.
首先我用的是 amap_flutter_map 3.0.0
定位插件也是这个版本 , 直接引入后,项目和插件的 gradle 版本肯定冲突很大 , 这里我将插件从本机的 Pub Cache 中复制到项目根目录 plugins/xx
下,然后集成
pubspec.yaml
1 | # 高德地图和定位 |
2.
然后修改这两个插件对应的 gradle-wrapper.properties
, 这里我将插件用的版本和项目版本进行了统一
1 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip |
然后对应 android 目录下的 build.gradle
修改
1. 增加 namespace
1 | android { |
location 插件对应的是
1 | android { |
同时删除对应 AndroidManifest.xml
下的 packageName
2. jcenter()
替换为 -> mavenCentral()
3. 修改 gradle 版本
这里也是和主项目版本进行了同步
1 | dependencies { |
4. compileSdkVersion 修改
与主项目同步,否则资源文件不一致,影响打包
1 | compileSdkVersion 35 |
但是提升后,Flutter这边将找不到 hashValues
方法 , 有很多类用到这个所以报错 .
这里我们将 amap_flutter_base-3.0.0
和上面一样也拉取到本地 , 然后将 map 插件的引用指向本地
1 | # amap_flutter_base: ^3.0.0 |
然后将以上三个插件的flutter环境进行修改提升 , 是为了使用 Object.hashAll([a, b, c])
这个方法
1 | environment: |
然后将所有打包所有报错的类中 hashValues
都换成 Object.hashAll(...)
,然后就可以正常运行及打包了
5. 其它
在使用插件的时候需要参考文档调用隐私授权, 比如地图这里是 , 否则地图将会白屏
1 | ///建议在APP首次启动或者进行弹窗进行隐私声明时,根据用户设置 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Halcyon Days!