您的位置:首页 > 移动开发 > IOS开发

Git/.a静态库的介绍:创建和使用

2015-11-01 20:56 330 查看
一、
创建.a静态库

1. 选择Cocoa Touch Static Library 一栏:

2. 编译

编译时时先用真机编译一次,.a文件的颜色就会从红色变为黑色;

默认编译后(真机/模拟器分别运行)只会输出自带的.h, 不会输出新建类的.h;

需要手动做修改“选择项目--> Build Phases --> Copy file --> 添加.h”。

二、
测试.a静态库

1.模拟器的架构问题:

    1> 常见报错:

     Undefined symbols for architecture arm64 / i386 /armv7s/ armv7

   
//architecture: 架构

    解决方式:

     检查静态库的架构问题,看看是否模拟器和真机导入错误。

  2> 模拟器和真机的架构

   
模拟器:2种架构

    i386      : 4S ~ 5    -->  32

    x86_64    : 5S ~ 6s   -->  64

   
真机: 3种架构

    armv7     : 4 ~ 4s

    armv7s    : 5 ~ 5c

    arm64     : 5S ~ 6s

模拟器编译时默认只输出一种架构;

真机(不要插入iPhone),默认输出多种架构,
除了armv7s;

//从2014年10月的某个版本更新中,
取消了armv7s为默认输出选项

//架构是支持低版本兼容,即向低版本兼容。

2.
查看静态库支持的架构

    cd到静态库目录下

   
查看架构: lipo -info lib.a

3.
架构的合成

方式一:
命令行,
两两合并

(真机不插iPhone,
默认已经多个架构
--> 模拟器合成一次,
再跟真机合成一次就行了)

lipo -create
静态库1.a
静态库2.a -output
新静态库.a

方式二:
更改编译参数
点击库文件
--> Target --> Build Setting -->
只编译当前架构选项改为NO

修改参数之后,

如果是模拟器编译,
则直接编译成2个版本之和;

但是如果是真机编译,依然只是编译成2个版本之和;

并且,最后两者还需要合并一次。

4.
合成静态库的优缺点

如果合成:比如友盟

优点:
调试方便
  

缺点:
体积大

如果不合成:比如百度2.8.1版本

优点:减少文件体积 

缺点:真机和模拟器切换调试非常不方便

如何打包出armv7s架构


可以进入Build Setting -->
手动添加三个架构,
然后编译即可。

5. Release和Debug模式的区别

Debug:  

调试状态:NSLog
拥有丰富的调试代码, 但用户不需要加载这些代码

Release:

发布状态:系统会在打包时取出一些调试代码,
文件体积变小,
运行速度变快(用户不会感受到明显的感觉)

最好发布Release版本。

三、 添加资源文件

1. 将文件夹后缀改为.bundle即可生成bundle资源文件夹。

2. 资源文件(如图片)一定要放到bundle文件夹下,
保证路径加载是唯一的资源.
否则可能会跟项目里的同名文件发生冲突,
导致文件加载出错。

3.生成静态库的.m文件中使用到资源文件时,要加资源文件的路径,如@“Lib.bundle/pig.png”,如下两种方法都可。

四、边开发边调试.a静态库

1.
创建普通的项目;

2.
添加项目Target,
创建库文件,
并实现相关方法;

3.
在项目中手动导入.a文件 
(重要);

4.
此时.a是通用文件,
什么架构都可以使用.

5.
如果想导出静态库文件,
那么切换Target,
按照之前所学输出即可,需要注意下图所示的地方.

此外,开发阶段都是默认生成debug库文件,如果要生成release发布版本的库文件,按下图所示操作:

结果展示:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息