Cocoapods多模块开发

简介: <p style="margin-top:0px; margin-bottom:10px; text-indent:28px; line-height:24px; color:rgb(51,51,51); font-family:'Helvetica Neue',Helvetica,Arial,'Hiragino Sans GB','Microsoft YaHei',微软雅黑; font-

阅读此文章之前你需要对cocoapods有基本的了解,这里给大家附上几篇文章:

一. 前话 安眠是从去年后半年开始投入到现在的产品当中,前期该款产品只有国内一条产品线,之前搭的框架一直顺顺畅畅也没什么问题,中途公司决定要拓展国际产品线,考虑到业务逻辑的差异化会趋于明显大家讨论后决定国内国际分开两个产品线进行开发,于是直接把当时的代码放到新的代码仓并且开始在这一套代码上面做改动(等我知道的时候其实内心是拒绝的)然后问题就来了。。

当前代码改成国际版也是需要时间的,导致后面国内版跟国际版中间差了几个版本,这种差异引出的问题是,对于通用的模块业务中存在的隐性bug,国内版在后期迭代中逐步修复,但国际版无论如何跟当前的国内版都无法同步,修复或者业务逻辑调整都需要从国内版的某一个或者甚至多个版本中进行选择性同步,这种做法简直丧尽天良毫不优雅!但是有什么办法呢?拆分模块。

二. 拆分模块准备工作 1.cocoa pods安装完毕

2.对podfile文件和podspec文件有大致了解,可参考本文一开始贴出来的附文

3.充分了解产品业务逻辑,找出通用部分以及通用部分的差异处,想不通的最好尝试着画业务逻辑图,这里安眠就不细说,以后有机会可以给大家分享一下

4.准备好新的工程git仓以及各模块的git仓

三. 拆

通过拆分之前的考量,安眠是这样决定的:每个工程都会有一些基类或工具类等在不同工程里都可以复用,把这些代码移植出来做为基类模块,这样以后开发新的产品线可以直接引入该基类模块,对于架构的前期准备工作会节省一些时间;针对安眠开发的产品而言,编辑器是产品里最重要也是可以独立开来的一个工具业务,所以这一块被做为编辑器模块移植出来。开动。

1.代码拆分,新建模块项目,把相关代码移植出来,编译通过

