【重要】SDK开发中使用三方framework的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【重要】SDK开发中使用三方framework的方法相关的知识,希望对你有一定的参考价值。

参考技术A 以 chaoxiPay.framework 和 chaoxiPayRes.bundle 库为例子:

补充:如果SDK里要导入的是.a的静态库,如:chaoxilib.a,只需要在SDK的targets导入就行,Demo的targets里不用导入。

iOS XCode7制作.Framework动态库和.a静态库的总结

一、开发SDK时的支持情况:

OC语言制作动态库时,支持iOS8+;OC语言制作静态库,支持iOS7+。

Swift语言制作动态库时,支持iOS8+;Swift不支持静态库

 

对于SDK来说,支持情况非常重要。像我就是一开始就被坑了,我使用Swift开发动态库的方式提供SDK,所以只能支持到iOS8+。但这意味着所有使用我的SDK的客户的APP都必须到iOS8+,这就坑爹了。

所以假如需要支持iOS7的话,只有使用OC语言开发.a静态库的一条路。

 

二、第三方库的使用:

原本SDK已经作为别人APP工程里的第三方了,假如SDK中需要引用AFNetworking类似的三方库。

对于动态库:

(1)外部引用:第三方库不打进去,放在外部,比如cocoapods的方式。别人编译的时候需要在他的环境里有该第三方依赖库。当提供给别人SDK的时候,你还需要给别人一个podfile。

(2)内部:直接引入源码,由于swift含有命名空间,所以不会有冲突。

 

对于静态库:

1.静态库无法再包含其他的.a静态库。只能把源码放进去一起编译。

2.静态库无法把第三方放在外部,否则就不叫“静态”了。只能打包进SDK内部,并修改类名,防止外部冲突。

 

三、动态库开发:

开发动态库时,只要通过创建工程时选择Cocoa Touch Framework就可以了,可以选择OC或Swift语言开发。

新建完SDK工程后,再新建一个APP的工程作为demo,把之前的工程拖进来,并把sdk生成的product加入app工程的link library,通过工程组合的方式进行开发,调试非常方便

 1.

2.

3.

 

开发动态库看似简单,但还是会遇到一些棘手的问题,比如OC开发SDK时,swift工程如何调用(或是Swift开发的动态库,让OC支持),资源文件找不到等,环境配置等。

一些问题我都总结在这篇文章内

http://www.cnblogs.com/rayshen/p/5330512.html

 

四、静态库开发

(1)开发静态库的简易过程:

开发静态库时(只能用OC语言开发了),只要通过创建工程时选择Cocoa Touch Static Library

和之前一样,我们最好再新建一个APP的工程做Demo,方便调试自己的SDK

 

 

2.创建新的APP工程,并拖入静态库的SDK工程

 

3.加入.a的索引

 

(2)开发静态库时的资源管理:

 

1.选择SDK的工程,点击target中的+,然后选择OSX,增加资源Bundle的target(这点真的非常傻逼,iOS居然没有建立Bundle的选项,笑了)

 

2.修改Bundle的target为 iOS

3.假如我们新建一个controller,带XIB的,选择bundle->build phases,加入xib,或者image等资源文件

 

然后在新的APP工程中,把.h,.a,.bundle一起提供,就可以使用了。

 

以上是关于【重要】SDK开发中使用三方framework的方法的主要内容,如果未能解决你的问题,请参考以下文章

IOS SDK开发详解(.framework、.a、Bundle资源文件创建、SDK中使用其他SDK等)

转载-iOS SDK开发

CocoaPods的使用 安装

别让引入的 SDK 和第三方库导致您应用被下架!

iOS XCode7制作.Framework动态库和.a静态库的总结

iOS SDK开发之 .framework静态库