升级XCode10后'BaiduMapAPI_Location/BMKLocationComponent.h' file not found

最近升级了xcode10后,利用cocopods更新第三方库,莫名百度地图报错:BaiduMapAPI_Location/BMKLocationComponent.h' file not found。

仔细研究了一下百度地图开放平台:


5442976-fc3ff18084c95f46.png
新版本除了MapKit还需要集成定位BMKLocationKit框架!!!

之所以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,安装完成后,你会看到如下:


5442976-941c15ab751c22ad.png
2.10.2版本的location库

此时记得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不需要这么多此一举,解决方案如下

5442976-84da6e4e1fb68ed7.png
删除outputFiles下不需要的配置

删除-clean-build -> build success!!!!

猜你喜欢

转载自blog.csdn.net/weixin_33910137/article/details/86832770