Create a Static Library in Xcode

Xcode Version: 8.0 beta
iOS SDK Version: iOS 10

Step 1: 建立工程

创建工程时选择Cocoa Touch Static Library.

Create a Static Library in Xcode_第1张图片
创建工程时选择Cocoa Touch Static Library
工程名设置为: HelloWorld

Create a Static Library in Xcode_第2张图片
设置工程名

工程结构如下:

Create a Static Library in Xcode_第3张图片
工程结构

Note: libHelloWorld.a为输出的静态库文件,编译前为红色,编译后为黑色.

Step 2:函数定义和实现

HelloWorld.h中

@interface HelloWorld : NSObject

+ (void)say;

@end

HelloWorld.cpp中

@implementation HelloWorld

+ (void)say
{
    NSLog(@"Hello World!");
}

@end

Step 3:设置Run Scheme为Release

  • Edit Scheme
Create a Static Library in Xcode_第4张图片
Edit Scheme
  • 选择Run Scheme时的Build ConfigurationRelease(默认为Debug).
    Create a Static Library in Xcode_第5张图片
    Run Scheme设置为Release
  • 编译并查看结果.
    此时分别选择iPhone 6 Plus(模拟器中随意选一款即可)和Generic iOS Device(或直接选择真机)进行编译。

Create a Static Library in Xcode_第6张图片
Paste_Image.png

运行后,选中 libHelloWorld.a点击右键, 选择 Show in Finder:

Create a Static Library in Xcode_第7张图片
Paste_Image.png

可看到编译结果分别置于:
Release-iphonesimulator(simulator的编译结果)和 Release-iphoneos(Generic iOS Device的编译结果)中

Create a Static Library in Xcode_第8张图片
Paste_Image.png

其中 libHelloWorld.a是输出的静态库文件, 而 include中为需要的头文件.

Step 4: 合并静态库文件

Release-iphonesimulator中的库文件仅支持在simulator下使用
在命令行中,切换到该目录下,查看其相关信息:

Paste_Image.png
看出其支持i386和x86_64两种架构.

Release-iphoneos仅支持在真机下使用.
查看其相关信息:

Paste_Image.png
看出其支持armv7和arm64两种架构.

如果我们打算在simulator和真机下同时使用,应该合并上述两个文件.
切换到Release-iphonesimulatorRelease-iphoneos的同级目录, 执行合并命令:

lipo -create Release-iphonesimulator/libHelloWorld.a Release-iphoneos/libHelloWorld.a -output libHelloWorld.a 

可以看到目录下生成了一个新的文libHelloWorld.a:

Create a Static Library in Xcode_第9张图片
Paste_Image.png

查看该文件的信息:

Paste_Image.png

可以看出目前的库文件支持i386 armv7 x86_64 arm64四种架构,支持在simulator和真机上同时使用.

Step 5: 使用静态库文件

创建一个新的Xcode的工程, 工程名为CallLibDemo, 工程类型选择Single View Application.
拷贝Step 4生成的libHelloWorld.aRelease-iphoneosinclude目录中的文件到工程中.
并将文件添加到工程中.

Create a Static Library in Xcode_第10张图片
Paste_Image.png

导入后目录结构如下:

Create a Static Library in Xcode_第11张图片
Paste_Image.png

Note: 此时工程的Build PhasesLink Binary With Library会默认添加libHelloWorld.a

ViewContorller.m中导入静态库所需的HelloWorld.h头文件,并在viewDidLoad中调用[HelloWord say];
运行结果如下:

Paste_Image.png

References:
http://blog.csdn.net/kepoon/article/details/21516977

你可能感兴趣的:(Create a Static Library in Xcode)