制作SDK注意事项

开发SDK一般需要三个工程:

  1. 研发SDK工程;2.生成SDK工程;3.SDK使用demo工程
    SDK一般有两大优点:
    1.防止别人看到代码和实现;
    2.组件化,提高代码复用率(SDK也算一个功能组件,和pod导入的工程一样)。
    一般SDK只是实现部分特定功能。把整个app都做成sdk,那是设计的错误。首先完整app需要大量第三方库,这样也要把第三方库也转化包含到SDK中,使用SDK的app也需要大量第三方库,很难处理内外库的版本冲突问题。这样复杂的SDK,用户也很难使用。做SDK的人或许可以给予这个复杂SDK做出一个app,其它的人不懂内部实现,很难实现基于这个SDK开发出新的app。由于存在库版本冲突问题,所以建议SDK中尽量不用第三方库,SDK中可以有少量页面,实现特定高内聚功能为佳。如支付功能做成SDK最合适。
    SDK使用demo工程可以提供给外部使用者或开发测试人员,没有保密要求。开发人员大都是在研发SDK工程开发,只是最后向外提供SDK使用demo工程时才使用生成SDK工程产生.framework或.a库,拷贝到SDK使用demo工程,并更新资源库。
    研发工程主要是为了调试和打印日志,这样能大大提高开发和定位问题的效率。一般xcode定位问题通过:1.设断点调试;2.在工程中搜索页面上的文本内容(不是从后台获取的内容,如页面标题);3.打印从后台获取的数据(最好日志中有文件名,函数名,日志所在的行数);4.View UI Hierarchy(正常的页面都能看到图层和直接看到图层的类名,部分页面需要内存很大导致无法看到,也有少部分非标准页面无法看到图层的类名)。对外提供的头文件和使用的sdk的文件包含sdk内头文件一般采用绝对路径,研发工程是使用全局搜索路径。所以为了方便修改,需要提供sdk的日志开关宏(sdk内头文件定义)和头文件包含宏(对外开放的总头文件定义)。
研发SDK工程:
配置两个宏定义为1。

```c
#ifndef TEST_SDK
//生产环境为0,测试环境为1
#define TEST_SDK 1
#endif

配置为1可以打印日志

若SDK中打印的日志很少,可以用测试宏包含起来就可以了。若打印日志比较多建议使用宏定义重载打印日志函数,这样可以很方便的开关打印日志。

```c
#if TEST_SDK
#define NSLog(...) NSLog(__VA_ARGS__)
#else
#define NSLog(...)
#endif

由于研发工程对外头文件采用全局搜索的方式包含头文件,使用SDK的工程采用全路径包含头文件,这样尽量防止SDK内外冲突,所以要采用编译宏控制包含头文件的方式。

#ifndef DEV_SDK
//非研发SDK项目为0, 研发SDK项目为1
#define DEV_SDK 1
#endif



配置为1,解决研发工程头文件包含。

#if DEV_SDK
#import "FHFollowListUnitEntity.h"
#else
#import <TestSDK/FHFollowListUnitEntity.h>
#endif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值