有的时候自己想封装一个控件,但是又不想别人在自己的基础上去改动,所以将自己代码编译成静态库,这里用Framework。闲来无事自己也试着尝试一下。
1: 首先创建一个项目
2:然后创建一个名叫Util 的工具类 ,然后声明一个方法 -(void)tool;
在.h中实现
Framework3.jpg
3:下面需要更改一下参数
在TARGETS下选中工程,在Build Settings下更改几个参数。
Framework5.jpg
4:增加armv7s
在Architectures下增加armv7s,并选中。将Build Active Architecture Only 设置为NO。
Framework6.jpg
5:设置Headers
Framework7.jpg
6:将你要公开的头文件拖至Public下,要隐藏的放在Private或者Project下,当然,隐藏的头文件就无法再被引用。
然后需要在Test.h(必须是公开的,否则无法引用)中将你所有要公开的.h引入。
Framework8.jpg
开始打包Framework
第一步:
选中模拟器,编译程序(等待编译成功)
第二步:
选中测试机,编译程序(等待编译成功)
第三步:
在finder中找到framework文件
Framework10.jpg
具体步骤,看下边的图:打开终端,手动输入lipo -create命令,然后是iphoneos下PublicModule的路径(找到iphoneos下PublicModule的文件,拖拽进来),会自动有空格,继续是simulator下PublicModule的路径(同样找到simulator下PublicModule的文件,拖拽进来),也会自动有空格,然后输入-output,然后敲空格,在引入一个新的路径(拖拽进一个新的路径),最后敲回车。这样就完成合并了。
Framework11.jpg上面这段命令就是把真机和模拟器的PublicModule合并成一个MyNewFrameworktest文件并存放在桌面上的New文件夹下。
Framework12.jpg
这里我们合并的时候会遇到一个error,这是啥原因还真不知道,但是会在和我们-output的文件夹路径并列的地方生成一个.lipo文件,这个.lipo文件我们下边会说到。
吧上面生成的new.lipo 文件 改为PublicModule名字,然后分别找到iphoneos下PublicModule的路径和simulator下PublicModule的路径 替换掉里面的PublicModule
第四步:
将修改后的framework拷贝出来保存,这就是我们最终制作的framework。
然后拿到项目中,引入头文件就可以调用了。
网友评论