一,创建iOS的SDK有两种方式
1,以.a的方式.
2,以.framework的方式.
具体的.a和.framework的区别,先暂时不介绍,因为网上有N多这样的介绍,可以自行查阅.
二,这里建议创建以.framework的方式
.framework的格式创建,能为后期避免很多不必要的麻烦.不过创建.a的库也是可以的,有助于熟悉SDK的开发.
.framework的格式其实一个文件包,具体的谈不上是一个SDK的库,当然.framework包可以是静态,也可以是动态库.
.a是静态的库.
三,一般SDK的设计
1,一般SDK工程中会把图片和相关的xib文件放到一个bundle包中.
2,创建bundle的时候有些需要注意的内容,默认情况下,bundle的类型是macOS类型的,需要在TARGETS->Build Settings-> Supported Platforms 更改自己所需要的类型.当然还有Base SDK也要换成Lastest iOS(iOS11.4),如果你所需要的是iOS类型的话.
3,bundle包里存储的图片默认情况下是.tiff格式的图片,是你放进去的包括@2x, @3x自动合并成的.tiff格式.如果你需要使用单独的图片,不希望合并的图片,你可以做一下设置,在TARGETS下选中bundle名,然后->Build Settings->COMBINE_HIDPI_IMAGES 设置成NO即可.这里我是设置成NO的,因为我在项目中使用的图片会报错,找不到相应的图片.

四,SDK的国际化语言设置
在我的项目中,我只设计了三种语言类型,包括英语,简体汉字,繁体汉字,((当然,简体汉字和繁体汉字实际上是一种语言_)
1,我们可以现在我们个工程中找到PROJECT->Localizations中添加相应的三种类型的语言
Chinese(Simplified)
Chinese(Traditional)
English-Development Language
2,创建翻译语言库的String文件. 选择创建一个String文件,即字符串文件.然后右边的选择Localize...选择语言文件,把Chinese(Simplified), Chinese(Traditional), English-Development Language这三个语言都选上,其他的xib文件也是相同操作.

当给String文件选择完成Localize...文件后,就会在文件下方出现三个类型的文件库,这三个文件库就是要存储翻译的内容的.如图

然后UIView上的文字就要从这些语言库里取相应的文字.
具体的国际化语言设计,详情我会再写一篇文章单独介绍.
五,如果你的SDK工程引用了其他的第三方
比如你在自己的SDK里引用了Google和Facebook登第三方的登录SDK,那么你需要做的是,把这些库(实际上也是.framework和一些.bundle包等)单独放到一个文件里,这些库,最好不要放到你的包或者bundle里面.而是让使用者自己导入这些文件.配置也很简单.(包括SVProgressHUD第三方中的.bundle),如图,

六,.framework设置暴露的.h文件
暴露这个.h是为了让别人使用你的库,设置如下图,

在Headers->Public就是需要暴露的.h文件地方,其他的private是受保护的,Project是项目.m文件.
七,关于Enable Bitcode的设置
其实关于Enable Bitcode的功能,可以理解是支持新的CPU架构的设置,一般的在xcode7之前是默认关闭的,之后都默认打开.
而很多第三方库和框架都是没有设置bitcode的,就导致了我们在导入很多第三方库和框架的时候出现编译错误.

八,关于包的类型(动态,静态)的设置
在TERGETS中设置Build Settings->Mach-O Type进行设置.

网友评论