前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MapManagerSDK集成记录

MapManagerSDK集成记录

作者头像
莫空9081
发布2023-10-16 09:56:34
1470
发布2023-10-16 09:56:34
举报
文章被收录于专栏:iOS 备忘录iOS 备忘录

背景

最近集成MapManagerSDK,遇到了几个问题这里记录一下:

问题一:

对接文档中提示的导入GMObjC算法SDK方式如下,导入后编译不通过,提示:"sm2_plaintext_size" Too many arguments to function call, expected 3, have 4

pod 'GMObjC','3.0.0'

问题二:

导入MapManager后,QMUI库或者其他第三方库,原本正常的,现在报错编译不通过。

问题三:

上面都解决了,编译成功,一启动就崩溃。

解决:

问题一"sm2_plaintext_size" Too many arguments to function call, expected 3, have 4的解决很简单,改为pod 'GMObjC',安装最新版即可。

问题二,查看后,发现报错的地方是属性或者方法中使用了debug或者release定义变量。但是为什么之前没有问题,导入MapManagerSDK后,就报错了呢?仔细排查后发现,在MapManagerSDK中MapService.h类,有如下代码:

代码语言:javascript
复制

#define debug @"debug"
#define release @"release"

定义的宏没有前缀区分,导致项目中其他使用到debug或release的地方都会报错。所以这里修改为如下代码,就可解决。Ps:封装第三方SDK时,对于定义的宏,如果必须要暴露外部使用的,一定要处理。

代码语言:javascript
复制

#define kDebugStr @"debug"
#define kReleaseStr @"release"

最后,问题三,上面的问题都解决后,编译成功,一运行就崩溃,提示有内存泄漏。排查了好久,刚开始以为是有什么依赖库没有导入;但是对比教程后,并没有少导入三方库。再后来以为是MapManager有问题,于是把MapManager移除,只留GMObjC发现还是一运行就崩溃。所以去查看GMObjCGithub,发现有这么一段话:

GMObjC relies on OpenSSL 1.1.1 and above. CocoaPods does not support different versions of the same static library. If you encounter OpenSSL conflicts with third-party libraries, for example, Baidu MapKit depends on a lower version of the OpenSSL static library, a dependency conflict will occur.

意思是,GMObjC依赖了OpenSSL,可能某些三方SDK也依赖了,会产生冲突,比如:百度地图SDK。恰好我的项目中就有百度地图,会不会是这个问题,虽然一般来说冲突的表现是,编译报错;但万一呢,于是把GMObjC从Pod方式改为使用Carthage导入,编译运行发现好了。。。。果然是和百度地图冲突了,好坑。。。

然后再把MapManager集成回来,记得问题二还要修改。。。。编译运行,就可以了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 解决:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档