XCode7 创建framework

1.新建一个静态库工程.

file→ new→ project, 弹出框中选择iOS→ framework & library中的cocoa touch static library.点击Next,输入product name: TestFramework, 点击Next→ 点击Create.

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

点击工程名→ 点击TARGETS → 右键Delete.

3.增加一个新的Target.

点击Target底部的”+”号,弹出框中选择OS X→ Framework & Library中的Bundle.点击Next,输入product name TestFramework, 点击Finish.

4.修改新建 Target 的 Building Settings 项.

a: 选中TARGET→ Build Settings项, 将Architectures→ Base SDK 改为Latest iOS(iOS 9.0), 将Architectures 改为 $(ARCHS_STANDARD);

b: 在 Deployment项, 选中”Mac OS X Deployment Target”, 点击键盘上的Delete键, 将“Targeted Device Family”改成”1,2”;

c: 在 (null) - Deployment项, 修改”iOS Deployment Target”为”6.0”,同时修改PROJECT的info下的Deployment Target → “iOS Deployment Target”为”6.0”;

d: 在Linking项, 将”Dead Code Stripping” 改为”NO”, “Link With Standard Libraries” 改为 “NO”, 将 “Mach-O Type” 改为”Relocatable Object File”;

f: 在Packing项, 将”Wrapper Extension” 改为 “framework”;

5.修改 Target 的 Info 项.

点击Info, 将 “Bundle OS Type code” 改为 “FMWK”

6.将要写入静态库的源码文件拖入工程目录, 这里以一个简单的语句输出作为例子

Command+N 新建一个cocoa Touch class, 名字为TestLog, 点击Next, 点击create;

TestLog.h代码如下:

import

import “TestLog.h”

@implementation TestLog
- (void)TestLog
{
NSLog(@”这里是静态库输出日志\n”);
}
@end

7.删除TestFramework.m, 修改TestFramework.h内容如下:

ifndef TestFramework_h

define TestFramework_h

import

endif

8.暴露Headers供外部项目调用接口.

选中Target下的Build Phases, 点击左上角”+”号→ “New Headers Phase”, 展开Headers, 点击左下角”+”, 选择”TestFramework.h”和”TestLog.h”→ 点击add, 将这两个头文件拖动到上方Public下.

9.然后分别在iOS Device 和 iOS Simulator 下编译.

在Window→ Projects中左边选择TestFramework工程, 点击右边的Derived Data右边的箭头,打开Finder, 在../Build/Products目录下有真机和模拟器生成的TestFramework.framework

10.合并Framework.

打开终端, 输入:

cd /Users/android/Library/Developer/Xcode/DerivedData/TestFramework-aainjryhnvupalarkmoushxwuwdr/Build/Products, 回车;

可以输入lipo -info XXX 来查看库的信息, armv7 arm64的是真机, X86_64的是模拟器;

输入命令:

lipo -create /Users/android/Library/Developer/Xcode/DerivedData/TestFramework-aainjryhnvupalarkmoushxwuwdr/Build/Products/Debug-iphoneos/TestFramework.framework/TestFramework /Users/android/Library/Developer/Xcode/DerivedData/TestFramework-aainjryhnvupalarkmoushxwuwdr/Build/Products/Debug-iphonesimulator/TestFramework.framework/TestFramework -output NewTestFramework

在Products目录下会生成一个NewTestFramework的文件, 将该文件拷贝覆盖TestFramework.framework目录下的TestFramework文件, 新的TestFramework.framework就是真机和模拟器通用的framework.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247140.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基础js逆向练习-登录密码破解(js逆向)

练习平台:逆向账号密码 https://login1.scrape.center/ 直接打开平台,输入密码账号,抓包找到加密的参数携带的位置,这边我们找到的是一个叫token的加密参数,这个参数的携带是一个密文 我们首先考虑一下搜索这个加密的…

python之socket

socket套接字 什么叫socket socket是处于应用层与传输层之间的抽象层,他是一组操作起来非常简单的接口(接受数据)此接口接受数据之后,交由操作系统.socket在python中就是一个模块. socket两个分类 基于文件类型的套接字家族 套接字家族的名字:AF_UNIX unix一切皆文件…

iOS----JSON解析

