在Xcode中创建静态库,并使用Target支持不同平台

      在项目的进行中,即使很忙的项目,花一定的时间重构项目都不失为一件必须做的事。即使没到生死攸关也和项目的健康发展和按时提交

以及老生常谈的后期维护都有很大的关系。

      在iOS项目开发中,重用代码的方法有很多种。一般来说,你可以把代码以Template的方式提升成基类子类的形式或者以Strategy的方式提升成

组成的方式。但是当代码量相当大,且在多个项目中共用同一批代码文件的时候,就需要把这些代码组成静态库的方式服用了(在iOS项目中只能使用静态库)。

也就是说把这些公用代码打包成静态库和可用的头文件分发给需要用到这些代码的Developer手中。或者用Xcode模板,把你的代码打包成framework,就像系统

提供的SDK一样,其中就包含了静态库和对应的public的头文件。点击这里获取这个Xcode模板。

      这里主要强调静态库的创建。在创建静态库的时候,如果你选择了schema->iPhone (Version) Simulator,之后编译。你得到的静态库是不能真机上使用的。

of course如果你不走这一步,那么你得到的静态库又是不能在模拟器中使用的。这时就需要用到xcode的target功能了。

      不同的target之间可以共享受代码。也就是对应于真机和模拟器创建不同的target,之后编出对应不同平台的静态库。具体做法:

首先创建一个静态库的项目。

      

我这里就取名叫Test123。之后你会看到如下的项目结构

      

你可以在项目中按照需要做添加修改等操作。

这个时候就需要再建另外的一个target。点击你的项目,右击已经存在的target的名字,在弹出菜单中选择duplicate

就会生成另外的一个target。而且代码全部都会reference到之前的代码上。

但是,默认生成的target名字一般不是你想要的。这里duplicate出来的target会叫做Test123 copy。这里我们需要默认生成的target

支持模拟器,第二个target支持真机。所有需要给这个库加一个后缀标识出来,Test123-ios。这个名字在对应于这个target的Build Settings中修改。

如图:

在图中你会看到第二个target叫Test123-other,如果这对生成的库名称没有影响。如果你不喜欢,可以双击修改名字。

      这个时候,两个target就已经建好了。只需要针对不同的平台编译就可以的到你想要的静态库。

首先在Schema中选择第一个target,然后选择iPhone(iPad也可以)Simulator。然后编译。

 

你就会得到一个支持模拟器的静态库。

然后选择第二个target,选择iOS Device,编译,你会得到一个支持真机的静态库。

      打开Organizer,不知道在哪儿?好吧,在Xcode工具栏的最右边或者一起按下shift+cmd+2你就会看到了。

在organizer中选择Projects,然后点红圈的地方。你就会看到你的项目的生成目录。

项目会根据不同的平台生成不同的目录。虽然这些目录都是Debug开头的。但是也可以也Release开头。

毕竟,如果你只是想分发你的静态库给其他的Developer用不能给他们Debug版的。

还是在刚才选择模拟器的地方,这次选择Edit Scheme。

在Run里选择Info tab下的Build Configuration,然后选Release。之后再编译就可以了。

      全文到此为止。记得,在使用静态库的时候把必要的头文件加到调用项目中。你还可以在对应的target的Building Settings的Prefix Header中设置对应的pch文件。

同时可以使用lipo命令可以把生成的两种平台的静态库打包成一个Universal静态库。简单介绍下:使用Terminal跳转到刚刚说的目录下,然后键入如下命令

lipo –create Release-iphoneos/libiphone.a Debig-iphonesimulator/libiphone.a –output libiphone.a

记得根据实际静态库名称修改命令中的名称。网上很多介绍这个那个的方法配置来配置去很是麻烦,还不如这样简单可靠!

 

欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/archive/2013/05/03/3055117.html

时间: 2024-12-25 15:42:15

在Xcode中创建静态库,并使用Target支持不同平台的相关文章

在iOS开发中使用静态库(Static Library)

引言: 静态库是一个(.a)为后缀的文件,它由Xcode编译生成.并且,库中只能存放代码,如果编译静态库的工程中有其他资源是无法一起编译到静态库中.静态库有点类似Windows中的Dll文件.做过Windows桌面应用的人应该很熟悉.静态库出现的主要目的是为了让代码可以在多个地方重用.此篇主要记录在iOS中使用静态库时遇到的问题汇总和解决方案. 如何创建一个静态库: 1:主工程关联静态库具体步骤 一:让静态库与项目工程关联起来 二:让项目工程写书写代码时,能够得带静态库中的头文件提示 三:为保证

平台-关于windows下创建静态库和动态库的问题

