简介:
- 程序编译通常会经过预处理,编译,汇编,链接。静态库的特点是可执行文件中包含了库代码的完整copy,缺点是如果多次用到会多次copy
- 静态库是在链接阶段被复制到了程序中和运行时无关
- 动态库是在运行时由系统动态加载到内存中,只会加载一次
- 可以制作静态库分为.a库和.framework库
- .a是一个二进制文件不能直接使用至少要加上.h文件;.framework不仅有二进制文件还有资源文件; .a + .h + sourcefile = .framework
- .framework库默认时动态库,但是开发者只能制作.framework形式的静态库
资源文件处理:
- 资源文件中不含xib文件,只有图片,pilist文件等。可以直接将资源文件放入同一个文件夹,然后将文件夹的后缀改为.bundle,直接使用即可。
- 含有xib文件。
- bundle指含有可执行的代码及代码所需的资源,以特定标准的层次结构组合起来的文件夹。“可执行”即经过编译后可直接执行的程序代码
- xib文件在编译之后会变成nib文件。xib文件是XML文件,方便diff比较,进行版本控制;nib是一个二进制文件;bundle中应该是nib形式的文件
- 将xib文件转换成nib文件
- 在framework中使用该bundle时:
NSBundle *mainBundle = [NSBundle bundleForClass:[self class]];
NSBundle *needBundle = [NSBundle bundleWithPath:[mainBundle pathForResource:@"FF0622Bundle" ofType:@"bundle"]];
UIImage *image = [UIImage imageWithContentsOfFile:[[needBundle resourcePath] stringByAppendingPathComponent:@"222.jpg"]]
- 制作bundle
ibtool --errors --warnings --output-format human-readable-text --compile xxx(要生成的nib文件路径) xxx(要转换的xib文件的路径)
制作静态库时设计的lipo命令:
- man xcodebuild 查看xcodebuild简介
- xcdoebuild -showsdks 查看支持的sdk如iphoneos iphonesimulator
- xcdoebuild -showBuildSettings 查看默认的配置信息,需要cd到项目目录下。可以看到BUILD_DIR BUILD_ROOT等信息
- xcodebuild -target xxx -configuration Release -sdk iphoneos clean build BUILD_DIR=XXX BUILD_ROOT=XXX VALID_ARCHS="arm64 armv7" 在指定位置build真机架构
- xcodebuild -target xxx -configuration Release -sdk iphonesimulator clean build BUILD_DIR=XXX BUILD_ROOT=XXX VALID_ARCHS="x86_64 i386" 在指定位置build模拟器架构
- lipo -info xxx 查看支持的架构
- lipo -create xxx xxx -output xxx 合并架构并输出到指定位置
- lipo -remove i386 xxx -output xxx 移除i386架构并将剩余的架构输出到指定位置
- lipo -thin arm64 xxx -output xxx 抽离出arm64架构并输出到指定位置
制作framework静态库
framework静态库
制作.a静态库
.a静态库
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
2018-06-27 易错点。