2.模块项目中创建podspec文件 参考CocoaPods官方文档-Podspec配置格式

  • 声明依赖第三方库
    s.dependency '*第三方*'
  • 声明包含代码路径
    sp.source_files = '*路径*/*.{h,m}'
  • 声明引用头文件
    sp.prefix_header_file = '*路径*'
  • 声明资源引用路径
    sp.resources    = '*路径*'
  • 整体podspec格式如下 ```Pod::Spec.new do |s| s.name = '*名字*' s.version = '1.0.0' s.license = 'MIT' s.requires_arc = true s.default_subspec = 'Core' s.ios.deployment_target = '7.0'

    s.dependency '*第三方*' s.dependency '*第三方*', '~> 3.7.3'

    s.subspec "Core" do |sp| sp.source_files = '*路径*/*.{h,m}' sp.prefix_header_file = '*路径*' sp.framework = '*系统库*' sp.resources = '*路径*' end end

3.编辑podfile文件

  • 本地引用:
    pod '*podspec的名字*', :path => '*路径*'

4.终端更新cocopods文件引用,这时项目应该大概能跑起来了,跑不起来再找具体问题挨个修复

pod update

四. 遇到的问题

[!] [Xcodeproj] Generated duplicate UUIDs:
解决办法:
终端:export COCOAPODS_DISABLE_DETERMINISTIC_UUIDS=YES

五. 收尾 安眠这里分享的是本地引入,本地引入成功后程序能够跑起来的话,就是完成了一了大半部分,这时可以把本地的模块工程上传到代码仓之后再慢慢修改优化 至于接下来你的主体工程是要通过本地引入还是通过代码仓地址引入就看你们需要喽~

六. 后话 前面有讲到多语言,早在最开始搭框架的时候其实有问过产品是否需要考虑多语言,产品坚决SAY NO,回想起来如果当时的架构坚决采用多语言的话之后就不至于全部重新整理,悲了个催喽。。所以,产品说的话不能全信啊。。

目录
相关文章
|
消息中间件 Java Apache
在华为鲲鹏OpenEuler20.03系统上安装RocketMQ
在华为鲲鹏OpenEuler20.03系统上安装RocketMQ
1446 0
在华为鲲鹏OpenEuler20.03系统上安装RocketMQ
|
API 计算机视觉
Qt实用技巧:自定义窗口标题栏
Qt实用技巧:自定义窗口标题栏
Qt实用技巧:自定义窗口标题栏
|
9月前
|
缓存 自然语言处理 供应链
1688 商品详情 API 与淘宝 / 速卖通同类接口差异对比:场景适配与选型建议
1688商品详情API与淘宝/速卖通同类接口差异对比及选型建议
|
10月前
|
存储 弹性计算 固态存储
阿里云服务器按量、包月及包年收费价格,云服务器最新活动价格参考
2025年租用阿里云服务器一年多少钱?不同时期阿里云服务器的租用价格不同,2核2G200M轻量应用云服务器特价38元1年起,经济型e实例2核2G3M带宽 40G ESSD Entry云盘特惠价99元1年,通用算力型u1实例2核4G5M带宽80G ESSD Entry云盘特惠价199元1年。2025年阿里云服务器租用价格表如下文所示。
2522 2
阿里云服务器按量、包月及包年收费价格,云服务器最新活动价格参考
|
8月前
|
存储 算法 BI
xxljob本地运行
本文介绍XXL-JOB分布式任务调度的使用教程。包含源码获取、服务端部署(数据库导入、配置修改、启动访问)、客户端运行与执行器注册,以及调度任务配置和路由策略详解。通过实际操作演示任务创建、参数设置、手动执行与日志查看,帮助开发者快速掌握XXL-JOB核心功能,实现定时任务的可视化管理和高效调度。(238字)
|
9月前
|
SQL 测试技术 Linux
从功能测试到自动化测试开发:软件测试工程师技能提升指南
覆盖Postman接口测试、Selenium自动化、JMeter性能测试等主流技术栈,从用例设计到CI/CD全流程实战。告别重复劳动,掌握自动化测试核心技能。包含Web/接口/APP测试全场景,配合Git和Linux实操,快速提升竞争力。
275 12
|
8月前
|
人工智能 数据可视化 安全
WhatsApp Business API 怎么用?阿里云 Chat App 常见问题(持续更新)
全面解答阿里云 Chat App 消息服务高频问题,涵盖 WhatsApp Business 账号注册、模板审核、API 集成、多通道发送、计费规则、AI 机器人配置、安全合规等。出海企业必备指南,助您高效触达全球 30 亿用户。
1438 0
|
11月前
|
机器学习/深度学习 人工智能 数据可视化
一文看懂决策引擎平台必备功能都有哪些
Together规则引擎是一款决策智能平台,旨在帮助企业高效管理、执行和部署半自动及全自动决策。它融合业务规则、数据分析、机器学习与流程自动化技术,支持多场景智能决策,助力企业提升运营效率与商业价值。
|
消息中间件 人工智能 监控
【云故事探索】NO.15:阿里云云原生加速鸣鸣很忙数字化
鸣鸣很忙集团作为中国最大休闲食品饮料连锁零售商,通过数字化与云原生技术实现快速扩张,4年完成其他企业10年的数字化进程。其采用阿里云全栈云原生方案,实现弹性扩容、智能补货、模块化开店等创新实践,支撑日均超430万交易数据稳定运行。未来将深化AI应用,推动供应链智能化与业务全面升级。