问题情景:
我们有个老项目,云信的推送不管用了。经过测试,是云信的SDK版本太老了导致的。现在需要更新这个SDK。
但当时Podfile中存在问题,我不能直接依靠cocoapods更新。(这情况有点绕)
当初集成的时候,pod的代码片段是这样的
pod 'NIMSDK','5.6.0'
pod 'M80AttributedLabel'
pod 'CocoaLumberjack'
pod 'FMDB'
pod 'SSZipArchive'
对应的NIMSDK内容
其他的UI代码都是直接拖入项目中的。
所以我遇到了几个坎。
1、官方文档受挫(我没get到关键点)。
我首先去找了官方文档,里面介绍了 'NIMSDK_LITE' 和 ' NIMKit '
SDK开发集成
而未正确的找到该地址,这里面才是完整的'NIMSDK'
SDK开发集成
下面我介绍下
'NIMSDK_LITE' 、' NIMKit ' 、 ' NIMKit /Lite' 、'NIMSDK' 、'NIMKit/Full'
这几个库的区别和关系
'NIMSDK_LITE' 是' NIMKit ' 对应的SDK包,' NIMKit ' = 'NIMSDK_LITE' + UI界面+其他第三方依赖库。特性是只包含NIMSDK、没有音视频模块。
' NIMKit /Lite' 就是' NIMKit ',两者没差别
'NIMSDK' 是' NIMKit ' 对应的SDK包,' NIMKit ' = 'NIMSDK' + UI界面+其他第三方依赖库。特性是包含了NIMSDK和NIMAVChat,包含了即时通讯模块和音视频模块,是完整版本的网易云信。
2、framework文件关联变化
项目旧的NIMAVChat文件夹中内容为
而新的NIMAVChat文件夹中内容为
直接替换的话会因为缺少NMC、NMCBasicModuleFramework而发生报错
所以要把这个Framework加入项目中。
Targets->Build Phases->Copy Files,把需要的framework加入其中,编译。
如果报 was built for iOS + iOS Simulator. 这种错误,就去Build Settings中找Validate Workspace,改为YES
如果编译时代码出现错误,那么就去对应类中进行调整。常见的的应为SDK更新某些接口参数等发生了变化。
3、提交App Store时发生 unsupported architectures '[x86_64]'. 错误
原因是SDK中有x86_64架构。
还是以NMC.framework为例
拷贝一份,放到桌面
cd 到 NMC.framework 目录
查看包含什么架构 lipo -info NMC
(这里我偷懒用了NIMSDK的图)
移除 x86_64架构
lipo -remove x86_64 NMC -o NMC
再检查一下,是否还存在x86_64 架构
lipo -info NMC
如果没有x86_64架构了,就把新的framework拖入项目中,使用,重新提交App Store
另外还可以使用Run Script对 i386 和 x86_64 架构剥离二进制的
unsupported architectures '[x86_64]解决方法
至此,所有问题解决