0. 参考

http://www.cocoachina.com/ios/20150127/11022.html

http://www.cnblogs.com/gcb999/p/3296414.html

1.概念

  Framework 是资源的集合,将静态库和其头文件包含到一个结构中,供Xcode引入使用。

1.1. os x 与 ios 区别

  os x 可以创建动态连接的Framework。

  ios 只能是使用静态连接的Framework。

1.2. 本质

  Framework 是静态库的 “一站式采购点”,是从静态库演化而来。

2.步骤

2.1. 创建一个 Cocoa Touch Static Library 工程

  一个静态库工程由头文件和实现文件组成,应该仅需要导入一个头文件,就可以访问该库的所有公开类。

2.2. 设置工程

2.2.1. 删除自动生成的实现文件

2.2.2. 修改生成的头文件

  替换头文件中的内容为 #import <UIKit/UIKit.h>

2.2.3.. 添加UIKit.framework

  工程导航栏>TARGETS>Build Phases>Link Binary With Libraries>+>UIKit.framework

2.2.4. 添加phase

  在2.4 所在的目录执行:Editor>Add Build Phases>Add Headers Build Phase。

  如果该项不能选择,则点击下方的Build Phases的区域获取焦点。

2.2.5. 拖动Header

  把2.3的头文件拖动到2.5中的Public中,这样,别人就可以获取到该头文件。

2.3. 添加功能

2.3.1. 拖到工程里面

  把要添加的功能文件夹拖动到工程里面,勾选Copy Items 和 Add to targets。

2.3.2. 拖动需要共享的文件

  注意 2.2.5里面,Public和private都是可以暴露出来的,不要被误导,而Project是私有的。所以,其实只需要Public和Project就好。需要共享的文件,执行操作同2.2.5就好。

2.3.3. 添加功能头文件到主头文件

  例如:#import<controls/controls.h>,是用尖括号的。

2.3.4. 配置Build Settings

2.3.4.1. 提供目录名

  标识拷贝的公共头文件位置,确保使用静态库时可以定位到相关头文件。

  项目导航栏>Targets>Build Setting,搜索 public header > 双击Public Headers Folder Path> 输入include/$(PROJECT_NAME)

2.3.4.2. 去掉Debug等选项

  接2.3.4.1,搜索并修改

  • Dead Code Stripping为NO
  • Strip Debug Symbol During Copy为NO
  • Strip Style 为 Non-Global Symbols

2.3.5. 编译

  选择目标为 Generic iOS Device ,编译,这时,Product下的.a文件已经从红色变为黑色。可以右键>Show in Finder查看。

2.4 创建Framework

  Framework包含lib,但是又有自己的特殊结构:

  通过添加脚本来完成这个操作

x. 创建一个依赖开发(Dependent Development)工程

x.1. 创建一个Single View Application

Xcode 添加前缀

x.2. 引入静态库工程

  关闭静态库工程,将 静态库.xcodeproj从Finder中拖入到Xcode中项目同名分组里。这样做方便调试和修改。

x.3. 添加静态库

  • 项目导航栏>项目工程>Targets>项目>Build Phases>Target Dependencies>+>选择静态库,作为项目依赖库
  • 同样,Build Phases>Link Binary With Liraries>+>选择静态库,作为链接库

iOS 开发 旧版 framework的更多相关文章

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

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

  2. iOS开发之通过Framework建立项目依赖

    https://www.jianshu.com/p/d146db167bf3 项目开发时经常会遇到个别模块想打包成framework的情况,传统的打包方式太繁琐,反复测试时很麻烦,不如一个项目管理来得 ...

  3. iOS开发之常用第三方框架(下载地址,使用方法,总结)

    iOS开发之常用第三方框架(下载地址,使用方法,总结) 说句实话,自学了这么久iOS,如果说我不知道的但是又基本上都摸遍了iOS相关知识,但是每次做项目的时候,遇到难一点的地方或者没试过的东西就闷了. ...

  4. iOS开发——创建你自己的Framework

    如果你想将你开发的控件与别人分享,一种方法是直接提供源代码文件.然而,这种方法并不是很优雅.它会暴露所有的实现细节,而这些实现你可能并不想开源出来.此外,开发者也可能并不想看到你的所有代码,因为他们可 ...

  5. iOS开发之静态库(四)—— 静态框架framework制作

    前面介绍过,虽然苹果公司禁止在iOS开发中使用动态库,而且也从XCode中移除了创建静态框架的功能,但我们还是可以通过对XCode进行小小的改动来创建静态框架. 编译环境:Macbook Air + ...

  6. 精通iOS开发(第5版)

    <精通iOS开发(第5版)> 基本信息 原书名:Beginning ios 6 development:exploring the ios sdk 作者: (美)David Mark   ...

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

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

  8. Arcgis API For IOS扩展AGSDynamicLayer新旧版API对比

    AGSDynamicLayer(ForSubclassEyesOnly) Category Reference Description This category organizes the meth ...

  9. iOS开发UI篇—模仿ipad版QQ空间登录界面

    iOS开发UI篇—模仿ipad版QQ空间登录界面 一.实现和步骤 1.一般ipad项目在命名的时候可以加一个HD,标明为高清版 2.设置项目的文件结构,分为home和login两个部分 3.登陆界面的 ...

随机推荐

  1. OpenGL学习-------绘制简单的几何图形

    本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念. 一.点.直线和多边形我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念在计算机中会有所不同.数学上的 ...

  2. android脚步---跟随手指动的小球

    这次的学习主要是在包里面除自动生成的mainactivity.java之外,再新建一个class, DrawView,在mainactivity里面调用DrawView. 在DrawView里面主要是 ...

  3. 配置cinder使用NFS后端

    首先先使用“cinder delete”命令删除所有实例,释放磁盘空间. 停止cinder服务:service openstack-cinder-api stopservice openstack-c ...

  4. VS2015安装提示出现“安装包丢失或损坏”解决方法

    原因:microsoft root certificate authority 2010.microsoft root certificate authority 2011证书未安装,导致文件校验未通 ...

  5. JAVA基础--继承和权限控制

    1. extends继承 2. java只支持单继承,不允许多继承 修饰符 类内部 同一个包 子类 任何地方 private YES       default YES YES     protect ...

  6. log4cxx入门第一篇--一个小例子

    先看官网:http://logging.apache.org/log4cxx/index.html 转载自:http://wenku.baidu.com/view/d88ab5a9d1f34693da ...

  7. windows矢量字体点阵数据的提取(转)

    源:windows矢量字体点阵数据的提取 问题参考:windows api 获取字库点阵的问题 1.提取原理 在windows系统当中提取矢量字体的字模有很多方法,下面介绍一种利用GetGlyphOu ...

  8. iBATIS的多对多 数据库设计及实现

    iBATIS的多对多映射配置方法和多对一映射配置方法差不多,不同的是,多对多映射,数据库设计上需要一个记录两个类关系的中间表,本文以学生-老师为例,在iBATIS的sqlmap中配置多对多关系. iB ...

  9. 使用msm文件创建msi

    一.不使用merge module的ModuleSubstitution和ModuleConfiguration 1.创建MyMsm.msm <?xml version="1.0&qu ...

  10. Java面向对象设计

    1.少了程序入口会在输出的地方报这个错: Syntax error, insert "... VariableDeclaratorId" to complete FormalPar ...