iOS中.a和.framework静态库的创建与.bundle资源包的使用详解

2020-01-21 02:42:03王旭

   Release运行真机编译会把静态库生成到 Release-iphoneos目录下

   Release运行模拟器编译会把静态库生成到 Release-iphonesimulator目录下

2.Debug版本 VS Release版本

   调试版

      调试版本会包含完整的符号信息,以方便调试

      调试版本不会对代码进行优化

   发布版

      发布版本不会包含完整的符号信息 发布版本的执行代码是进行过优化的

      发布版本的大小会比调试版本的略小

      在执行速度方面,调试版本会更快些,但不意味着会有显著的提升

3.Undefind symbols for architecture arm64(i386)

   原因:是静态库不支持cpu arm64(i386)架构

4.iPhone手机的cpu架构

   模拟器

      iPhone4s,5 是 i386架构

      iPhone5s以后 是x86_64架构

   发布版

      iphone1代,3G,3GS 是 armv6架构

      iPhone4,4s 是 armv7架构

      iphone5,5s,5c 是 armv7s架构

      iPhone6,6s,6plus,6splus 是 arm64架构

5.查看.a库所支持的架构类型

   lipo -info xxx.a

6..a静态库合并

   lipo -create 真机静态库.a 模拟器静态库.a -output 新文件.a

   (最好指定一个目录,否则会默认当前目录)

   只合并Debug版本 或者 只合并Release版本即可。

7.查看.framework库所支持的架构类型

   7.1 进入到framework文件夹中

   7.2 lipo -info Framework 即可

静态库编译错误

1.MRC 错误:会提示好多的autorelease,release,retain等错误

   解决方案:给这个文件MRC编译 或者项目改成MRC环境

2.找不到 <libxml/HTMLparser.h>头文件 编译缺少系统库,配置:Build Settings --> 搜索Header Search Paths --> 配置 $(SDK_DIR)/usr/include/libxml2

3.framework项目,名字中不能带特殊字符 会报 test-framework is not a valid PROJECT_NAME

依赖库错误

1._SCNetWork开头

   导入SystemConfiguration.framework

2._UITypeCopy开头 + _kUITag开头

  导入MobileCoreServices.framework

3._defalate开头 + _inflate开头

  导入 libz.tbd

4._xml开头

  导入libxml2.tbd

引入静态库运行错误

1.运行崩溃

假设不是静态库内部错误,那么就设置项目的Build Settings --> Other Linker Flags --> 为 -ObjC