iOS如何生成.a文件

作者: Z_Lukas | 来源:发表于2015-05-14 16:23 被阅读17412次
  • 首先来谈谈为何要使用.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](http:https://img.haomeiwen.com/i453803/64294d59ed8e0c36.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 ** /所在路径/Debug-iphoneos/libGenerateFaile.a /所在路径/
Debug-iphonesimulator/libGenerateFaile.a -output /Users/zxy/Desktop/libUniversal.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了!!!

E7567BE5-15BD-4A18-A313-89C865E19DCE.png

相关文章

  • iOS如何生成.a文件

    首先来谈谈为何要使用.a文件 Objective-c语言有.h .m 文件组成。静态库可以将 .m文件封装成一个....

  • PDF

    iOS生成PDF图文ios开发之--PDF文件生成 iOS11 PDFKit 使用例程

  • IOS推送生成服务器需要的p12证书

    本文主要介绍在使用ios APNS推送的时候如何生成服务器需要使用到的p12文件 流程: 1.生成CSR请求文件 ...

  • ios打包

    一、前期准备 1、项目输入命令生成ios文件// 添加ios容器cordova platform add ios/...

  • ios 腾讯信鸽推送证书设置

    如何生成p12文件,信鸽文档有详细的说明。 http://docs.developer.qq.com/xg/ios...

  • 关于 iOS 输出 PDF 文档

    关于 iOS 输出 PDF 文档 iOS 开发中难免会遇到生成文件的需求,生成文件还是很简单的,直接将字符串写入文...

  • 使用OC实现Json自动生成Model类文件

    JsonToModel----iOS 使用OC实现Json自动生成Model类文件,不用开发者自己生成类文件写属性...

  • shape文件的生成与打包下载

    概述 本文讲述如何结合Geotools实现后端shp文件的生成与打包下载。 实现效果 实现 shp文件生成如何生成...

  • apicloud正式证书p12文件的获取方法

    在做ios打包的时候,需要正式的证书文件,正式的证书文件如何获取呢? 苹果提供了官方的生成证书的方法,是需要使用苹...

  • iOS如何生成.a文件静态库

    首先来谈谈为何要使用.a文件 Objective-c语言有.h .m 文件组成。静态库可以将 .m文件封装成一个....

网友评论

  • 苦工:打出的.a包比原文件要大 为啥呢
  • 9642fb1d453f:楼主写的很好,用楼主的方法我封装出.a库了。不过我想知道sdk是怎么实现数据传入和参数回调的,这里有篇博客写的很好,推荐给大家:http://blog.csdn.net/xiaozhuanddapang/article/details/53913817
  • 多LV信源:你好, 我用pod导入友盟的框架, 为什么, 在Pods文件夹下有友盟, 而 Products文件夹下, 没有友盟.a静态库, 编译一直过不去
  • caobug:如果.a中内置了xxx.h文件,我想在SWIFT桥接头中引用.h文件,我该怎么写?
  • 萨达搜索到:请问下,如果.a文件 包含了常用的第三方框架(比如:FMDB,AFNetworking), 如果使用了这个.a文件的app也有相同的第三方框架 会不会冲突报错的?
    kang_dong:@嘴角上扬丶 请你这个问题你解决了吗?
    嘴角上扬SnosNo1丶:@caobug 如何完美解决、是不能再.a中包含app也有的相同框架还是要怎样解决 ?
    caobug:@紫霞大仙F 会报错说 xx both xxx 并存,我已被这个坑了好久
  • 8a30a10b186a:谢谢博主这么精神的分享
  • 11542d55f85a:怎么调用这两个方法
  • 2e0cde7b84aa:查找编译好的.a文件的那一步,可以直接在项目目录左侧列表-》Products-右键,show in Folder跳转到文件目录
  • 为之则易ing:好厉害,,,, :+1:
  • fa7f0507fdcb:为什么我生成的只有debug的,你这怎么还有release的?另外最后合并用的是debug还是release?
    俊俊吖:@Z_Lukas DUG模式选为NO在真机上可以运行,模拟器一直报错,求大神帮忙解决一下
    Z_Lukas:@fa7f0507fdcb 合并Debug 的
    Z_Lukas:@fa7f0507fdcb 合并以后都可以用
  • 微漫步:你们可以实现吗,我怎么不行啊,最后一步实现的时候不可以,求指教
    Z_Lukas:@微漫步 什么问题呢?
  • 370770f723be:非常感谢,么么哒 :relaxed:
    雅之上善若水:@野米古 我也是在这不错的,你的怎么解决的?
    4f81d9b9dd7c:@有为青年94我的最后一步合成不了 是为什么fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: unknown flag: -create/Users/tt/Library/Developer/Xcode/DerivedData/练习SDK-gfdplfcdluzzabekpxrslhlsbpzr/Build/Products/Release-iphoneos/lib练习SDK.a/Users/tt/Library/Developer/Xcode/DerivedData/练习SDK-gfdplfcdluzzabekpxrslhlsbpzr/Build/Products/Release-iphonesimulator/lib练习SDK.a
    这是终端的报错
  • zhangferry:写的很好*……*
    Z_Lukas:@勇闯天涯茉莉花茶 谢谢! :smiley:

本文标题:iOS如何生成.a文件

本文链接:https://www.haomeiwen.com/subject/hheqqttx.html