最近升级了xcode10后,利用cocopods更新第三方库,莫名百度地图报错:BaiduMapAPI_Location/BMKLocationComponent.h' file not found。
仔细研究了一下百度地图开放平台:
之所以BaiduMapAPI_Location库找不到的原因是:百度地图把定位功能划分到另外一个第三方库BMKLocationKit里面去了,新的BaiduMapKit库里面没有location项了。解决方案如下:
1.除了集成’BaiduMapKit‘以外,还需要集成”BMKLocationKit“框架,重新修改代码,重新集成新版本定位;
2.找回老版本的(同时包含地图和定位功能)的”BaiduMapKit“低版本库,不用修改代码;
个人建议:我的项目只用到了基本的地图和定位功能以及少量的小红点功能,不是很想修改代码,只想正常编译运行,这种情况我选择方案2;至于项目里大批量运用到地图这块,还是建议,根据开发者文档,重新集成BMKLocationKit才是长远之计;
方案1这里不做细讲,具体参考:百度地图开发者iOS文档中心;
方案2爬坑流程:1.打开你的Podfile文件,直接删除BaiduMapKit项目,重新pod init ,这样就可以先删除你的最新版本的MapKit;
2.重新打开Podfile文件,重新添加: pod 'BaiduMapKit','~>2.10.2' #百度地图SDK,再重新pod init一下,重新安装你的旧版本2.10.2的BaiduMapKit,安装完成后,你会看到如下:
此时记得command+shift+k,clean下xcode,新的xcode10在缓存有点坑,还是清理下,再重新编译,找不到的文件没问题了,此时,又有新问题如下:
error:Multiple commands produce ‘xxxx/xxx.app’
1)Target ‘xx’ has create directory command with output ‘xxxxxxx'
2)That command depends on command in Target ‘xxx’:scrpit phase"[CP] Copy Pods Resources"
看了有的博客说是因为pod版本问题,个人认为:此处跟pod版本无关,只是xcode10的编译机制发生了改变,CocoaPods会有Script将用到的资源copy到专案下,这里xcode10不需要这么多此一举,解决方案如下:
删除-clean-build -> build success!!!!