打包Bundle文件
在开发中,有时候需要打包SDK。在打包SDK的时候,需要将工程中的资源文件放入bundle里面以便引用。
Bundle文件可以理解为一个资源包,用于存储图片、音频、文本、nib文件等,方便在其他项目中引用包内的资源。
一、创建bundle文件
创建bundle文件有两种方法
第一种:在工程中直接创建.bundle
文件
command+N
创建新文件
第二种:创建bundle工程
command+shift+N
创建新工程,选中macOS
,选中Bundle创建bundle工程
修改对应的参数配置
“Base SDK”-> 代表Xcode 支持的最高SDK的版本 会引导编译器使用该版本的SDK进行编译和构建应用,主要涉及的是API,你在创建bundle时,使用的是Mac OS,需要改到iOS系统下使用
“Build Active Architecture Only” ,编译的架构 设置为 “YES”
“Debug Information Format” 设置为 “DWARF with dSYM File”
“OS X Deployment Target” 设置为 “Compiler Default”
“Strip Debug Symbols During Copy” 中"Release"模式设置为 “YES”
“IOS Deployment Target” 设置为 你需要支持的最低系统版本,比如,你最低支持系统iOS 8.0配置完成后运行即可生成bundle文件
二、引用文件资源
将文件资源放入bundle包中
/**资源文件 AgricultureResource.bundle下的资源@param name 文件名称@param type 文件类型@param path 子文件夹路径@return 文件路径*/
+ (nullable NSString *)pathFileForResource:(nullable NSString *)name type:(nullable NSString *)type path:(nullable NSString *)filepath {NSURL *url = [[NSBundle mainBundle] URLForResource:@"AgricultureResource.bundle" withExtension:nil];NSBundle *bundle = [NSBundle bundleWithURL:url];NSString *path = [bundle pathForResource:name ofType:type inDirectory:filepath];return path;
}
使用时直接读取文件路径即可
三、图片资源的引用
/**读取bundle里面的图片@param imageName 图片名称@return 返回的图片*/
+ (nullable UIImage *)AGRI_imageNamed:(NSString *)imageName {NSURL *url = [[NSBundle mainBundle] URLForResource:@"AgricultureResource.bundle" withExtension:nil];NSBundle *bundle = [NSBundle bundleWithURL:url];NSString *name = [@"images" stringByAppendingPathComponent:imageName];UIImage *image = [UIImage imageNamed:imageName];//优先取上层bundle 里的图片,如果没有,则用自带资源的图片return image ? image : [UIImage imageNamed:name inBundle:bundle compatibleWithTraitCollection:nil];}
四、xib文件资源的引用
bundle包是静态的,不参与编译,也就意味着,bundle 包中不能包含可执行的文件。它仅仅是作为资源,被解析成为特定的 2 进制数据。
放入Bundle文件中的xib需要编译成nib文件,因为Bundle文件放入项目中后是不会编译的,如果直接将xib放入Bundle文件中,启动项目后会出现报一个加载nib资源文件失败的问题。
将xib制作为nib文件方法:
在创建的bundle工程中,可以将xib打包成nib文件
在网上也有制作nib的命令和脚本iOS开发-Bundle文件中的nib(xib 编译成 nib)
**注意:**生成的nib文件有时只能在11.0之后的系统使用,
例如:nib文件下出现objects-11.0+.nib
这个子文件。
+ (UINib *)bunldeNibWithName:(NSString *)name {NSURL *url = [[NSBundle mainBundle] URLForResource:@"AgricultureResource.bundle" withExtension:nil];NSBundle *bundle = [NSBundle bundleWithURL:url];// 在bundle中的路径NSString *nibName = [@"nib" stringByAppendingPathComponent:name];return [UINib nibWithNibName:name bundle:nil];
}
备注:bundle文件中的nib文件可以直接引用到同文件夹下的图片资源
打包Bundle文件相关推荐
- Android 工程打包资源文件-OBB文件设置
Android 工程打包资源文件-OBB文件设置 设备/引擎:Mac(11.6)/cocos 开发工具:Android studio(4.1.2) 开发语言:java 开发需求:对工程的资源文件进行打 ...
- Webpack打包css文件-css-loader+style-loader
一,前言 之前"webpack介绍"一篇中提到webpack的四个核心概念:entry-入口,output-出口,loader-加载器,plugins-插件前面打包和输出文件使用了 ...
- webpack打包js文件,图片路径错误,没有将图片打包的问题
初用 webpack 进行项目开发的同学会发现:在 js 或者 vue 中引用的图片都没有打包进 bundle 文件夹中.这时是需要require的方式进行图片路径的引用,这样引用的图片就可以成功打包 ...
- Android 打包流程之aapt打包资源文件
上一篇:Android打包流程之资源管理 Android应用最终是以apk的形式放在手机上安装并运行的,而负责将资源文件和代码进行打包的工具就叫appt,全称Android Asset Packagi ...
- ios 图片资源管理的四种方式(Assets,bundle文件,Resource,沙盒文件目录下)
图片资源管理 1. Assets.xcassets 一般是以蓝色的Assets.xcassets的文件夹形式在工程中,以Image Set的形式管理.当一组图片放入的时候同时会生成描述文件Conten ...
- GameFramework:打包资源,打随app发布包,打包生成文件夹说明,上传资源至服务器,下载资源,GameFreamworkList.dat 与GameFrameworkVersion.dat
打包配置 左边为ab包,中间为ab包中内容,右边为项目中资源文件 点击save,SaveConfiguration,保存打包关系到ResourceCollection.xml中 是否使用文件系统,只能 ...
- webpack打包js文件的问题
前言 这里记录下webpack打包js文件的配置和遇到的问题.因环境版本等不同,解决办法未必都是通用的,仅作为大家参考之用: 我的环境配置 macOS M1 系统 webpack版本:(全局版本)we ...
- Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子
Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子 目录 Python打包工具Pyintealler打包py文件为windows exe文件过程 ...
- python 打包wheel文件,自己的SDK包
python 打包wheel文件,自己的SDK包 文章目录 python 打包wheel文件,自己的SDK包 具体参考官方 文件目录结构 `setup.py` `demo.py` `__init__. ...
最新文章
- Nginx内存池实现的了解
- Nature综述: 蓝藻水华的形成机理及防治动态
- SQL SERVER 存储过程执行带输出参数的SQL语句拼接
- java程序输出88的0 1矩阵_《剑指Offer》Java实现--顺时针打印矩阵
- deepin配置JDK
- 架构之旅~底层提供一个统一的GetModel()的重要性
- 拓端tecdat|R语言生存分析可视化分析
- win10系统下Consul持久化
- MATLAB求图像的均值、中值、众数、方差、协方差、相关系数
- 大数据教程,大数据实战教程,大数据教程电信信号强度诊断项目实战
- 数据结构与算法学习资源
- google vr 简介
- python从入门到实践16章答案
- html字母分别代表什么,HTML 编码
- 蓝桥旧题_剪邮票问题
- seo具体是怎么操作的(seo网站优化如何做)
- mysql5.6 rpm安装配置
- StringBuilder.AppendFormat(String, Object, Object) 方法
- 7-14 电话聊天狂人 (25分) 【map】
- DevOps有“政治倾向性”
热门文章
- 基于javaweb个人记账管理系统设计与实现(项目源码+论文+毕业设计任务书)
- 云时代的弄潮儿Marc Benioff
- 对比两个文件不一样的软件
- html文本框只能输入数字和字母,JS限制文本框只能输入数字和字母方法
- 继 1.4亿美国用户遭殃后,Equifax 让40万英国人的信息也面临风险
- videojs动态封面_video.js如何动态的播放视频?
- 现在WEB前端团队协作一点见解
- 业余无线电操作证书及无线电台执照申请指南
- 解决:无法打开包括文件:“xxxx.h”: No such file or dir
- python爬虫学习22