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和.m文件 可以在.m文件中写你要的代码

    F1898D4B-A084-488B-8170-A8DE5682136B.png

    3.我们来创建一个简单的代码
    .h文件如下

    D8EE5B3D-A2B4-4CFC-AF6D-1B31CB1BE250.png

    .m文件如下

1560D4FD-1030-4643-AA44-7070C028D2D3.png

4.接下来就是编译生成.a文件了
快捷键(command+B)选中真机编译和选中模拟机编译对应生成的连个.a文件一个是真机的一个是模拟机的

5AB668DE-A882-4EA5-B3AA-F7C67FB650B7.png

这时候去资源库里查找编译生成的.a文件
找到 前往 然后 按着 option 快捷键 你会看到 资源库 点击 如图

998F053B-CD9A-455C-8B88-CF0A72B7C8B7.png

看到Release-iphoneos 和Release-iphonesimulator 里边的.a文件

5AB668DE-A882-4EA5-B3AA-F7C67FB650B7.png

4.接下来就是将你生成的.a文件引入到你想加入的工程中

4FF87073-D14F-4D6D-964A-78A59B155743.png

引入方法:直接将上图你所看到的include文件夹中所有的.h文件和下边对应的.a文件直接拖到你的工程中 千万注意下图中的三个选项勾选

FB518732-A5E0-419E-8A92-8B07803A83C4.png

D5B5F50F-5A90-48C1-B669-DE1F8E5B740B.png

5.添加成功后就可以直接使用了 但是需要注意的是 如果你是选择模拟器编译生成的.a文件那么在真机运行的时候是会报错的 所以为了可以使用真机和模拟器都可以使用.a文件可以合并成为一个.a文件 使用终端合成具体方法如下:
ZXYdeMacBook-Pro:~zxy$ lipo -create 模拟器.a(路径)    真机.a(路径)    -output 可以把模拟器的.a复制一份重命名.a 
这样,就可以合并成一个通用的静态库,唯一的缺点是体积要大一点相对于真机和模拟器两个的总大小 之后将这个静态库拖到工程中即可

------------分割线------
由于看到各位提出的问题在iphones 4s 和iphone 5上无法使用的问题后来查阅各种资料找到答案如下:
原因是因为静态库少了4S~5:i386 对应的cpu架构
如下图所示:
在 cd 到资源库你的.a 文件所在的路径 然后使用如下命令查看:
lipo - infor *.a
显示的结果如下图

3EF5E4D6-69FC-4E68-A64D-DF8A93F5EE45.png

只需要到你们的.a工程中找到如下图的Debug 将Yes 改成NO即可 然后重新 commond + B 进行重新编译 选择所有的模拟器进行编译 好了 之后再接着你上班的步骤重新愉快的来一遍问题就ok了!!!

时间: 2024-10-29 10:47:01

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

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

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

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

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

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

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

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

iOS 淘宝买 开发者证书 进行真机调试

Apple的开发者账号99¥.(反正我舍不得.上淘宝买个证书就可以用自己的iphone/ipad来真机调试代码了) 怎么买? 1.你的apple设备的udid号(设备标识符) 2.支付RMB 从淘宝店老板那里得到了什么? 3个证书如下图所示:   +  p12文件的密码 原理:给店老板你的设备唯一标识符号码,说:我想让这个设备可以被真机调试. 店老板屁颠屁颠的拿着你的udid到苹果开发者网站那边去生成一个mobileprovision的文件. 我们有了这个文件,装到自己的电脑上. 这样我们的设备

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

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

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

(一)制作静态类库 ? ? 为方便讲解,更方便与初期代码测试,新建一个项目,StaticLibraryExample? ? 新建Target. 假设我们需要制作的静态类库名为 IMIBase. 右击Targets,添加新Target.选择Static Library, 名字为IMIBase ? ? 添加类文件到IMIBase.在新建文件选项中注意,添加到的Target是IMIBase,而不是默认的StaticLibraryExample. ? ? 随便写一个方法printAAA 打印字符串AAA

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

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

iOS如何重新打包静态库,使得模拟器和真机都可以使用(以ZBarSDK为例)

ZBarSDK下载地址:https://github.com/bmorton/ZBarSDK http://zbar.sourceforge.net/iphone/index.html 1.创建工程 导入ZBar的SDK文件.即把ZBarSDK的目录拉入项目,然后选中copy选项 2.添加framework 3.添加代码 #import "ZBarSDK.h" #import "QRCodeGenerator.h" @interface yxpViewControl