在iOS开发中与服务器进行数据交互操作,操作过程中使用最为常见的格式为JSON与XML,其中JSON较为清量,因此本篇blog就讲解一下如何在iOS中进行JSON解析。 1.建立HTTP请求 (1)创建URL NSString *URLStr [NSString stringWithFormat:”http:/…

VS中每次改代码后运行程序不更新,只有重新编译才生效。

解决方法:将项目移除解决方案,再重新添加进来,即添加->现有项目->选择.vcxproj文件,即可解决。 转载于:https://www.cnblogs.com/Gregg/p/11358711.html

socket补充:通信循环、链接循环、远程操作及黏包现象

socket补充:通信循环、链接循环、远程操作及黏包现象 socket通信循环 server端: import socketphone socket.socket(socket.AF_INET,socket.SOCK_STREAM)phone.bind((127.0.0.1,8080))phone.listen(5)conn, client_addr phone.accept() print(conn, cl…

PCA的原理及MATLAB实现

相关文章 PCA的原理及MATLAB实现 UFLDL教程:Exercise:PCA in 2D & PCA and Whitening python-A comparison of various Robust PCA implementations --------&a…

Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理

Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理 说明:Java生鲜电商平台中,我们将进一步理解微服务架构的核心要点和实现原理,为读者的实践提供微服务的设计模式,以期让微服务在读者正在工作的项目中起到积极的作用。…

iOS中下载小文件

在iOS中通过网络下载小文件比如小型图片等资源,一般在子线程中将数据完全下载完毕,然后在调用block将下载的数据整个部分返回,或者采用同步返回下载数据。 一般采用以下两种方式: (1)使用GCD将下载操作放…

iOS下载大文件原理解析一

iOS中下载大型文件,需要考虑到占用内存的大小与下载速度(使用多线程),因此本文首先介绍一个原理性下载文件的DEMO。 在下载大型文件中,需要知道下载的进度因此需要使用代理模式,不断的回调下载进度。 - (…

recv原理、高阶版黏包解决方案、基于UDP的socket通信

recv原理、高阶版黏包解决方案、基于UDP的socket通信 recv原理 源码解释: Receive up to buffersize bytes from the socket. 接收来自socket缓冲区的字节数据, For the optional flags argument, see the Unix manual. 对于这些设置的参数,可…

iOS中下载大型文件的原理解析二

在iOS中下载大型文件,需要使用NSURLConnection 的代理方法: (void)touchesBegan:(NSSet)touches withEvent:(UIEvent *)event { NSURL *url [NSURL URLWithString:”http://d.3987.com/fengj_141112/007.jpg“]; NSURLRequest *request [NSURLReque…

ASP.NET Core Web 应用程序开发期间部署到IIS自定义主机域名并附加到进程调试

想必大家之前在进行ASP.NET Web 应用程序开发期间都有用到过将我们的网站部署到IIS自定义主机域名并附加到进程进行调试。 那我们的ASP.NET Core Web 应用程序又是如何部署到我们的IIS上面进行调试的呢,接下来我们来简单介绍下: 一、安装IIS所需的Host扩…

iOS下载大型文件原理解析三

在下载大型文件过程中是可以取消下载的 - (IBAction)download:(UIButton *)sender { // 状态取反 sender.selected !sender.isSelected; // 断点续传 // 断点下载if (sender.selected) { // 继续(开始)下载// 1.URLNSURL *url [NSURL URLWithStrin…

HTML文件上传与下载

文件下载 传统的文件下载有两种方法&#xff1a; 使用<a/>标签&#xff0c;href属性直接连接到服务器的文件路径window.location.href"url"这两种方法效果一样。但有个很大的问题&#xff0c;如果下载出现异常&#xff08;连接路径失效、文件不存在、网络问题等…

NSURLSession的应用

iOS7以后发布了NSURLSession用来替换NSURLConnection&#xff0c;NSURLSession使用方式有以下两种&#xff1a; 1.block方式 &#xff08;1&#xff09;创建的步骤 获取单例会话对象 创建URL对象 隐含创建request 创建NSURLSessionDataTask // 1.获取会话对象 NSURLSess…

ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)...

在正式进入主题之前我们来看下几个概念&#xff1a; 一、依赖倒置 依赖倒置是编程五大原则之一&#xff0c;即&#xff1a; 1、上层模块不应该依赖于下层模块&#xff0c;它们共同依赖于一个抽象。 2、抽象不能依赖于具体&#xff0c;具体依赖于抽象。 其中上层就是指使用者&am…

iOS中XML解析

iOS中XML解析分为两种实现方式&#xff1a;SAX与DOM SAX方式&#xff1a;主要是事件驱动的解析方式&#xff0c;是逐行读取XML数据&#xff0c;不断回调代理&#xff0c;告诉代理当前解析的元素开始或者结束。 DOM解析方式&#xff1a;是讲整个XML数据全部读入内存&#xff0…

苹果电脑基本设置+Linux 命令+Android 实战集锦

本文微信公众号「AndroidTraveler」首发。 背景 大多数应届毕业生在大学期间使用的比较多的是 windows 电脑&#xff0c;因此初入职场如果拿到一台苹果电脑&#xff0c;可能一时间不能够很快的上手。基于此&#xff0c;这边出了系列视频&#xff0c;通过实际的演示让没使用过苹…

iOS中POST请求

iOS中POST请求的发送需要使用NSMutableURLRequest可以设置URL request的头字段&#xff0c;比如超时时间&#xff0c;请求类型&#xff1a;GET POST等一些关键头字段&#xff1a; - (IBAction)login { // 1.用户名 NSString *usernameText self.username.text; if (userna…