制作,利用lipo 编译合并iPhone模拟器和真机通用的静态类库

(一)制作静态类库

? ? 为方便讲解,更方便与初期代码测试,新建一个项目,StaticLibraryExample
? ? 新建Target。 假设我们需要制作的静态类库名为 IMIBase. 右击Targets,添加新Target。选择Static Library, 名字为IMIBase

? ? 添加类文件到IMIBase。在新建文件选项中注意,添加到的Target是IMIBase,而不是默认的StaticLibraryExample。

? ? 随便写一个方法printAAA 打印字符串AAA。

? ? 测试。双击Target StaticLibraryExample,在General中添加直接依赖关系,选择IMIBase。这样做的目的是保证每次运行测试的时候都会编译 IMIBase。 完成后command+b 编译。我们会在Products智能文件夹发现2个产品,一个是StaticLibraryExample.app 另一个是libIMIBase.a 后者就是我们需要的静态类库了,默认前缀是lib 后缀是.a的文件。(需要注意的是.a文件会被svn默认忽略掉,请google svn配制)。将.a文件拖到Target StaticLibraryExample的Link Binary With Libraries文件夹。

(二)利用lipo 编译合并iPhone模拟器和真机通用的静态类库

假设两个版本的lib分别是 libIMIUI.s.a , libIMIUI.d.a 我们的目标是 把他们合并成无敌超级通用版的libIMIUI.a

打开命令行 Terminal.app 输入:

lipo -create

然后依次把两个.a文件拖到终端窗口, 命令行会变成这样:

lipo -create /Users/Travis/Desktop/libIMIUI.d.a /Users/Travis/Desktop/libIMIUI.s.a

然后接着输入 -output 目标文件路径,如:

-output /Users/Travis/Desktop/libIMIUI.a

最后现在这样一条命令:

lipo -create /Users/Travis/Desktop/libIMIUI.d.a /Users/Travis/Desktop/libIMIUI.s.a -output /Users/Travis/Desktop/libIMIUI.a

时间: 2024-10-05 21:19:12

制作,利用lipo 编译合并iPhone模拟器和真机通用的静态类库的相关文章

利用终端指令合并支持模拟器和真机的静态库

制作.a静态库时,需生成了支持模拟器和真机的静态库,然后在开发中我们在模拟器和真机上测试时,就需要来还更换静态库,造成极大的麻烦,因此,我们可以通过终端指令将支持模拟器和真机的静态库合并一个静态库,这样在模拟器和真机上都可以使用 当我们在模拟上使用真机的静态库时,就会报如下错误,这种错误我们在以后的开发中会经常遇到: 该错误大体意思是该静态库不支持x86_64,原因是因为模拟器的处理器是x86_64架构的,而真机的都是采用的arm7,arm7s,arm64架构的,相反在真机上使用模拟器的静态库会

Apple设备中point,磅(pt),pixel的关系与转换,以及iPhone模拟器与真机的长度关系

查阅了好多资料都没有发现有相关的详细介绍,包括苹果官方文档,也是草草带过.后来是在一个介绍Macbook打印字体的博客中看到的,受到启发. 首先说明苹果设备绘图的长度单位可以认为是point,不是磅(pt)的意思.该point是一个逻辑概念,是独立于设备的. 图1.不同分辨率屏幕显示1point 对于传统常规屏幕,1 point 映射物理屏幕1 pixel.对于Retina的高分屏,1point映射物理屏幕2 pixel.这样可以统一图形在同一种类不同型号设备上图形的大小. 所以在开发的时候,不

[转] iOS开发之使用lipo命令制作模拟器与真机通用静态库

转自 http://blog.csdn.net/jinglijun/article/details/8276089 通常在项目中使用静态库的时候都会有两个版本,一个用于模拟器,一个用于真机,因为Mac和iPhone的CPU不同,才造成了这种情况. 为了模拟器与真机之间切换调试的方便,制作通用版本非常有必要. 现在有两个版本的静态库libSQLite_i386.a(模拟器)与libSQLite_arm.a(真机). 1.打开终端,进入到这两个文件所在的目录: 2.执行:lipo -create l

lipo命令合并模拟器和真机的静态库

ios的开发,静态库经常需要用到两套,一套是模拟器的,一套是ios真机的,这两套的架构并不相同.再加上debug和release,那么就是2*2=4套了. 不过我们可以利用lipo 来合并静态库,例如 lipo -create Release-iphoneos/lib123.a Debug-iphonesimulator/lib123 -output lib123.a 再用lipo -info 查看,显示这是一个fat文件,并且包含了所需的全部架构.xcode编译时可自动选择库 具体可以见这篇文

ios framework 分离与合并多种CPU架构,分离与合并模拟器与真机

ios  framework 分离与合并多种CPU架构,分离与合并模拟器与真机 如果你所用的framework支持真机和模拟器多种CPU架构,而你需要的是其中的一种或几种,那么可以可以从framework中分离出各种架构,然后合并你需要的,具体的方式举例如下: 首先从framework中分离出armv7 arm64,或者还有armv7s lipo XXXX.framework/XXXX -thin arm64 -output XXXX.framework/XXXX-arm64 lipo XXXX

【问题收集·初级问题】模拟器和真机,分别如何指定数据库路径,模拟器和真机对应的沙盒有何不同…

模拟器和真机,分别如何指定数据库路径,模拟器和真机对应的沙盒有何不同- 网友的问题如下所示: 23:58:19 但是原理搞不太懂... 网友的问题如下所示: 23:59:28 我在项目中用了一个数据库框架对数据库的操作是这个框架封装好的 网友的问题如下所示: 23:59:36 我看了下头文件 网友的问题如下所示: 00:00:18 就是数据库在初始化的时候指定了一个路径是模拟器运行时的沙盒路径 我的回答如下所示: 00:01:02 嗯,在真机上数据库的路径能建立起来吗 网友的问题如下所示: 00

学习使用Reveal连接模拟器和真机调试

学习使用Reveal连接模拟器和真机调试 Reveal是一个ios程序界面调试工具. (一)用终端创建文件,设置别名 首先打开Terminal(终端),输入vim~/.lldbinit创建一个名为.lldbinit的文件,然后将如下内容输入该文件中: command alias reveal_load_sim expr (void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport- Libraries/libReveal.dylib

IOS::.a的生成,以及模拟器和真机.a 的合并

首先来谈谈为何要使用.a文件 Objective-c语言有.h .m 文件组成.静态库可以将 .m文件封装成一个.a文件,第三方应用程序只需要拿到这个.a文件和代码对应的.h文件即可使用静态库中封装的方法.IOS静态库适合去制作第三方提供的SDK. 第一步 1.首先创建一个新的工程,选择Framework&:,在选择Cocoa Touch Static Library 工程名自己定义 BB2ECA5B-8795-4ECA-88AF-D2FB0F8BA382.png 2.接下来你会看到自动生成.h

合并百度地图API真机和模拟器的.a文件

在终端键入如下命令: lipo -create /Users/kangyufeng/Downloads/BaiduMap_IOSSDK_v2.4.1_All/BaiduMap_IOSSDK_v2.4.1_Lib/Release-iphoneos/libbaidumapapi.a  /Users/kangyufeng/Downloads/BaiduMap_IOSSDK_v2.4.1_All/BaiduMap_IOSSDK_v2.4.1_Lib/Release-iphonesimulator/lib