.a 文件的生成
- 1 创建 .a (Library)
Framework & Library - Cocoa Touch Static Library
- 2 导入自己的各种文件
使用新建自带的.h文件作为头文件,包含自己的所有 .h 文件
- 3 Build Phases - Copy Files
添加所有想要暴露的文件
- 4 编译生成 .a 文件
1 分为 Debug 版本 Release 版本
2 还分 真机版本 和 模拟器版本
所有共有 4 个版本。
注意设置:Build Active Architecture Only - NO(不然只对应当前设备型号)
所以编译时,需要选择上面的 两两组合各编译一次。
成功后 Products - 中的 .a 就变黑了,Show in Finder 找到!
- 5 合并 上面的任意组合 .a
lipo -create pathA.a pathB.a -output newPath.a
例如:
lipo -create /Users/juyiwei/Desktop/eq/Debug-iphoneos/libJYWLibrary.a /Users/juyiwei/Desktop/eq/Debug-iphonesimulator/libJYWLibrary.a -output /Users/juyiwei/Desktop/TTTT.a
生成的 newPath.a 就包含了2组信息(使用同一组 .h 文件)
- 6 注意
静态库包含 category 需要在项目 other Linker Flags 中添加 -ObjC
framework 库
- 1 创建 .framework (framework)
Framework & Library - Cocoa Touch Static Library
- 2 导入自己的各种文件
使用新建自带的.h文件作为头文件,包含自己的所有 .h 文件
- 3 Build Phases - Copy Files
添加所有想要暴露的文件
- 4 编译生成 .a 文件
1 分为 Debug 版本 Release 版本
2 还分 真机版本 和 模拟器版本
所有共有 4 个版本。
注意设置:
1- Build Active Architecture Only - NO(不然只对应当前设备型号)
2- Mach-OType : Static Library(静态库,不能动态的,苹果不允许)
所以编译时,需要选择上面的 两两组合各编译一次。
成功后 Products - 中的 .a 就变黑了,Show in Finder 找到!
- 5 合并 上面的任意组合 .framework
注意:合并的不是.framework 本身,而是里面的无后缀二进制文件(类似.a)
lipo -create pathA pathB -output newPath
例如:
lipo -create /Users/juyiwei/Desktop/eq/Debug-iphonesimulator/JYWFrameWork.framework/JYWFrameWork /Users/juyiwei/Desktop/eq/Debug-iphoneos/JYWFrameWork.framework/JYWFrameWork -output /Users/juyiwei/Desktop/JYWFrameWork
生成的 newPath 就包含了2组信息(然后替换之前其中一个的就可以拿来用了)
- 6 注意
1 静态库包含 category 需要在项目 other Linker Flags 中添加 -ObjC
2 静态库包含 .dylib或者.tbd,需要在实际项目中导入.dylib或者.tbd动态库,然后需要设置【Allow Non-modular Includes ....】为YES。
1