论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
移动端开发
›
IOS
›
iOS之怎样创建.framework静态库
iOS之怎样创建.framework静态库
耶耶耶耶耶
金牌会员
|
2024-9-5 20:10:20
|
显示全部楼层
|
阅读模式
楼主
主题
768
|
帖子
768
|
积分
2304
番外:想要查看怎样创建.a静态库可前往看我iOS之怎样创建.a静态库-CSDN博客这篇文章。
一、创建framework项目
创建framework工程要选择iOS --> Cocoa Touch Framework
输入项目名称PrintFramework也是编译生成的framework的名称。
framework的名称也可以以后在项目中更改
将需要打包成framework静态库的文件资源等拖拽进该项目。
二、配置framework
1. Build Settings 配置
Product Name: 最终编译出来的Framework文件的名称
Mach_O Type: 选中static Library(静态库)
Architectures :支持的CPU指令集
Build Active Architecture Only: 设置为NO
Base SDK: 选择iOS
iOS Deployment target:framework支持的最低iOS版本
2. Build Phases 配置
在Link Binary With Libraries中添加项目的依赖库
Compile Sources:framework 中包罗的实现代码
Copy Bundle Resources:项目中使用到的资源文件,图片,XIB文件,plist文件等 (发起将资源文件放到新建的Bundle中,下面会介绍Bundle的创建和使用)
headers:将需要袒露出来的头文件添加到public分组下,需要隐藏的头文件添加到project分组下
三、创建Bundle
如果项目中用到了图片、Xib等资源时需要创建一个Bundle:File - New - Target - macOS - Bundle。
温馨提示
:
在创建Bundle时的名称不能和framework的名称一样,一样会导致失败。
配置Bundle
:
选中BundleTarget,Product Name - 修改Bundle名称,博主这里叫PrintFramework。
Base SDK:修改为iOS。
Supported Platforms:修改为iOS。
Enable Bitcode:设置为NO。
COMBILE_HIDPI_IMAGES:设置为NO。(避免Bundle中的图片变成tiff格式而无法使用)
将创建好的Bundle添加到framework项目的依赖中去。
五、使用Bundle
在framework中使用bundle中的资源不能直接通过资源的名称来获取。
[UIImage imageNamed:@"logo.png"];
复制代码
这种方法获取不到logo.png图片。
正确的方式是:先获取到bundle的路径,然后再将资源文件的路径拼接到bundle路径背面才气获取到资源。如下
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"PrintFramework.bundle" ofType:@"bundle"];
NSString *imagePath = [bundlePath stringByAppendingString:@"/logo.png"];
UIImage *image = [UIImage imageNamed:imagePath];
复制代码
六、编译项目
编译生成framework静态库之前先将framework对应的scheme中的run 的值改成 Release
编译真机项目
在设备列表中选中Generic Device
使用快捷键 CMD + B 编译项目
编译模拟器项目
在设备列表中选择一个模拟器
使用快捷键 CMD + B 编译项目
之后会看到在products 分组下的PrintFramework.framework变成黑色。
选中PrintFramework.framework右键,选择Open In Finder 可以看到编译好的两个bundle文件。
七、合成模拟器和真机通用的framework静态库
之前编译生成的两个静态库分别支持模拟器和真机的使用。但是在实际开发中需要即支持模拟器又支持真机使用的静态库怎么办?这个问题当然可以办理,那就是将两个静态库合并生成一个通用的静态库。可以在mac终端中使用下面的下令合成
lipo -create path1/PrintFramework.bundle/PrintFramework path2/PrintFramework.bundle/PrintFramework -output path3/PrintFramework
复制代码
path1和path2分别是模拟器和真机的静态库的路径。path3是合成之后的文件的存放路径。
八、framework 的使用
将framework拖入到要使用framework的工程,并在项目的Build Phases 的 Link Binary Resources中添加framework。
framework使用到的Bundle要添加到工程的Copy Bundle Resources中。不然项目是找不到Bundle中的资源文件的,那么Bundle也就无法正常使用资源文件。
如果framework中使用到了Category 那么在使用framework的工程中要设置 Build Settings中的Other Link Flag 为 -ObjC或者-all_load
如果framework有使用系统库,那么也要在使用framework的工程中将这些系统库添加到工程中。不然会报编译错误
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
耶耶耶耶耶
金牌会员
这个人很懒什么都没写!
楼主热帖
为什么你应该停止依赖Jenkins的插件? ...
集合论第6-8章
蜻蜓优化算法(Matlab完整代码实现) ...
腾讯云多媒体文件处理总结
SQL 教程之 10 个 SQL 操作用于 80% 的 ...
axios&spring前后端分离传参规范总结 ...
20220319编译OpenHarmony-v3.1-beta出 ...
Python知识点(史上最全)
计算机的存储容量单位
MySQL InnoDB索引原理
标签云
挺好的
服务器
快速回复
返回顶部
返回列表