今天去面试,结果是一家做sdk的公司,一下子断了思路,怎么封装成framework,不暴露源代码,回来了马上研究一波。
-
打开Xcode,新建工程。
不要选择“Application”,选择“Framework & Library”。选择第一个,然后Next。
- 创建功能类。
这里我创建一个继承自NSObject的SayHello类
#import <Foundation/Foundation.h>
@interface SayHello : NSObject
-(void)sayHello;
@end
-
更改参数
在TARGETS下选中工程,在Build Settings下更改几个参数。
- 增加armv7s
在Architectures下增加armv7s,并选中。将Build Active Architecture Only 设置为NO
- 设置Headers
将你要公开的头文件拖至Public下,要隐藏的放在Private或者Project下,当然,隐藏的头文件就无法再被引用。
然后需要在MySDK.h(必须是公开的,否则无法引用)中将你所有要公开的.h引入。
打包方法
选中模拟器,编译程序
选中测试机,编译程序
-
在finder中找到framework文件
-
找到找到下图中所示的Test文件,一个是Debug-iphoneos(真机)下的,一个是Debug-iphonesimulator(模拟器)下的。
-
通过终端命令将两个framework合为一个模拟器和真机都可使用的framework。
打开终端,手动输入画红线的lipo -create命令,然后绿线是iphoneos下frameworkTest的路径(找到iphoneos下frameworkTest的文件,拖拽进来),会自动有空格,紫线是simulator下frameworkTest的路径(同样找到simulator下frameworkTest的文件,拖拽进来),也会自动有空格,然后输入-output,然后敲空格,在引入一个新的路径(拖拽进一个新的路径),最后敲回车。这样就完成合并了。
注意:合并完成后会出现一个lipo格式的文件。
把它的文件名修改成MySDK,然后覆盖之前的MySDK,就得到了framework文件.