由于开发的项目中使用了静态库文件(.a文件),因此专门对它进行了简单的学习。静态库文件包装的是经常使用的公共代码,便于代码的复用。
1、生成静态库文件(static library file)。主要包括以下几个主要步骤:
(1)创建静态库项目
命名为Stone,并在生成的Stone类里面添加一个类方法+printInfo,如图:
未编译前,Products文件夹下的libStone.a是红色的,编译之后变为黑色,如图:
注意顶部选择"iOS device"生成用于真机的静态库文件,选择任意模拟器则生成用于模拟器的静态库文件,且只要在选择"iOS device"时libStone.a才由红色变为黑色。
(2)设置release,如下图:
选择图上左侧红圈部分,之后再选择Edit Scheme,在弹出的对话框中选择release即可。
(3)编译后,进入文件夹:
/users/layne/Library/Developer/Xcode/DerivedData如图:
找到对应的项目的文件夹,Stone-efgkvmcmovsnfcelruigvapvtvwl/Build/Products,可以看到生成了2个文件夹Release-iphone和Release-iphonesimulator,前者里面的libStone.a用于真机,后者里面的libStone.a用于模拟器。如图:
2、为使用libStone.a的项目进行配置。
使用已创建的项目UIMenuController,为了便于演示,已将为真机和为模拟器使用的.a文件进行了重命名且复制到了桌面上。如下图:
(1)UIMenuController项目的build Phases->Link Binary with Libraries添加libStoneForIphone.a,并将Stone.h添加到项目里,如图:
(2)使用。如图:
注意:
(1)添加什么样的.a文件就只能用对应的方式运行。即添加了libStoneForSimulator.a,则只能用模拟器跑;添加了libStoneForIphone.a,则只能用真机跑。否则会出错。
(2)解决方法有两种:
①把两个.a文件都添加进项目。
②将两个.a合并为一个.a文件。
将两个.a文件合并为一个的方法如下:
使用命令行即可。终端切换到桌面,然后执行以下命令
lipo -create libStoneForIphone.a libStoneForSimulator.a -output libStoneForAll.a
这样一来,只要引入libStoneForAll.a文件即可。