首页 iOS组件化-业务组件拆分指南
文章
取消

iOS组件化-业务组件拆分指南

1. 背景

 随着公司的发展壮大,app的功能也不断增多,主工程的编译速度越来越慢,严重影响了开发效率,因此进行app不同功能的组件化改造变的非常有必要。

 组件化改造后各组件团队可以聚焦于组件内部的开发,依赖于登录模块即可实现独立调试。各业务组件之间通过路由或协议+依赖注入的方式进行通信。

2. 创建组件

 1. 在主工程创建一个SubModules的子文件夹,用于存放所有子组件,在组件测试通过前将一直在这个子文件夹中方便merge别人修改的代码,测试通过后可以挪到独立git仓库中。

 2. 在“终端”中进入SubModules文件夹,执行命令创建组件。

1
pod lib create ModuleA

 3. 在Podfile中通过添加以下内容引用组件:

1
    pod 'ModuleA', :path => '../SubModules/ModuleA'

 4. 在ModuleA的podspec中依赖登录组件:

1
s.dependency 'ModuleLogin'

 5. 执行命令将组件安装到主工程

1
pod install

3. 将主工程组件代码迁移到组件中。

 1. 图片迁移图解:

图1

 2. 国际化迁移图解:

图2

 3. public修改图解:

图3

 4. struct在修改为public后需要添加init方法:

Swift Quick Tip - Struct Memberwise Initializers are Internal Only

 5. @objc func, @objc var, @objc let, @objc class在swift中需要添加public:

 即使在同一个组件内调用,@objc声明的都需要添加public,否则将无法自动在编译时添加对应方法、类等到ModuleA-swift.h中供OC使用。

 6. 组件之间通过路由或协议+依赖注入去进行调用。

 7. 不停地编译然后解决编译错误,直到编译正常通过。

 8. 此时可以运行主工程去进行代码自测,主要关注组件功能相关的图片、资源、国际化文案、路由、埋点等是否正常。

4. 打包提测。

 1. 打包提测,期间如果移动的文件有修改内容,可以通过git merge操作正常merge代码到组件内。

 2. 测试通过后merge代码到主分支,然后将组件移动到独立仓库中,打tag,提交spec版本,修改Podifle引用为版本号引用。

1
2
    pod 'ModuleA', '1.0.0'
    

5. 有任何问题欢迎评论区留言进行探讨。

本文由作者按照 CC BY 4.0 进行授权

iOS StoreKit2新特性

-