iOS编译推荐使用Xcode进行;Android编译推荐使用Android Stuido进行
- 下载源码后,使用
Android studio打开项目:File->Open->选择amap_map_fluttify/example. - 等待
Android Studio索引完毕,找到pubspec.yaml文件,点击Packages get,等待执行完毕 - 等到此 Flutter 项目中 Dart
代码不再报错了就能分别编译
iOS和Android了
- 使用
Android Studio打开Android项目:File->Open->选择amap_map_fluttify/example/android - 等待 Gradle 同步
同步过程中可能遇到各种问题,例如高德地图库中的各种类重复,此时Clean一下 Android
项目,然后最好再Invalidate Caches\Restart,基本就能解决了。 如果还不行,找到
Gradle
缓存文件夹,我自己是/Users/{name}/.gradle/caches/modules-2/files-2.1/,找到
console
中报错的类的包名,以高德为例,com.amap.api,进入此包名文件夹,检查是否有多个版本的缓存,多余的资源等,如果有就删除没有被引用的.
如果还是有问题,找到 flutter 的 pub-caches
文件夹,我自己是/Users/{name}/.pub-cache/hosted/pub.flutter-io.cn,在里面搜索无法通过编译的类/插件/packages的名称,会发现可能存在多个版本的。
amap_map_fluttify的fluttify引擎更新,amap_map_fluttify的版本抬升等,都会有较新的版本被同步下来,此时可以适当删除非当前所使用的版本包.
再次回到Android项目同步即可,一般都能通过编译并且能正常打包.
- 使用
Xcode打开ios项目 - 连接真机
- 左边视图切换到
Project navigator下,点击Runner(如果没有修改名称的话),点击TARGETS下的Runner,选择Signing & Capabilities,点击All,修改Bundle Identifier,然后重新编译
编译过程中可能会遇到一些错误,就目前来看这些错误带入Google都能得到解答(我不是 iOSer😖)
方案1. 注释掉ios工程的Podfile内的use_frameworks!.
方案2. 参考 手动添加bundle到工程, 把AMap.bundle加入到主工程中.
Swift工程集成时, 报The 'Pods-Runner' target has transitive dependencies that include statically linked binaries
方案1. 注释掉ios工程的Podfile内的use_frameworks!.
方案2. 重新创建项目, 并选择objc.
集成最新版本时, 报Because run depends on xxx_fluttify x.x.x which doesn't match any versions, version solving failed.
方案1: 在命令行运行flutter packages upgrade; flutter packages get, 而不是使用ide获取依赖.
方案2: 去掉国内镜像换成官方源, 即注释掉环境变量
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn方案3: 等待国内镜像同步最新版本.
使用真机调试.
看README提到的Info.plist配置.
- 检查申请的高德key是否正确
- 检查key是否配置在
<application>标签下, 有的人是配置到<activity>下了, 导致SDK没有取到值