前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络货运平台SDK初始化失败修改

网络货运平台SDK初始化失败修改

原创
作者头像
莫空9081
发布2024-03-16 10:35:53
1190
发布2024-03-16 10:35:53
举报
文章被收录于专栏:iOS 备忘录iOS 备忘录

网络货运平台SDK初始化失败修改

背景

之前集成了网络货运平台SDK,已经成功初始化,调试过。后来由于变动,这个功能搁置了,最近重新启用这个功能,发现初始化失败。报错如下:

code = 100018, fail = "公钥为空", message = "服务开启失败"。

如下图:

服务开启失败
服务开启失败

排查

排查一

由于报错公钥为空,所以首先排查初始化时传入的appIdappSecurityenterpriseSenderCode,确认这些值没有错误,且正常可用(安卓端可以初始化成功),然后排查初始化方法,确认方法调用没有错误。

然后陷入了疑惑,为什么SDK 集成成功,所有需要的值没有错误的情况下,SDK初始化失败,且提示公钥为空呢?

排查二

无奈,再次下载 QQ,联系网络货运平台 SDK 的技术支持,答复说:100018加密 pod可能有问题(这里建议联系的时候要有耐心,且要有悟性),距离我上次集成已经过去一年了,已经忘记了当时集成的时候都有哪些 Pod 库,技术支持指明了方向,余下的只能自己查了。再次查看集成文档发现,SDK 依赖了GMObjCGMOpenSSL两个库。且提供的文档里指定的版本如下图:

SDK 版本
SDK 版本

然后想起来,当时集成的时候按照SDK提供的写法集成,遇到了些问题。具体是什么问题,记不清了。

但是既然技术支持说是这个可能有问题,那只能改成SDK提供的写法,再次集成,运行,发现启动崩溃。噢,想起来了,当时集成的时候按照SDK的这种写法是启动崩溃了,所以就去除了依赖版本指定,改为下面的写法集成,但是当时都已经调试通过了,没问题啊。难道是最近一年中,GMObjC库版本被更新了,从而导致了初始化失败?

代码语言:Swift
复制
pod 'GMObjC'
pod 'GMOpenSSL'

排查三

查看一年前提交的代码,找到了当时集成时依赖的GMObjCGMOpenSSL的版本,噢,GMOpenSSL的版本确实不一样了,修改为之前的版本,再次集成,运行,发现还是初始化失败。

神奇了,理论上,当时就能调试通过的,集成和之前版本一致的库,为什么初始化失败呢?

排查四

是不是GMObjC比SDK 文档里指定的高导致的,只把GMObjC改为文档里写法集成,编译发现编译失败,因为某个方法的参数不一致。。。绝了。没办法,只能回到一开始,按照SDK文档写法集成,然后排查为什么会启动崩溃。搜索后发现是百度地图和GMObjC不兼容导致,pod 导入GMObjc 国密库后出现 百度地图mamager初始化crash ,然后我按照百度的说法去找GMObjc依赖openssl版本1.1.1以下的版本,MD,GMObjc依赖的 openssl1.1.1起步,就没有低于1.1.1的,坑爹的百度开发,甩的一手好锅。

排查五

在找GMObjC版本的过程中,发现了在GMObjC的文档里,提到了和百度 SDK 冲突的问题,提到了两种解决方式:

  • 升级三方 sdk 到openssl版本1.1.1以上的版本;这个方法放弃了,且不说百度有没有新版 SDK,升级后需要验证功能和修改兼容,时间成本太高。
  • GMObjC为动态库,改为动态库后,就不会有冲突了。

然后紧接着说到用Carthage集成GMObjC,这种方式集成的就是动态库,所以试试把Pod集成的GMObjC改为Carthage集成。按照GMObjC提供的方法,再加上SDK 里限制的版本,集成。

代码语言:ruby
复制
# Install carthage
brew update && brew install carthage
# Create Cartfile file and write it to github "muzipiao/GMObjC"
touch Cartfile && echo 'github "muzipiao/GMObjC ~> 3.0.0 "' >> Cartfile
# Pull and compile into a dynamic library, and you can find GMObjC.framework in Carthage/Build/iOS/ under the current command directory
carthage update --use-xcframeworks

然后再次编译运行,就可以看到初始化成功了。。。如下图:

服务开启成功
服务开启成功

参考

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 网络货运平台SDK初始化失败修改
    • 背景
      • 排查
        • 排查一
        • 排查二
      • 排查三
        • 排查四
          • 排查五
            • 参考
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档