静态库
静态库中默认只打包系统自带的类,自定义的类需要在 "项目 -->Build Phases -->Copy Files "中添加自定的类
在模拟器和真机状态下编译,在finder中即可找到所需要的.a文件.生成模拟器和真机版本。如果没有对应使用,会出现类似: Undefined symbols for architecture i386: -->不能运行在i386架构上
架构介绍:
/*
模拟器架构:
4 / 4S / 5 / 5C: i386 32位
5S / 6 / 6p / 6s / 6ps : x86_64 64位
真机架构:
4 / 4S : armv7 32位
5 / 5C : armv7s 32位
5S / 6 / 6p / 6s / 6ps: arm64 64位
*/
/*
查看静态库支持架构:lipo -info xxxxx.a
*/
/*
合并架构方法一:
lipo -create xxxxxx.a kkkkkk.a -output nnnnnnn.a
合并架构方法二:
选中项目 --> Build Settings -->Build Active .... --> Debug --> NO
*/
/*
Debug: 开发环境 更丰富的调试代码,运行效率稍低,开发人员使用
Release: 发布环境 运行效率高,发布正式版本时使用
*/
关于合并架构的建议:当.a文件体积小时,可以考虑将真机和模拟器架构合并 好处:不用切换模拟器和真机 缺点:体积增大
当使用资源时,应该手动导入bundle包。在代码中加载资源包文件时,应该加上资源包的路径。要考虑避免资源包与别人app中文件重名的情形。
动态库
制作Framework时,和.a文件大体相似,合并结构等功能在两个版本中都可以使用。
注意:framework默认导出的是动态库,如果要使用需要在项目工程中 targets --> general --> Embedded Binaries中添加framework.动态库不可以上传到app store //如果没导入报错 Reason: image not found
修改动态库: 选中项目 -->targets -->Build Settings --> 搜索mach -->修改为静态库
边开发边调试framework时导入framework用双引号,不需要尖括号
使用动态库的时候需要在
build phases里面把头文件全部放到PUBLIC里面才能使用
网友评论