iOS SDK开发二三事

引子

  • 无意间,看到5年前,Android大佬子勰写的,关于SDK开发方面的文章(SDK那些事(总纲)), 不由得唤起自己开发iOS SDK的回忆;本文简单总结下自己开发SDK方面的经验;

  • SDK(Software Development Kit)可以最大程度实现代码和功能的复用,为业务开发提供一个非常好的支持;这里的业务可以是内部业务,也可以是外部业务

  • 简单来说,所谓SDK开发,本质是服务提供;不仅需要写好代码,还要完善代码之外的事情,任重道远

一、准备

1、清晰解决的问题和要求

​ 一般而言,新起一个SDK必然有其深刻的业务背景;研发同学对SDK要解决的问题和SDK的特殊要求,了解地越详细越好;常见的要求有:

  • 禁止采集用户信息【安全方面】
  • 必须对SDK使用者鉴权【安全方面】
  • 核心代码必须混淆【安全方面】
  • 不可以有调试日志,不可以监控上报【安全方面】
  • 持久化的敏感数据要加密;【安全方面】
  • SDK大小不可以超过XXKB:【其他】
2、选择合适的开发语言
  • 大多数情况下,选择Objective-C开发就对了,不仅能接入Swift开发的项目,还能接入Objective-C开发的项目;
  • 当然并非绝对,具体根据业务情况决定;
3、选择合适的技术方案
  • 网络请求使用第三方框架,还是直接利用iOS的API;
  • JSON转Model、Model序列化和反序列选择哪个第三方框架(性能,框架大小方面考虑)
  • 持久化存储选择SQLite、NSUserDefaults 或是 Keychain;
  • UI布局使用 frame、autolayout(Masonry框架) or flexbox(YogaKit框架)
  • MVVM or MVC 架构模式选择;
4、确立基本代码规范

​ SDK可能长期维护 或 多人开发,确立好基本代码规范,能保障SDK的代码质量;这些规范本质上是一些共识和约束,如:

  • 命名规范:属性、变量、方法等均采用小写字母开头的驼峰命名;类名使用大写字母开头的驼峰命名
  • 注释要求:对外暴露的类、方便和变量要有注释,解释其功能;关键代码要有注释;
  • 简洁要求:无用的代码选择直接删除,不要注释;无用的资源及时清除;

二、SDK的主体设计

1、多模块设计
  • SDK中可能包含不同的模块功能,而不同的业务方需要的模块可能不同;对SDK中模块进行拆分,保证业务方尽可能引入的是他们需要的代码;

  • 一般使用Cocoapods创建Pod库的,在podspec中定义好模块,为每个模块清晰定义好包含的代码和资源,以及外部依赖(静态库 or 静态库);这样可以将模块之间实现代码和资源的物理隔离;

  • 关于Cocoapods创建Pod库更多细节可以参考Cocoapods使用小记,至于是公有Pod还是私有Pod根据实际情况定;

    创建公有Pod库或者私有Pod库原理是一样的;不一样的是:两者的版本索引查询方式不一样,公有库的podspec由CocoaPods/Specs管理,而内部私有使用的pod库需要公司内部建立一个仓库来管理podspec

2、SDK目录层级
  • Pod库中,代码放在Classes目录下,图片资源放在Assets目录下;

  • Classes目录按模块划分第一级目录,如AModuleBModuleCModule等,其中每个模块Code再划分二级目录,如ModuleService、View、Controller、Model、API等;具体的代码文件存放在这些二级目录中;其中ModuleService中代码是要对外暴露的,其他预期外部不可见;

  • 资源方面,也按模块细节;主要的资源是图片资源,在Assets目录下新加AModule.xcassetsBModule.xcassetsCModule.xcassets等;

<
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值