在我们导入依赖的时候,会在android/ios 平台下添加更多的依赖,如果不去AS/Xcode下面跑一下,下载需要的依赖,flutter环境下不会下载这些依赖(按理应该会的...).不这样跑一下,会报出各种环境问题,但是并不是哪些问题!!!!
与此同时Android/Ios 的原生环境(如android 的 kotlin 版本 都是需要更正的),通常引用第三方,可能有问题,
问题引入
最近开始学习Flutter,寻思着把手上的项目用Flutter写写,一路磕磕绊绊,终于来到了引用高德地图的节点:
amap依赖地址,此时的版本如下所示

问题1
引入'amap_base'后给我如下提示
w: /Users/Lee/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.2.71/ba18ca1aa0e40eb6f1865b324af2f4cbb691c1ec/kotlin-stdlib-common-1.2.71.jar:
Runtime JAR file has version 1.2 which is older than required for API version 1.3
我在这里卡住了,在Flutter的工程目录下没有这个文件(直接修改文件,没有AS的提示挺麻烦的)

用Android Studio打开根目录的android项目
方法1: Android Studio直接打开这个文件夹
方法2: 在flutter工程下打开'android'下的任意文件,就会有如下提示:



问题1的解决 修改kotlin的版本到当前最新 1.3.41
与此同时说明:
1.此时AS依赖的是外部文件,存放在../flutter/.pub-cache/hosted/下
2.我们依赖后下来了的就是源码 --> 意味着我们可以修改 --> 我们可以学着自己写依赖 (以为很多时候flutter第三方不全,此时的 'amap_base' 也并非高德官方的,还没有查询天气的接口,实际上 'amap_base' 是依赖了原生的search的,我们需要的自己写上)
implementation 'com.amap.api:navi-3dmap:6.5.0_3dmap6.5.0'
implementation 'com.amap.api:search:6.5.0.1'
implementation 'com.amap.api:location:4.4.0'
问题2
你以为就完了??? 不是的..... -> 第三方的库还有可能有问题

public interface MethodCallHandler {
@UiThread
void onMethodCall(@NonNull MethodCall var1, @NonNull MethodChannel.Result var2);
}
而第三方实现时允许为空---->得去掉'?'
object OpenOfflineManager : MapMethodHandler {
override fun with(map: AMap): MapMethodHandler {
return this
}
override fun onMethodCall(p0: MethodCall, p1: MethodChannel.Result) {
AMapBasePlugin.registrar.activity().startActivity(
Intent(AMapBasePlugin.registrar.activity(),
OfflineMapActivity::class.java)
)
}
}
最后我没有使用 这个地图库,因为后面flutter上运行会闪退,在android上运行不会有问题
我想我本该直面惨淡的,怎么抓异常,并去解决问题,但是我还是选择了回避(>.<),.过段时间在来搞这个问题
flutter_amap: ^0.0.1
amap_location: ^0.2.0