ios制作.a静态库

开发中大家都会使用或多或少的第三方sdk,这些sdk基本都是一个.a文件和若干.h文件组成。.a文件就是ios的静态库,还有一种是.framework/.dylib的动态库。但是自己编写的动态库不能通过审核,所以一般使用的是制作静态库。

  • 新建工程

    选择Cocoa Touch Static Library工程

  • 编写代码

    项目会生成一个.h和一个.m初始文件,然后我们编写一个最简单的打印(NSlog)功能的静态库。

#import <Foundation/Foundation.h>

@interface libraryDemo : NSObject

-(void)printA;
+(void)printB;

@end
#import "libraryDemo.h"

@implementation libraryDemo

-(void)printA
{
    NSLog(@"PrintA");
}

+(void)printB
{
    NSLog(@"printB");
}

@end
  • 编译

    接下来就行编译,cmd+b或者product中build都行。注意这里要进行两次,一次是以真机或者ios device进行编译,一次以模拟器进行编译(先以真机或ios device编译)。因为模拟器和真机的运行不一样,编译成功后,products文件夹下的.a文件会变为正常颜色。show in finder后,可以看到两个文件夹,如图

    生成的.a与.h文件

  • 合并静态库(.a文件)

    刚才生成了两个文件夹,我们自己制作的sdk不可能让别人分两个环境去使用,所以我们需要合并两个.a文件。
    命令为:

 lipo -create /yourpath1/lib.a /yourpath2/lib.a -output lib.a

可以用 lipo -info lib.a来查看生成的静态库是支持哪个环境,armv7 arm64 armv7s(根据architectures的valid architecture来生成)的为真机环境,为i386(iPhone4s) x86_64(5s及以上)的话为模拟器。最后合并成功的是两这都有的。在某些情况下生成的静态库会导致build报错,使用不同的模拟器生成.a库,必要的时候还需修改build settings 里的architectures的属性,然后再生成进行合并。

  • 使用静态库

    新建一个普通项目,把.h和合并后的.a文件加入工程中,然后

#import "libraryDemo.h"

- (void)viewDidLoad
{
    [super viewDidLoad];
    [libraryDemo printB];

    libraryDemo *testDemo = [[libraryDemo alloc]init];
    [testDemo printA];

}

运行程序就可以在控制台看见 printB与printA了。

到此为止,就完成了一个最简单的ios静态库的制作。

望指正与补充~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值