集成百度导航的那些坑——iOS

最近给一个旧的项目集成导航功能,在看过各个网站的集成指南和SDK文档之后,感觉非常简单。emmm........然后被坑得一脸血,下面就来讲讲可能碰到的那些主要坑点。
1.在项目已经使用了百度地图SDK(据说AFN/SDWebImage的部分版本也有)之后,我开始使用pod进行导入SDK,没想到,这第一步就错了,因为BaiduMapKit的SDK内和BaiduNavi使用了同样的库,叫做libcrypto.a和libssl.a,于是导致Pod导入失败,也有说是Pod1.3.1的BUG,总之无法导入,只能选择手动导入。
2.在删除掉重复的.a文件之后,我开始手动导入BaiduNavi,并在Appdelegate中导入,一切都看起来很正常,结果在我注册key的时候,问题出现了,而且这个问题非常严重,报错信息大致是:

clang: error: linker command failed with exit code 1 (use -v to see     invocation),

在使用各种搜索引擎尝试了多种手段解决无果后,我选择了在百度导航SDK的论坛内发帖,但是并没有人鸟我。。。非常尴尬。然后我注意到了置顶帖http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=130878&extra=page%3D1 内有这样一句话:
新版导航SDK可以和地图SDK v3.3.2同时使用,地图SDK的导入不要使用pod,直接从官网下载库拖到工程里,且需要确保导航的库(libbaiduNaviSDK.a)链接顺序在地图相关库的下方

于是我简直是一脸懵逼,原来你百度家的地图和导航SDK除了这样都无法共存的呀!摔!!
3.然后我开始找3.3.2版本的地图SDK。。官网竟然没有??are you fuck kiding me??? pod也只能下到3.3.4版本的百度地图SDK
于是我机智的修改了3.4.2版本SDK的下载链接 ,才下载到3.3.2的地图SDK,然后按照置顶帖所示,一步步配置好,在配置完后一定要记得:修改一个任意文件的后缀为.mm
4.最后在按照SDK附带的demo一步步配置好导航之后,由于我是在一个present的界面里面调用,报错:Warning: Attempt to present < UINavigationController: 0x163852800 >,这时的解决方法是在调用的文件内写上

-(id)naviPresentedViewController {
    return self;
}

然后模拟器上的导航就跑起来了,我满心欢喜以为终于结束了这段代码,于是拿出手机开始真机调试,然后一脸懵逼的盯着我那空白的地图界面...
emmmm....在打好断点,仔细查看了报错信息之后,发现了这样一条报错信息

地图所需资源文件不完整,请根据开发指南正确添加mapapi.bundle文件处理

我在确认过我的framwork里面有这玩意儿之后,只好再次使用搜索引擎

在下载的BaiduMap_IOSSDK_v3.2.2_All.zip文件包中 解压后在文件夹的BaiduMapAPI_Map.framework  /  Resources  路径下 就会发现mapapi.bundle 文件

重新拖入项目工程内,终于才。。。集成成功

我猜... 百度做导航的工程师大大和做地图的大佬们是不是有什么过节啊?

你可能感兴趣的:(集成百度导航的那些坑——iOS)