ios 自己创建的动态frameworks 怎么发布_iOS组件化开发实施一期文档

64cd6577645817438a80c805bb53a6e8.gif

570f24aca1be1e97b81015c8a1b9b12f.png

组件化

一、目标


梳理项目工程结构,抽离基础层和中间层

  1. 保证所有第三方库管理、基础库从主工程抽出,可独立编译,减少编译时间。

  2. 梳理提供的功能和使用方法,便于各业务模块的调用。

  3. 让团队成员更熟悉公司项目,减少重复造轮子,提高开发效率。

二、实施计划


1、实施说明

  1. 专门建立一个组件化的分支组,组件化的主分支和多个改动分支。组件化的主分支,以周为单位,进行review和合并代码使用,并标记tag和提交测试,以便改动可以随版本发布,建议专人负责管控。

  2. 每次都小步改动和改动单一性(如调整文件路径、修改工程名称、改动了Pods等单独进行),并及时编译,验证改动是否正确,成功后提交。

  3. 尽量在不改动代码逻辑的情况下做调整。较大的改动,如修改了逻辑、移动了某个库到其他工程、改动了Pods、删除了某些文件,可以做些记录或提交代码时做详细的说明,以便问题复查。

  4. 移动文件时,注意文件环境MRC/ARC的变化,如需要请尽量改动为ARC。

2、项目工程定义

初步调整工程目录结构如下:

基础层和中间层

Pods: 仅Pods管理的第三方库。DDManualThirdSDKs: Pods不能管理的第三方库,对第三方进行必要的封装,集中做成私有库的形式,再交给Pods管理。DDDevelopLib: 自行封装的私有库,如系统类分类、数据处理类、通用UI组件、宏定义和常量定义等。做成私有库,交给Pods管理。

业务组件层

DDEngine: 后续会把模型规整到具体模块中,部分文件需要抽离到基础层或中间层,其他暂时保持不变,后续抽离封装网络库。DDMIX_UI: 暂时保留,属于三期。ddDemo: 将其中的第三方库、UILib、分类等,下沉到基础层或中间层外,暂时保持不变。

基础层中间层工程通用的目录结构

以DDManualThirdSDKs为例说明,目录结构如下:

DDManualThirdSDKs:工程代码

CoreCode:核心代码Resources:需要的资源文件。SupportingFiles:.pch, .plist等。

Frameworks:依赖的系统库。Products:编译好的.a文件。Pods:pods配置文件。

一二级目录是标准配置,三、四、五根据需要自行配置。

调整要点

  1. 每个工程下都需要建立一个README.md 文件,写明工程使用说明,后续交由指定人员,轮流负责管理。

  2. 每个工程除了依赖更底层库外,都能独立编译,并无警告⚠️,第三库可以采用忽略的形式隐藏,自行编写的代码必须无警告。

  3. 文件路径使用真实路径,项目目录和真实路径一致,除了工程级的Frameworks、Products、Pods除外,禁止使用虚拟路径。

参考扩展文档1、iOS Workspace 多项目管理2、iOS多个Target配置详情操作3、iOS工程目录结构的思考4、CocoaPods进阶:详解私有库制作5、iOS工程文件整理

3、整理三方库统一Pods管理

把项目中散落的第三方库都规整到Pods和DDManualThirdSDKs工程中,优先Pods管理。散落的第三方库有:iflyMSC、libSunFlower、DDReader、YYText、MiaoZhen、NTalkerUIKitSDK、TalkingData、VoiceConvert、HPGrowingTextView(7年未维护了,局部使用,可以内化为自行代码)等。

DDManualThirdSDKs工程 CoreCode文件夹下目录结构:

CoreCode:核心代码

YiGuanFangZhou:YiGuanFangZhou 代码区。

PackageLayer:YiGuanFangZhou 封装(根据需要封装)。SDKCode:YiGuanFangZhou SDK代码。

QQSDK:QQSDK代码。