问题描述 关于windows下创建静态库和动态库的问题 windows下的库是跨平台的吗,比如我用qt写了个动态库,可以再其他平台用吗 解决方案 Qt是跨平台的,可以在其他平台下使用. 解决方案二: 当然不是,dll只能在windows上用.但是不排除别的操作系统可以通过自身的模拟去兼容.linux下的wine连windows下的exe都能兼容. qt是跨平台的库,但是并不是二进制文件跨平台,而是相同的源代码用不同的编译器/链接器编译,实现的跨平台. 解决方案三: winfdows上的动态库,静

Linux 创建静态库以及静态库的使用

目录: 1 手动建立静态库 2 静态库的使用 3 通过makefile文件建立静态库 1 手动建立静态库 将建立一个简单的静态库 -1: 将所需的源文件编译成目标文件 ------ helpguy.h #ifndef __helpguy_h__ #define __helpguy_h__ #include <stdlib.h> #include <stdio.h> #include <unistd.h> void err_msg(const char* errMsg,

iOS中 Framework静态库的创建和使用遇到的那些坑 韩俊强的博客

前言 网上关于Framework制作的教程数不胜数,然而都过于陈旧,最新的也是使用Xcode7的教程,而且有些设置也只给出步骤,并没有给出原因,而且按照有些教程制作出的framework还有些问题,所以我把自己制作framework的过程记录下来,并且使用的是最新的Xcode8环境.本次制作framework,包含AFN,FMDB第三方,.a文件,xib,Bundle文件,还有Category分类,几乎制作和使用framework遇到的所有坑都被我遇到了,所以,此篇博客在我这属于干货,特此分享给

xcode 4 制作静态库图文详解_IOS

最近在做Apple的IOS开发,有开发静态库的需求,本身IOS的开发,只允许静态库或者Framework.在Xcode上没有找到允许编译,如同Android上的*.so和Win32上的dll这样的说法.不过Framework这样的框架,估计也是类似动态库的实现,不过没有具体研究过,后续继续深入研究. 我这个文档的静态库的开发是基于Xcode4.2和iOS SDK5.0编写的.Xcode4跟之前的Xcode3还是有不少的差别的. 下面就简单写一个静态库和一个调用静态库的例子. 静态库的编写: 1.

Linux 中的静态库和动态库简介及生成过程示例

在实际的软件开发项目中,不是每一行代码都需要我们亲自写.在我们的软件产品中,有一些代码(尤其是函数)的出现频率很高,它们可以被当作公共代码来反复使用.为了避免重复劳动,我们就把这些公共代码编译为库文件,供需要的程序调用.在Linux中,库分为静态库和动态库两种. 本文对静态库和动态库进行了详细的介绍,并用实际的C代码演示了这两种库的生成过程. 一.静态库和动态库简介 众所周知,程序一般需要经过预处理.编译.汇编和链接这几个步骤才能变成可执行的程序.在实际的软件开发中,对于一些需要被许多模块反复使

Linux中的静态库和动态库简介及生成过程示例

[文章摘要] 在实际的软件开发项目中,不是每一行代码都需要我们亲自写.在我们的软件产品中,有一些代码(尤其是函数)的出现频率很高,它们可以被当作公共代码来反复使用.为了避免重复劳动,我们就把这些公共代码编译为库文件,供需要的程序调用.在Linux中,库分为静态库和动态库两种. 本文对静态库和动态库进行了详细的介绍,并用实际的C代码演示了这两种库的生成过程. 一.静态库和动态库简介 众所周知,程序一般需要经过预处理.编译.汇编和链接这几个步骤才能变成可执行的程序.在实际的软件开发中,对于一些需要被

iOS开发那些事-Git在Xcode中的配置与使用

很多Git命令都是在命令行下运行的,命令行下管理Git有很多优点不用多说.但最大的缺点是要求用户记住这些命令.因此Git图形界面还是很受一些用户欢迎的,其中Xcode作为集成开发环境工具,也提供了一定Git图形界面功能.但是要想在Xcode中使用Git管理工程代码还想需要进行一些配置,然后才能使用. 如果我们是使用Xcode 4创建的一个iOS工程,在终端的命令行中提交代码时候,可能会出现下面的部分信息: create mode 100644 HelloWorld/HelloWorld.xcod

iOS开发那些事-Git在Xcode中的配置与使用常见问题总结

书接上回提出的Git在Xcode中的配置与使用常见问题4个问题 问题1,如何在Xcode中创建代码库,并添加和提交代码到代码库? 问题2,如何在Xcode中提交推送给远程服务器代码库? 问题3,如何在Xcode中克隆远程服务器代码库到本地? 问题4,如何使用Xcode获取远程代码库数据,并解决冲突问题?   1.问题1 创建代码库有两种方式,一种是新建工程时候创建,另一种是把现有的工程拷贝到代码库下,再初始化代码库. 如果是新建工程时候创建,在保存文件时候可以选择是否创建,如果勾选"Create