ios 制作自己的framework

ios中我们写的代码有时不愿意让别人看到,可能对它进行封装,生成一个静态库如典型的.a,还有一种就是和

苹果自带的库一样的后缀名为.framework的库,个人推荐使用.framework,因为.a不仅要装其添加进去,还要

将对应的头文件添加到项目中。

1.新建一个静态库工程。file--new--project,弹出框中选择Ios--framework&library中的cocoa touch static library.点击NEXT。输入product name,这里为libZW.

 


2.删除向导所生成工程中的Target:


删除目标后工程状态


3.删除旧目标对应的工程文件夹:

删除前:


删除前,注意,此处删除会弹出提示框,要选择"只删除引用"

删除后如下图


4.删除旧目标对应的编译设置(Product菜单|Edit Scheme命令):


点击左下角的Manage Schemes按钮:删除后如下图


点击OK返回

5.增加一个新目标,点击下面的Add Target


在弹出的对话框中选择Mac OS X下的Bundle



如上图,给库取一个名字,保持默认的Framework(CoreFoundation),然后点击Finish.

6.修改新目标的工程设置.选中TARGETS中对应的目标,Build Setting页:在Architectures下将“Base SDK”

改为"Lastest iOS",然后将"Architectures"改为"Standard":

在Deployment下,将"Mac OS X Deployment Target"改成“Compiler Default”,将“Targeted Device Family”改成

需要的,此处改成了"iPhone/iPad",同时可以根据需要修改"iOS Deployment Target",此处改为了"iOS 4.3":


在 Linking 中,将 “Dead Code Stripping” 改为 “NO”,将 “Link with Standard Libraries” 改为 “NO”,将 “Mac-O Type” 改为 “Relocatable Object File”


在 Packaging 中,将 “Wrapper Extention” 改为“framework”:


7、修改目标的 Info。点击 Info:


将 “Bundle OS Type Code” 改为 “FMWK”(Framework 的意思):

8、修改预编译头:


9.往项目中拖进工具类,或新建类具体的我就不多说了如图


10.导出相关文件。选中Target,点击Build Phases,然后点击右下角的"Add Build Phase"


在弹出的菜音中选择"Add Copy Header",添加完成后, 展开"Copy Headers",下面有Public、Priviate、Project三个子项:

然后点击下面的+号,从项目中选择头文件,点击Add按钮完成添加。此时,我们看到导出的头文件在

Project下,这样不能暴露给别人使用,将其拖动到Public下:


然后分别选择模拟器和iOS Device模式下编译,它会生成libZW.framework


可能有的人生在的是Debug模式下的,那你就应该把第四步中的build Configure改成release模式,再生成一次就行了,

这时模拟器的framework和iOS Device的framework是分开的,

怎样知道framework是支持模拟器的还是支持真机的呢可以用命令,先cd到libZW.framework里面,你会看到里面的libZW,然后执行lipo -info libZW

如果是i386表示支持真机


如果是armv7支持模拟器


那怎样将其合呢

执行命令命令lipo -create xxxx/libZW  xxxxx/libZW  -output  libZW

你会看到在Debug-iphoneOS同级目录下会有一个新的libZW,这个表示继支持模拟器又支持真机的,如果不信可以执行命令

lipo -info libZW你会看到里面既有armv7又有i386,然后将其替换Release-iphoneos里面的libZW.framework目录下的libZW,

此时的libZW.framework可以同时在真机和模 拟器中同时使用,好了就说这么多了


转地址:http://blog.csdn.net/fengsh998/article/details/8290687

ios中我们写的代码有时不愿意让别人看到,可能对它进行封装,生成一个静态库如典型的.a,还有一种就是和

苹果自带的库一样的后缀名为.framework的库,个人推荐使用.framework,因为.a不仅要装其添加进去,还要

将对应的头文件添加到项目中。

1.新建一个静态库工程。file--new--project,弹出框中选择Ios--framework&library中的cocoa touch static library.点击NEXT。输入product name,这里为libZW.

 


2.删除向导所生成工程中的Target:


删除目标后工程状态


3.删除旧目标对应的工程文件夹:

删除前:


删除前,注意,此处删除会弹出提示框,要选择"只删除引用"

删除后如下图


4.删除旧目标对应的编译设置(Product菜单|Edit Scheme命令):


点击左下角的Manage Schemes按钮:删除后如下图


点击OK返回

5.增加一个新目标,点击下面的Add Target


在弹出的对话框中选择Mac OS X下的Bundle



如上图,给库取一个名字,保持默认的Framework(CoreFoundation),然后点击Finish.

6.修改新目标的工程设置.选中TARGETS中对应的目标,Build Setting页:在Architectures下将“Base SDK”

改为"Lastest iOS",然后将"Architectures"改为"Standard":

在Deployment下,将"Mac OS X Deployment Target"改成“Compiler Default”,将“Targeted Device Family”改成

需要的,此处改成了"iPhone/iPad",同时可以根据需要修改"iOS Deployment Target",此处改为了"iOS 4.3":


在 Linking 中,将 “Dead Code Stripping” 改为 “NO”,将 “Link with Standard Libraries” 改为 “NO”,将 “Mac-O Type” 改为 “Relocatable Object File”


在 Packaging 中,将 “Wrapper Extention” 改为“framework”:


7、修改目标的 Info。点击 Info:


将 “Bundle OS Type Code” 改为 “FMWK”(Framework 的意思):

8、修改预编译头:


9.往项目中拖进工具类,或新建类具体的我就不多说了如图


10.导出相关文件。选中Target,点击Build Phases,然后点击右下角的"Add Build Phase"


在弹出的菜音中选择"Add Copy Header",添加完成后, 展开"Copy Headers",下面有Public、Priviate、Project三个子项:

然后点击下面的+号,从项目中选择头文件,点击Add按钮完成添加。此时,我们看到导出的头文件在

Project下,这样不能暴露给别人使用,将其拖动到Public下:


然后分别选择模拟器和iOS Device模式下编译,它会生成libZW.framework


可能有的人生在的是Debug模式下的,那你就应该把第四步中的build Configure改成release模式,再生成一次就行了,

这时模拟器的framework和iOS Device的framework是分开的,

怎样知道framework是支持模拟器的还是支持真机的呢可以用命令,先cd到libZW.framework里面,你会看到里面的libZW,然后执行lipo -info libZW

如果是i386表示支持真机


如果是armv7支持模拟器


那怎样将其合呢

执行命令命令lipo -create xxxx/libZW  xxxxx/libZW  -output  libZW

你会看到在Debug-iphoneOS同级目录下会有一个新的libZW,这个表示继支持模拟器又支持真机的,如果不信可以执行命令

lipo -info libZW你会看到里面既有armv7又有i386,然后将其替换Release-iphoneos里面的libZW.framework目录下的libZW,

此时的libZW.framework可以同时在真机和模 拟器中同时使用,好了就说这么多了


转地址:http://blog.csdn.net/fengsh998/article/details/8290687

猜你喜欢

转载自blog.csdn.net/liyux4869/article/details/38685215