PackageLayer:QQSDK 封装(根据需要封装)。SDKCode:QQSDK代码。

把pod管理第三方库有自行封装的代码集中到一个文件下参考目录结构:

DDPodSDKsPackage:工程代码

AFNetworkingPackage:AFNetworking 封装代码(根据需要封装)。SDWebImagePackage:SDWebImage 封装代码。WechatSDKPackage:DDWeChatPay、WeixinService等

调整要点

  1. DDManualThirdSDKs工程下,创建DDManualThirdSDKsREADME.md,做好第三方库记录和说明,再将DDManualThirdSDKs打包成一个私有库,用Pods管理。

  2. 移除不使用的旧库,有重大功能变更的库,给出升级或替换或保持现状的建议。

  3. 把所有使用的三方库,梳理进一个在线表格。三方库的使用版本、最高版本、主要功能、哪些模块使用(全部、多个模块、单独模块)、依赖库、备注项,后续有指定人员维护。

4、梳理DDDevelopLib私有库

自行封装的私有库,作为整个工程的基础库,不与具体的业务耦合,如系统类分类、数据处理类、通用UI组件、宏定义和常量定义等。做成私有库,交给Pods管理。如ddDemo中的VerifyUpdate、UILib、DDAppkit、Common、Categorys、Function、DDMonkey等。

CoreCode文件夹主要文件分类如下:

CoreCode:核心代码

DDCategorys:系统分类。DDData:通用的数据。DDUILib:通用的UI库,如评分星星,轮播图,大图查看器等。DDConfigs:宏定义和常量定义项目,如字体适配,颜色值等。DDFunctionLib:绝对单纯的数据处理工具类,静态方法,非空判断、日期字符串和日期对象的转换等。

调整要点

  1. 新增DDDevelopLibREADME.md,管理库能提供的功能,使用说明,修改说明,后续有指定人员维护。

  2. 主要移动文件夹,尽量少的改动逻辑,若项目中有存在相同逻辑或需要抽取代码时,请做好修改记录和review代码。

5、Resources文件整理

初步整理Resources资源文件,后期会根据资源情况再统一整理图片资源,注意资源文件的加载路径的变化后,保证资源文件能正常加载。

参考目录结构如下:

Images.xcassets:图片系统管理器DDFonts:字体库gif:动图管理Data:数据资源文件

plist:plist文件json:json文件

调整要点

  1. 将Other Sources虚拟文件夹中的plist整理到Resources中。

  2. 将项目中使用的图片、Plist文件、音视频文件,暂时归整到Resources文件下。

6、SupportingFiles文件整理

创建真实目录SupportingFiles,文件路径有所变化,请在项目配置中调整,存放系统支持文件如下:

main.mddDemo-Info.plistddDemo_Prefix.pchDDDebug.entitlements

三、工期评估


参照实施文档进行,初步评估工期为14天,后续遇到问题,及时沟通调整。

6b048d253fa458baa8e182f702931745.png

参考工期

四、其他细节


  1. 开发人员的协调问题。

  2. 代码review管控。

  3. 提测,上线进度把控。

作者: 择势勤 链接: https://www.jianshu.com/p/599e97b63af7

本公众号转载内容已尽可能注明出处,如未能核实来源或转发内容图片有权利瑕疵的,请及时联系本公众号进行修改或删除【联系方式QQ : 3442093904  邮箱:support@cocoachina.com】。文章内容为作者独立观点,不代表本公众号立场。版权归原作者所有,如申请授权请联系作者,因文章侵权本公众号不承担任何法律及连带责任。

---END---

6855330a383a25fb6ca9d3d8ac0f1deb.png

cd3158f9870e10fd6e43fa1351778ca1.png精彩推荐 iOS组件化方案对比 从0到1实现一个模块间通信的服务组件

GitHub优秀三方库推荐及日常知识积累分享

598b32d9afa58863eab5e2ada5c5c916.png在看点这里 6deffdcb67d69eec1e2546d9e84380cd.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值