iOS开发:Framework的创建

转载自:http://blog.csdn.net/nine_yao/article/details/72845087

环境:Xcode 8

1.创建framework

2.修改相关配置

1)设定SDK适配的iOS系统版本号

2)选择性添加: armv7s

原因: 
armv6, armv7, armv7s是ARM CPU的不同指令集, 
armv6设备:iPhone, iPhone2, iPhone 3G,第一代、第二代iPod Touch; 
armv7设备:iPhone 3GS,iPhone 4,iPhone 4S,iPad ,iPad 2,iPod Touch 3G,iPod Touch 4; 
armv7s设备:iPhone 5,iPad4; 
arm64设备:iPhone 5S,iPad Air,iphone6,iphone6plus,iPhone6s,iPhone6s Plus,iPhone7,iPhone7 Plus等; 
   
  Xcode6更新后,默认不支持armv7s,如果你提供的Framework默认不支持armv7s架构,但是使用者要支持armv7s架构,这时就会有冲突,所以需要你选择性是否支持armv7s 

3)”Build Active Architecture Only” 设置为 “NO”

设置为NO的时候,会编译支持的所有的版本 
设置为YES的时候,是为Debug的时候速度更快,它只编译当前的architecture 版本 

4)”Mach-O Type” 设置为 “Static Library”

framework可以是动态库也可以是静态库,对于系统的framework是动态库,而用户制作的framework只能是静态库。 

在Xcode7及以上版本中 Dead Code Stripping、Link with Standard Libraries不再需要设置成NO

5)根据SDK功能需要,来决定是否保留原头文件,个人习惯删掉重新创建一个继承自NSObject的文件

 
将自己创建的需要开放的文件拖入到 Public 中 

6)分别在模拟器和真机环境下编译SDK,在Products文件夹下选中打出来的包,show in finder ,回退一个目录,即可看到两个文件夹(Debug或Release模式自选)

7)使用终端合并SDK

命令行语句:sudo lipo -create 真机SDKTest文件路径(步骤6中的圈起来的文件) 模拟器SDKTest -output 自定义合成文件存储路径(合成文件的名字SDKTest)

注:framework相关问题

1. XXXXX is not an object file (not allowed in a library)

2.SDK中使用了第三方框架问题

时间: 2024-10-10 13:09:38

iOS开发:Framework的创建的相关文章

iOS开发多线程篇—创建线程

iOS开发多线程篇—创建线程 一.创建和启动线程简单说明 一个NSThread对象就代表一条线程 创建.启动线程 (1) NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil]; [thread start]; // 线程一启动,就会在线程thread中执行self的run方法 主线程相关用法 + (NSThread *)mainThread; // 获得主线程 -

iOS开发 纯代码创建UICollectionView

转:http://jingyan.baidu.com/article/eb9f7b6d8a81a5869364e8a6.html iOS开发 纯代码创建UICollectionView 习惯了使用xib和StoryBoard创建UICollectionView项目工程的伙伴,需要转换使用纯代码来实现,想避免碰更多的壁,就需要认真了解创建UICollectionView过程了.创建UICollectionView比创建UITableView更加复杂,初始化方式也是相对奇特.以下是使用纯代码创建UI

iOS开发-证书的创建与使用流程

这篇文章是为了给刚开始从事iOS开发的同胞一些方便吧,虽说这不算是什么重要的技术点,但是估计也会令人有时候比较苦恼,发现自己帅气的写完代码后却跑不了自己的手机上,或者在发布项目的时候卡住某个操作步骤,再或者因为项目的需要有推送的功能却怎么也收不到信息,其实有时候这几个情况并不是你代码出错,而是不规范的证书使用导致你并不知道其实你的证书可能已经不好用了,好啦,话不多说直接上步骤: 在你拥有了一个开发账号的前提下我们开始准备开发前的工作,我以我现在使用的公司开发者账号为例,创建真机调试证书(也就是t

iOS 开发 Framework

制作Framework 的好处和缺点 好处:       1.如果模块间接口定义的比较完善,模块化的程序具有很好的可扩展性与内聚性:       2.物理上的模块化便于开发过程的管理与测试,尤其是在程序规模相对大.       3.如果可以使用胶水语言作为粘合剂,程序可以用很少的代价适应未来的变化.       4.可以在物理上实现 iOS 程序的模块化. 不足:       1.由于是静态库,应该不会有什么运行时的损失,但是没试验过,不确定.       2.资源的加载这部分,不知道会不会占用

iOS开发 .framework的Optional(弱引用)和Required(强引用)区别, 有错误 Library not found………………

http://www.cnblogs.com/wanyakun/p/3494323.html 强引用(Required)的framework是一定会被加载到内存的,但是弱引用(Optional)的framework只在需要时才会被载入内存,这对于比较大的framework来说,在最初加载的时候会省很多时间. 简单解释一下,有一些库如Social.framework 和 AdSupport.framework,是在iOS6之后才被引入的,还有一些更新了新特性的只能在iOS6+上可用.当你添加一个f

iOS开发之控制器创建与加载(生命周期)

1.如何创建一个控制器 控制器常见的创建方式有以下几种: (1)通过storyboard创建 (2)直接创建 MJViewController *mj = [[MJViewController alloc] init]; (3)指定xib文件来创建 MJViewController *mj = [[MJViewController alloc] initWithNibName: @"MJViewController" bundle:nil]; 注意,创建xid后还要设置xid中哪个vi

iOS开发学习笔记-创建和初始化对象

Objective-C中对象的创建和初始化(Allocating and Initializing Objects)(主要内容来自于Apple的电子书<The Objective-C Programming Language>的“Allocating and Initializing Objects”.电子书可以从iBooks商店下载.iOS Developer Library也有同名的文档,但是内容上是不同的.) 在Objective-C中创建对象分为两步:1 开辟一个对象所需的内存,All

iOS开发之代码创建常用控件(UIButton、UILabel)的思路

代码创建按钮UIButton: (一)基本设置 //创建中间“+”按钮 UIButton *addBtn = [[UIButton alloc] init]; //设置默认背景图片 [addBtn setBackgroundImage:[UIImage imageNamed:@"AddButtonIcon"] forState:UIControlStateNormal]; //设置按下时背景图片 [addBtn setBackgroundImage:[UIImage imageName

李洪强iOS开发之类的创建的练习

// //  main.m //  12 - 类的创建练习 // //  Created by vic fan on 16/7/9. //  Copyright © 2016年 李洪强. All rights reserved. // //练习: /* 一个人可以吃不同的食物,只要吃东西就会增加体重0.6,如果要是出 门遛弯,每走100步,体重减0.2,小于100步忽略不计. 请用面向对象思想实现. 思路: 类名:Person 属性:年龄(_age).体重(_weight).姓名(_name)

iOS开发---UIButton 1 //创建一个可以显示图片的按钮。

1 //创建一个可以显示图片的按钮. 2 -(void)creatImageBtn{ 3 UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 4 btn.frame = CGRectMake(100, 100, 100, 100); 5 UIImage *icon1 = [UIImage imageNamed:@"icon1.png"]; 6 UIImage *icon2 = [UIImage imageNamed