1.创建一个静态库 Cocoa Touch Static Library
2.创建一对.h和.m的文件,并且声明实现一个将要被他人调用的方法。(方法很low,不过只是用做实验而已。。。)
在我们生成.a静态库之前,可以发现工程目录中的Products文件中存在一个红色的libstatic_test.a静态库,这表示我们还未生成一个.a静态库。
当我们完成对声明方法的实现后,按下command + B构建我们的项目,这时会发现原本红色的libstatic_test.a的静态库变为黑色,这表示现在我们已经生成了一个我们想要的.a静态库,我们可以在电脑中找到静态库的位置。
通过图-5我们可以看到生成的静态库,但是并不存在对外公开可调用方法的.h文件,这显然是不行的。添加用于显示可调用方法的.h文件,可以选中工程的TARGETS—->Build Phases——>Copy Files,点击图-6中箭头所示“+”,弹出一个框,如图-7,选中tool.h文件,点击添加,就会在.a静态库的文件目录中新增一个包含tool.h的文件,如图-8
但是到目前为止,我们可以通过终端命令行来查看制作的.a静态库所支持的架构。
1.进入静态库所在文件目录;cd +'路径'
2.lipo -info +'静态库名称'
由图-9可看出我们刚刚制作的静态库所支持的架构是x86_64。
但是我们依然并没有完成对.a静态库的制作,我们通过图-4,可以看出我们是在模拟器 iphone7下构建的,当引入当前静态库的工程使用iphone4s模拟器时,运行会报错。这是因为在iOS中,模拟器ipone 5s之前,运用的i386架构,但是5s之后运用的是x86_64框架,而我们之前制作的.a静态库是在iphone7模拟器下创建的,存在不兼容问题,如图-10,
面对这种问题我们的解决方案是:选中制作静态库的工程static_test的TARGETS-->Bulid Setting-->Architectures-->Bulid Active Architecture Only 修改Debug中的默认值YES为NO,如图-11,command+B重新构建。
好了,到目前为止,我们所制作的.a静态库就兼容i386和x86_64两种架构了,而真机同理即可支持arm64,armv7.armv7s。但是如果我们在真机上运用模拟器下制作的.a静态库,或者在模拟器下运用真机制作的.a静态库,又会出现兼容错误,解决方法是:合并模拟器和真机制作的.a静态库为一个新的静态库。具体操作如下:
1.进入两个静态库所在文件目录;cd +'路径'
2.lipo -create Debug-iphoneos/libstatic_test.a Debug-iphonesimulator/libstatic_test.a -output libtool.a
这样就生成一个libtool.a的静态库,用这个静态库替换到之前我们在工程用的旧静态库,编译运行,这是就不会出现架构兼容问题了。我们可以使用终端查看这个静态库所支持的架构已经兼容了模拟器和真机。如图-12:
到目前为止,制作.a静态库就算完成了。