iOS 私有云 IMKit 系列源码调试步骤

获取源码

  • 在企微群中向支持同事索要对应源码

  • 每个版本的 IMKit 源码有需要的话都会上传至 eportal 平台

  • 企微群中申请后可获取对应链接

项目集成

  • 由于原始项目中对 IMKit 系列 SDK 的依赖方式不同会导致集成源码的方式也略有不同,因此下面分两种场景进行说明:原始项目使用了 CocoaPods、原始项目未使用 CocoaPods

使用了 CocoaPods

  1. 由于引入的 IMKit 系列库都对 IMLib 有依赖,所以需要在原有 Podfile 中添加如下示例内容(示例中部分内容需要根据项目实际情况进行修改):
# 引入 IMKit 源码时需要添加如下配置
target 'RongIMKit' do
  # 此处需要是 Podfile 到最终引入的 RongIMKit.xcodeproj 的实际路径
  project 'RongIMKit/RongIMKit.xcodeproj'
  
  # 此处以 5.3.3.55 版本为例,实际版本号以项目需求为准
  pod 'RongCloudIM_Private', '5.3.3.55', :subspecs => ['IMLibCore', 'ChatRoom', 'CustomerService', 'Discussion', 'PublicService', 'IMLib']

end

# 引入 Sight 源码时需要添加如下配置
target 'RongSight' do
  # 此处需要是 Podfile 到最终引入的 RongIMKit.xcodeproj 的实际路径
  project 'RongSight/RongSight.xcodeproj'
  
  # 此处以 5.3.3.55 版本为例,实际版本号以项目需求为准
  pod 'RongCloudIM_Private', '5.3.3.55', :subspecs => ['IMLibCore', 'ChatRoom', 'CustomerService', 'Discussion', 'PublicService', 'Location', 'IMLib', 'IMKit', 'ContactCard']

end

# 引入其他 IMKit 系列中的源码时流程与上述两个类似,一般属于 IMKit 系列库中的其它子库所需依赖的库为全部 IMLib、IMKit 系列库(除当前库本身之外的所有库)
  1. 将 IMKit 或其它需要的源码下载后放到和需要调试的工程并列的文件夹中,类似截图中结构:

  1. 找到项目中的workspace文件,打开后将新引入的源码的xcodeproj(比如:RongIMKit.xcodeproj)文件拖入,一般使用 CocoaPods 集成的工程已经存在workspace,没有的话需要自行新建,最终结构参考下图:

  1. 点击上图中 RongIMKit 工程,进入工程配置中按如下截图删除指定内容:

  1. 上述删除的只是对应引用,在实体文件夹中还有对应的实体文件,需要找到并删除实体文件

  2. RongIMKit 的 Scheme 中可能还存在对上述脚本的配置,检查一下,如果有也需要进行删除:

  1. 源码中 BuildSettings->Architectures下编译当前架构的设置默认为 NO,需要结合实际工程进行修改,同上层工程保持一致即可

  1. 源码中BuildSettings->Search Paths下的Framework Search Paths默认查找了之前删除的路径,pod install 时会出现相关警告,按下图进行修改即可

  1. 其它 IMKit 系列项目,比如RongSightRongLocationKit等处理流程与上述 IMKit 一致,此处不再赘述

  2. 所有需要引入源码的项目都按上述流程处理完毕后,运行项目即可,后续所有对源码层的修改都会实时生效

  3. 新引入的项目中配置的after_build.sh脚本的作用是将真机运行和模拟器运行生成的framework进行架构合并并生成xcframework,运行后会在目录中生成binbin_tmp等文件(这些运行后生成的临时文件不需要在仓库中进行跟踪维护),此处没有删除是为了如果有其它项目需要直接引入定制过的xcframework有地方获取,如不需要直接删除相关脚本及临时文件夹即可,删除方式和第四步中删除before_build一致,只不过此脚本在最下方配置

未使用 CocoaPods

  • 如果项目中之前未使用 CocoaPods,所有 SDK 都是手动引入的话建议按照上述 CocoaPods 集成的方式进行修改,使用 CocoaPods 进行维护会更加方便一些,一些特殊原因只能手动引入参考下述流程
  1. 将 IMKit 或其它需要的源码下载后放到和需要调试的工程并列的文件夹中,类似截图中结构:

  1. 新建workspace文件,如项目中已经存在直接使用存在的即可,打开后将新引入的源码的xcodeproj(比如:RongIMKit.xcodeproj)文件拖入,最终结构参考下图:

  1. 点击上图中 RongIMKit 工程,进入工程配置中按如下截图进行操作:

  1. 上述删除或更新的只是对应引用,在实体文件夹中还有对应的实体文件,需要找到并删除实体文件

  2. RongIMKit 的 Scheme 中可能还存在对上述脚本的配置,检查一下,如果有也需要进行删除:

  1. 源码中 BuildSettings->Architectures下编译当前架构的设置默认为 NO,需要结合实际工程进行修改,同上层工程保持一致即可

  1. 其它 IMKit 系列项目,比如RongSightRongLocationKit等处理流程与上述 IMKit 一致,此处不再赘述

  2. 所有需要引入源码的项目都按上述流程处理完毕后,运行项目即可,后续所有对源码层的修改都会实时生效

  3. 新引入的项目中配置的after_build.sh脚本的作用是将真机运行和模拟器运行生成的framework进行架构合并并生成xcframework,运行后会在目录中生成binbin_tmp等文件(这些运行后生成的临时文件不需要在仓库中进行跟踪维护),此处没有删除是为了如果有其它项目需要直接引入定制过的xcframework有地方获取,如不需要直接删除相关脚本及临时文件夹即可,删除方式和第四步中删除before_build一致,只不过此脚本在最下方配置