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

封装自己的framework静态库的更多相关文章

  1. 经验分享:Xcode 创建.a和framework静态库【转】

    作者:Haley_Wong 最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态 ...

  2. Xcode6.1标准Framework静态库制作方法。工程转Framework,静态库加xib和图片。完美解决方案。

    http://www.cocoachina.com/bbs/read.php?tid-282490.html Xcode6.1标准Framework静态库制作方法.工程转Framework,静态库加x ...

  3. iOS开发之——制作framework静态库教程

    环境: 硬件:macbook air 系统:OSX EI Capitan 版本:10.11.3 xcode : Version 7.2.1 (7C1002) 最近在做ios的静态库(据说framewo ...

  4. 经验分享:Xcode 创建.a和framework静态库

    最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. iOS中的 ...

  5. iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用

    iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用 前言 开发中经常使用三方库去实现某特定功能,而这些三方库通常又分为开源库和闭源库.开源库可以直接拿到源码,和自 ...

  6. Xcode 创建.a和framework静态库(转)

    最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种.iOS中的静 ...

  7. iOS SDK开发之 .framework静态库

    查看.a静态库的生成及使用单击此处 注:这篇教程将只使用一小部分Objective-C代码,本文主要讲解从开始到应用的详细步骤.环境:xcode 9.2下面我们开始操作: 第一步:创建一个静态库工程 ...

  8. iOS开发中静态库之".framework静态库"的制作及使用篇

    iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...

  9. Xcode 创建.a和framework静态库(转载)

    库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. iOS中的静态库有 .a 和 .framework两种形式:动态库有.dylib 和 .framew ...

随机推荐

  1. Python常用的库简单介绍一下

    Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...

  2. [BZOJ4456][ZJOI2016]旅行者:分治+最短路

    分析 类似于点分治的思想,只统计经过分割线的最短路,然后把地图一分为二. 代码 #include <bits/stdc++.h> #define rin(i,a,b) for(regist ...

  3. 基于thinkphp开发的项目部署到由宝塔面板创建的LNMP服务器上解决路径出错问题

    一. 环境与版本: 主机:amazon aws EC2主机 系统:Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-1039-aws x86_64) 面板:宝塔免费版 6.9. ...

  4. centos7 安装 Spring Tools 4 for Eclipse

    1.spring 官网下载 https://spring.io/tools 2.解压 tar -zxvf spring-tool-suite--.RELEASE-e4.11.0-linux.gtk.x ...

  5. js测试用

    一,大纲 二,目录二 三,目录三

  6. leetcode-easy-array-283 move zeros

    mycode  77.24% class Solution(object): def moveZeroes(self, nums): """ :type nums: Li ...

  7. 三、Jmeter生成HTML报告

    1.执行jmeter -n -t [接口脚本地址] -l [test.jtl地址] -e -o [报告输出地址] 例如:jmeter -n -t C:\chushujin\youxinscript\j ...

  8. c++实验8 哈夫曼编码-译码器

    哈夫曼编码-译码器 此次实验的注释解析多加不少---若对小伙伴们有帮助 希望各位麻烦点个关注 多谢 1.哈夫曼树构造算法为: (1)由给定的n个权值{w1,w2,…,wn}构造n棵只有根结点的二叉树, ...

  9. Linux_进程管理&计划任务

    目录 目录 top打开Linux系统任务管理控制台 ps进程查询指令 kill进程关闭指令 一个小实验 一次性计划任务 周期性计划任务 top打开Linux系统任务管理控制台 快捷键: P M k q ...

  10. Linux_文件系统、磁盘分区_RHEL7

    目录 目录 前言 文件系统 目录结构 文件的类型 文件系统损坏后的修复 磁盘分区 分区的类型 分区最小存储单元 查看当前分区的block的大小 分区格式 MBR格式 GPT格式 mount挂载指令 挂 ...