创建属于你的SDK!
以下总结是我近一年来做sdk的小小心得,可能还有很多东西没有总结好,我会不断更新的!
创建Static Framework
1.如图创建Framework
2.选中Target,在Build Settings中搜索“Mach-O Type”, 改为“Static Library”静态的Framework已经创建好了,是不是很简单呀!不过还有几点需要注意:
(1)Architectures,中文名好像是架构,如果你想你的framework可以跑在所有的iPhone,那么你需要注意一下它下面的Architectures和Valid Architetures,都设置为 arm64 和 armv7即可。(2)你如你想你的framework可以同时用于真机和模拟器,那么你需要分别编译打包,然后合并,即所谓的通用framework,详情见 “制作通用的Framework ”
制作通用的Framework
1.首先将你的真机和模拟器打包的framework放在同一目录下,比如我的ZCPlatformSDK_iPhone.framework 和 ZCPlatformSDK_simulator.framework
2.ZCPlatformSDK是framewor下的可执行文件,你进入到你的framework,很容易发现它
3.制作通用的可执行文件lipo -create ZCPlatformSDK_iPhone.framework/ZCPlatformSDK ZCPlatformSDK_simulator.framework/ZCPlatformSDK -output ZCPlatformSDK
4.使用通用的ZCPlatformSDK替换掉真机framework下的可执行文件,此时的真机包,哦不,应该是通用framework啦!Tips:你知道Xcode中的“New run script phase”吗?你可以在它下面写一些脚本,非常神奇有效的!
到此,你的SDK就创建完毕了吗?当然没有,因为我们的sdk绝大部分都有一些资源,如果你不想你的framework中一团乱,就可以使用Bundl来管理,请继续往下看
创建Bundle
1.Xcode没有为iOS专门提供模板,所以需要借助OS X中的Bundle模板
2.添加资源
3.使用资源图片
#define Bundle_Image(name) [UIImage imageNamed:[NSString stringWithFormat:@"ZCPlatform.bundle/%@", name]]
这样以后,项目中直接使用Bundle_Image(@"imageName")即可,最好带着后缀,比如png或者jpg
Tips:
1.我提交App store的时候报错,说“Bundle中不能含有可执行文件”,于是我手动删除bundle的Plist文件中的Key “Executable file”这一行,圆满解决!
2.记住一定要修改bundle的Architectures中的Base sdk为“Latest iOS(**)”
我在使用自己的SDK遇到的一些问题
1.当你开开心心地把自己创建的framework加入到项目工程中,发现“Link error”,别急,我也遇到啦!这时,你需要添加framework相对你的项目路径到Framework Search Paths中