美文网首页
iOS—百度导航踩坑记

iOS—百度导航踩坑记

作者: Superman168 | 来源:发表于2025-01-01 14:45 被阅读0次

吐槽一下

最近需要切换地图,从高德切换到百度,上一次已经切换了地图,现在就剩导航没换了,这次就换了,结果发现导航跟上次的地图SDK还冲突,不匹配,用pod 无法兼容导入,只能手动导入导航和匹配的地图SDK,真垃圾,BD现在真的是跟不上节奏,文档写的简单的要死,集成后问题一大堆,真他么的一万个***在奔腾,这么大的一家公司连自己的核心产品都搞不定了,做不好。别说什么用户使用体验了,N年前被导航坑了两次,果断放弃,唾弃。

iOS 百度导航SDK导入报错

image.png

Undefined symbol: _CBCentralManagerOptionShowPowerAlertKey

Undefined symbol: OBJC_CLASS$_CBCentralManager

Linker command failed with exit code 1 (use -v to see invocation)

这个度娘说:

CBCentralManager 是 Core Bluetooth 框架(CoreBluetooth.framework)中的一个类,用于管理与蓝牙设备的连接。如果你在项目中使用了 CBCentralManager 但没有正确链接 Core Bluetooth 框架,

导入Core Bluetooth,问题确实没有了,但紧接着下一个问题

iOS 百度地图BMKMapManager初始化引擎崩溃

BOOL ret = [mapManager start:BaiduMapKey generalDelegate:self];
之前还没有问题,接入导航SDK后,直接运行崩溃,

image.png

Thread 1: EXC_BAD_ACCESS (code=1, address=0x64)

BOOL ret = [mapManager start:BaiduMapKey generalDelegate:self];

Thread 1: EXC_BAD_ACCESS (code=1, address=0x64)

有说让other linker flags加上-all_load,又报这个错误

383 duplicate symbols for architecture arm64
Linker command failed with exit code 1 (use -v to see invocation)
找了几次百度,开始说:

初始化引擎时崩溃怀疑是openssl库冲突导致的,百度地图SDK从6.3.0版本开始升级openssl到1.1版本以上,与1.0版本不兼容。需要升级项目中的openssl到1.1版本以上或者使用6.2.0版本的百度地图sdk。

中间来回折腾了几次,刚才让用pod

地图用pod报的错误更多了

image.png

地图和导航都用pod也报错

WX20250102-113416@2x.png WX20250102-113449@2x.png WX20250102-134131@2x.png

真不知道这个导航到底是要怎么才能用呢?真的是折磨人

到现在还没有解决。

重新换成导航Demo里面的SDK,报下面的错误:

Undefined symbol: OBJC_CLASS$_MPSImageLanczosScale
Linker command failed with exit code 1 (use -v to see invocation)
对了一下Demo里面少了一个库:

MetalPerformanceShaders.framework


image.png

但是文档上也没写,需要这个库,也不知道是要干啥?阿西吧,真是无语了。

后来说导航cocoapods集成只需集成BaiduNaviKit-All就可以,里面包含了基础地图;地图这边不需要集成MetalPerformanceShaders.framework;你的项目需要集成MetalPerformanceShaders.framework才能编译通过的话,应该是其他库需要引入;我感觉说的也不靠谱,拿事实说话

最终解决:

重新使用pod安装:

// 集成Navi包-与BaiduMapKit冲突,导航只需要BaiduNaviKit-All就可以了
pod 'BaiduNaviKit-All', '6.5.8'

如果还需要地图和工具类的话,自行选择:

# 可选组件
pod 'BaiduNaviKit-All/Map', '6.6.3'      # 集成地图Map包
pod 'BaiduNaviKit-All/Navi', '6.6.3'    # 集成Navi包
# pod 'BaiduNaviKit-All/WalkNavi', '6.6.3' # 集成WalkNavi包
pod 'BaiduNaviKit-All/TTS', '6.6.3'  # 集成TTS包
pod 'BaiduNaviKit-All/Search', '6.6.3'   # 集成地图Search包
pod 'BaiduNaviKit-All/Utils', '6.6.3'    # 集成地图Utils包

另外项目配置记得要仔细检查,
BMKBaseHTTPManager setRetryPolicyLogMessagesEnabled:
像这种类似的报错,按照文档上面的配置

终于算是跑起来没问题了,改点代码而已。

调起导航

-(void)makeSureNavi{
//    [self initNaviSDK];
    if (self.isRouteSuccess) {
        [BNaviService_UI showPage:BNaviUI_NormalNavi delegate:self extParams:@{BNaviUI_NormalNavi_TypeKey:@(BN_NaviTypeReal)}];
    } else {
        [self startRoutePlan];
    }
}

不能在用的地方再初始化导航,无效果,不走回调,需要提前在AppDelegate初始化才可以。

到此,百度导航的踩坑之路终于算是告一段落了。

相关文章

  • 好文章整理

    1、iOS自动化打包上传的踩坑记http://www.cocoachina.com/ios/20160624/16...

  • Android 百度地图SDK与导航SDK相关问题

    最近在项目中使用了百度地图SDK与导航,过程中踩了许多坑,在此记录。 当前Android百度SDK版本V5.2.0...

  • 各大导航URl API 集合

    百度导航IOS API 公交、驾车、导航、步行和骑行导航 调起iOS百度地图,展示指定导航模式下从起点到终点的路线...

  • IOS 踩坑记

    1. 标题栏 这句隐藏代码会对所有Controller 的标题栏产生影响,最好在调用以上隐藏代码时能够在cont...

  • React-Native调起iOS页面交互

    接触retact-native时间不长,踩坑中,遇到的问题是: RN页面无导航栏,而跳转的iOS原生页面需要显示导...

  • Android - 百度导航Demo,我们一起来踩坑!

    Kotlin - 百度导航Demo,我们一起来踩坑! 背景 项目开发中,我们总是离不开定位、地图这些功能,当然有时...

  • RN-地图导航

    调起百度网页地图路径导航 调起高德网页地图路径导航 iOS调起百度APP地图路径导航 iOS调起高德app地图路径...

  • Xcode10和iOS12踩坑

    Xcode10和iOS12踩坑

  • iOS10的适配

    每次出了新系统,必然要踩很多坑,这次来踩一踩iOS10的坑吧。 一、证书问题 直接选择Automatically ...

  • iOS 12 踩坑记

    1.常见的就不写了2.UIImage imageNamed: 读取不到图片 发生在第二次及以后的运行并且有个警告 ...

网友评论

      本文标题:iOS—百度导航踩坑记

      本文链接:https://www.haomeiwen.com/subject/ryvaejtx.html