ios开发静态库生成

首先简单说下哈: 库就是程序代码的集合,是共享代码的一种方式

 分为开源库(sd,mi,afn)和闭源库(看不到具体实现的)

闭源库分为静态库和动态库

静态库: .a 和 .framework

动态库: .dylib 和 .framework

静态库和动态库在使用上的区别

静态库:链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝 

动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存 

注意啦: 使用自己制作的动态库无法上传appstore

接下来讲讲制作.a的方法

第一步: 新建一个工程选择如下:

之后下一步啦新建工程。

打开工程后干掉声称的.h 和.m文件如下

第二部:把需要封装的类拖到工程中来

然后选择需要暴露出来的 .h 文件, .m 文件会自动编译到 .a 文件中

选择真机设备,然后 Command+B 编译, libMJRefresh.a 文件从红色变为黑色

就成功了, show in finder  就是需要的库啦。

这里需要注意的是: 选择 真机运行的出来的是  真机运行需要的.a文件, 只能运行在真机上, 跑模拟器就会报错。

因为手机的cpu架构和电脑的不同造成的。。

解决方法:

合并真机command +B出来的.a  和模拟器command +B出来的.a

合并静态库让模拟器和真机都能用的招

lipo -create /Users/gti/Desktop/Debug-iphoneos/libJTK.a /Users/gti/Desktop/Debug-iphonesimulator/libJTK.a -output /Users/gti/Desktop/libJTK.a

lipo -create :固定的命令   

/Users/gti/Desktop/Debug-iphoneos/libJTK.a   真机跑出来的.a文件的位置   这位置选中.a 文件直接拖到终端就ok

/Users/gti/Desktop/Debug-iphonesimulator/libJTK.a   模拟器跑出来的.a文件的位置 

output  固定命令行

/Users/gti/Desktop/libJTK.a   合并ok 的最终文件的位置以及名字

使用 .a

如何使用 .a

直接将 .a 、 .h 、资源文件拖拽到其他项目中即可

原文地址:https://www.cnblogs.com/godlovexq/p/5569889.html