1.通过Xcode创建一个Cocoa Touch Framework 工程!

2.修改项目中编译设置项
1.TARGETS->General Display Name 设置名字
2.TARGETS->Version 设置版本号
3.TARGETS->Deployment Target 设置支持最低的iOS版本
4.TARGETS->Build Setting->Dead Code Stripping 设置为NO
5.TARGETS->Build Setting->Link With Standard Libraries 设置为NO
6.TARGETS->Build Setting->Mach-O Type 设置为 Static Library
7.TARGETS->Build Setting->Architectures 中添加 armv7s


3.在工程中添加文件

4 设置提供外部调用的头文件
(直接将想公开的头文件 从project 拖到 pubic)

5.填写需要公开的文件

6.使用模拟器和手机分别连接运行一次 然后将生产的两个版本的framework合成一个!
lipo -create path1 path2 -output path3
eg
Mini-WY:~ dlwx$ lipo -create /Users/dlwx/Library/Developer/Xcode/DerivedData/MyLib-hcajnpxuyurqmharmwvwiyisfcwu/Build/Products/Debug-iphonesimulator/MyLib.framework/MyLib
/Users/dlwx/Library/Developer/Xcode/DerivedData/MyLib-hcajnpxuyurqmharmwvwiyisfcwu/Build/Products/Debug-iphoneos/MyLib.framework/MyLib
-output /Users/dlwx/Desktop/WyTest/MyLib
将生产的文件替换掉framework中的文件!
-ObjC:加了这个参数后,链接器就会把静态库中所有类和分类都加载到最后的可执行文件中
-all_load:会让链接器把所有找到的目标文件都加载到可执行文件中,但是在使用这个参数时假如使用了不止一个静态库文件,很有可能会遇到ld: duplicate symbol错误,因为不同的库文件里面可能会有相同的目标文件,建议在遇到-ObjC失效的情况下使用-force_load参数。
-force_load:所做的事情跟-all_load其实是一样的,但是-force_load需要指定要进行全部加载的库文件的路径,这样的话,你就只是完全加载了一个库文件,不影响其余库文件的按需加载
网友评论