文档章节

xcode 打包静态库

飞翔我的梦想
 飞翔我的梦想
发布于 2015/10/09 14:31
字数 645
阅读 654
收藏 3
  1. 静态库工程建立

    打开xcode --> 新建工程  --> 选择工程类型为library  --> 确定

    

  2.工程配置  

     点击工程中-->ios device(选择edit scheme) --> 点击info  --> run (选择release 或者debug)--> ok

    target --> building setting --> archciture  active only  设置为no

    编译运行--> xcode 的product 中点击菜单--> show in finder 找到编译的静态库。


  3. 注意事项

    静态库一般分为模拟器和真机两种 

    模拟器是i386架构,真机是你当前打包时候使用的手机的架构

    iPhone 手机cpu 架构类型

    armv6 :iphone iphone2 iphone3G

    armv7 :iphone3Gs  iphone4   iphone4s 

    armv7s :iphone5 iphone5c

    arm64 :iphone5s iphone6 iphone6p iphone6s iphone6sp

    4.查看lib库的信息    

    命令是:lipo -info libPrint.a,可以看到显示的结果是:Arch是  Arm7。下面我会具体介绍一下。

    5.有时候可以看到undefine symbols for architecture i386这样的错误

其实这个错误原因很简单,就是因为,我们用错了编译出来的xxx.a lib;在模拟器里面,我们需要的是基于i386构架编译的static lib,但是这个a文件,大家还记得前面说的arm6 arm7构架的么。这个a其实是在iphone这个arm构架上运行的代码。其实show in finder指向的是一个ios device的库,并不是i386模拟器下的库。那如何编译i386的库呢?我们将这个iOS Device修改成iPhone5.0 Simulator。在进行编译,这样就可以编译出i386下面的库。这个时候我们show in finder打开的文件夹还是ios device下的库。我们最好自己去那个目录下看一下。这里我们用command去查看了一下目录情况,如下:可以看到一个iphoneos的目录和一个simulator的目录。

然后我们再看看这个目录与第4条所示的目录有什么不同! 同样也有一个libPrint.a文件。

6.lib 错误原因,

Release-iphoneos里面的是基于arm6 arm7编译出来的库文件。Release-iphonesimulator文件夹下面的是基于i386编译出来的文件。

7.合并.a文件,制作通用静态库

这二个库一个是用于真机运行的一个是用于模拟器运行的.其实我们可以利用lipo将这二个文件打包成一个通用的a文件。命令如下:

/Users/user/Library/Developer/Xcode/DerivedData/UITab-dgfkluumuexoxhcapzidtsmdgqcj/Build/Products替换成你的路径。 

/Users/user/Desktop/xxx.a替换成合并后的路径。 

lipo -create path1/真机/xxxt.a  path2/模拟器/xxx.a  -output /Users/pjk1129/Desktop/xxx.a


链接:http://blog.csdn.net/kepoon/article/details/21516977


© 著作权归作者所有

飞翔我的梦想
粉丝 0
博文 36
码字总数 29831
作品 0
浦东
私信 提问
xcode 编译插件--xcode-configure

有时候,我们希望通过命令行来编译xcode工程,我们可以直接用xcodebuild来编译,之后再到编译路径下拷贝打包成ipa或者是要包含各种cpu架构的静态库或framework,就显得非常非常麻烦,有没有一...

smallmuou
2016/01/19
548
0
iOS 深入理解framework

//联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪 一、概念 1.framework(框架,其实相当于静态框架,不是动态库) 2.打包framework还是一个比较重要的功能,可以用来做一下事情: (1)封装功能...

石虎132
2018/01/08
0
0
Framework打包前传

关于库的一些基础知识 首先来了解一下什么是库:库(Library)其实是一段编译好的二进制代码,然后将头文件暴露出来(OC中就是.h文件,swift中打包后Xcode将会自动生成.h文件 需要将Swift代码前...

樗同学
2016/09/27
60
0
Framework打包

iOS app需要在许多不同的CPU架构下运行: arm7: 在最老的支持iOS7的设备上使用 arm7s: 在iPhone5和5C上使用 arm64: 运行于iPhone5S的64位 ARM 处理器 上 i386: 32位模拟器上使用 x86_64: 64...

樗同学
2016/09/27
159
0
iOS - 静态库、动态库、Framework

背景: 在项目中使用OC和Swift混编, 用Cocoapods导入SwiftyJSON时需要在PodFile里面使用useframeworks!才能安装, 导入成功后编译项目报.h 未能发现的错误. 经过一顿google之后得知如果在cocoa...

Sunxb
2016/12/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

cpu load过高问题排查

load average的概念 top命令中load average显示的是最近1分钟、5分钟和15分钟的系统平均负载。 系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程...

mskk
59分钟前
6
0
用spring boot 实现websocket

import java.io.IOException;import javax.websocket.OnClose;import javax.websocket.OnError;import javax.websocket.OnMessage;import javax.websocket.OnOpen;import java......

jingshishengxu
今天
4
0
shell介绍,命令历史,命令补全和别名,通配符,输入输出重定向,管道符和作业控制

shell介绍 可以使用 yum list |grep zsh 或者 yum list |grep ksh 这样可以搜索 zsh 和 ksh ,有需要的话可以安装 总之,默认使用的就是 .bash shell 命令历史 输入过的命令会被保存在一个文...

doomcat
今天
7
0
1995年的资深工程师,和你谈谈如何进阶

1995年的资深工程师,和你谈谈如何进阶 自我介绍 网络ID:杭城小刘,城市:顾名思义,人在杭州。1995年出生,本科毕业,现在是一名 iOS 资深工程师,年薪 35w。兴趣爱好广泛:乒乓球、美食、...

杭城小刘
今天
10
0
Kafka 面试题

1.Kafka中的ISR、AR代表什么? ISR:与leader保持同步的follower集合 AR:分区的所有副本 2.Kafka中的HW、LEO分别代表什么? LEO:每个副本的最后条消息的offset HW:一个分区中所有副本最小...

djm猿
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部