由于开发的项目中使用了静态库文件(.a文件),因此专门对它进行了简单的学习。静态库文件包装的是经常使用的公共代码,便于代码的复用。

1、生成静态库文件(static library file)。主要包括以下几个主要步骤:

(1)创建静态库项目

wKiom1Xdd8iTXsMiAAFq3ICkesI772.jpg

命名为Stone,并在生成的Stone类里面添加一个类方法+printInfo,如图:

wKiom1XdeX-SvQCiAAIG0e6CVKo709.jpg

wKioL1Xde5fiL7VvAAI3UmOn2r4992.jpg

未编译前,Products文件夹下的libStone.a是红色的,编译之后变为黑色,如图:

wKioL1XdfRbw4UOoAAFxmnI2kf0490.jpg

注意顶部选择"iOS device"生成用于真机的静态库文件,选择任意模拟器则生成用于模拟器的静态库文件,且只要在选择"iOS device"时libStone.a才由红色变为黑色。

(2)设置release,如下图:

wKioL1Xdf8fT8GCLAAKSRSQZdTw502.jpg

选择图上左侧红圈部分,之后再选择Edit Scheme,在弹出的对话框中选择release即可。

(3)编译后,进入文件夹:

/users/layne/Library/Developer/Xcode/DerivedData如图:

wKioL1XdgGeCNdvfAAI8qHrlNEQ571.jpg

找到对应的项目的文件夹,Stone-efgkvmcmovsnfcelruigvapvtvwl/Build/Products,可以看到生成了2个文件夹Release-iphone和Release-iphonesimulator,前者里面的libStone.a用于真机,后者里面的libStone.a用于模拟器。如图:

wKioL1XdgaCyxZUQAABz7qTC4YA613.jpg


2、为使用libStone.a的项目进行配置。

使用已创建的项目UIMenuController,为了便于演示,已将为真机和为模拟器使用的.a文件进行了重命名且复制到了桌面上。如下图:

wKioL1XdgujBwrI4AAEFOfsLHjM527.jpg

(1)UIMenuController项目的build Phases->Link Binary with Libraries添加libStoneForIphone.a,并将Stone.h添加到项目里,如图:

wKioL1XdhFyBpwGBAAIMUOzbQo8366.jpg

(2)使用。如图:

wKiom1XdgrbyRhwUAAiOPXCmqys017.jpg

注意:

(1)添加什么样的.a文件就只能用对应的方式运行。即添加了libStoneForSimulator.a,则只能用模拟器跑;添加了libStoneForIphone.a,则只能用真机跑。否则会出错。

(2)解决方法有两种:

①把两个.a文件都添加进项目。

②将两个.a合并为一个.a文件。

将两个.a文件合并为一个的方法如下:

使用命令行即可。终端切换到桌面,然后执行以下命令

lipo -create libStoneForIphone.a libStoneForSimulator.a -output libStoneForAll.a

这样一来,只要引入libStoneForAll.a文件即可。