日常开发中,为了节省项目的编译时间,还有同一个功能给多个业务产品线使用的情况下,我们会把公用的功能模块打包成静态库,那么在创建静态库的过程中又会出现很多问题。网上大多数的文章又仅仅只是说了基本版demo的静态库创建,而实际开发中我们需要在具体工程进行联调,提高我们开发静态库的效率。
首先我们先来认识一下静态库。
1、静态库即静态链接库(例如: windows下的.lib、Mac和Linux下的.a);
2、静态库在编译的时候会被直接拷贝一份,复制到目标程序里并且这段代码在目标程序里就不会在改变了,我猜这也是该库叫"静态库"的原因;
3、静态库的优点是在编译完成之后,库文件实际上就没有作用了,目标程序没有外部依赖,直接就可以运行;那么缺点就是会使目标程序的体积增大;
理论说完,我们进入实战
1、新建一个Test工程。如下
2、新建一个.a静态库的target
3、修改静态库的相关参数
4、打开静态库文件,开始编写代码
ASDK.h文件中添加以下代码
#import
@interface ASDK : NSObject
+ (void)openASDK:(NSString*)string;
@end
m文件如下
#import"ASDK.h"
@implementation ASDK
+ (void)openSDK:(NSString*)string
{
NSLog(@"调用了静态库%@",string);
}
@end
然后编译后,会发现libASDK.a文件红色变成了灰色。
5、在ATest工程中添加新建的.a库文件
添加成功后,就可以在ViewController.m文件中引入头文件,使用libASDK.a库中的方法了
后面,只需调整ASDK中的方法,重新点击运行就行,大大提高了开发静态库的效率。
最后,每个静态库调试完成后,只需要根据网上的方法,对模拟器的包和真机包进行整合,就可以生成一个可以发布使用的静态库。参考指令:
lipo -create /Users/apple/Library/Developer/Xcode/DerivedData/Library-bmlhmlslupltsqfkcfgmgqzducdy/Build/Products/Debug-iphoneos/libLibrary.a /Users/apple/Library/Developer/Xcode/DerivedData/Library-bmlhmlslupltsqfkcfgmgqzducdy/Build/Products/Debug-iphonesimulator/libLibrary.a -output /Users/apple/Desktop/libLibrary.a;