在开发中,有时候需要打包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文件相关推荐

  1. Android 工程打包资源文件-OBB文件设置

    Android 工程打包资源文件-OBB文件设置 设备/引擎:Mac(11.6)/cocos 开发工具:Android studio(4.1.2) 开发语言:java 开发需求:对工程的资源文件进行打 ...

  2. Webpack打包css文件-css-loader+style-loader

    一,前言 之前"webpack介绍"一篇中提到webpack的四个核心概念:entry-入口,output-出口,loader-加载器,plugins-插件前面打包和输出文件使用了 ...

  3. webpack打包js文件,图片路径错误,没有将图片打包的问题

    初用 webpack 进行项目开发的同学会发现:在 js 或者 vue 中引用的图片都没有打包进 bundle 文件夹中.这时是需要require的方式进行图片路径的引用,这样引用的图片就可以成功打包 ...

  4. Android 打包流程之aapt打包资源文件

    上一篇:Android打包流程之资源管理 Android应用最终是以apk的形式放在手机上安装并运行的,而负责将资源文件和代码进行打包的工具就叫appt,全称Android Asset Packagi ...

  5. ios 图片资源管理的四种方式(Assets,bundle文件,Resource,沙盒文件目录下)

    图片资源管理 1. Assets.xcassets 一般是以蓝色的Assets.xcassets的文件夹形式在工程中,以Image Set的形式管理.当一组图片放入的时候同时会生成描述文件Conten ...

  6. GameFramework:打包资源,打随app发布包,打包生成文件夹说明,上传资源至服务器,下载资源,GameFreamworkList.dat 与GameFrameworkVersion.dat

    打包配置 左边为ab包,中间为ab包中内容,右边为项目中资源文件 点击save,SaveConfiguration,保存打包关系到ResourceCollection.xml中 是否使用文件系统,只能 ...

  7. webpack打包js文件的问题

    前言 这里记录下webpack打包js文件的配置和遇到的问题.因环境版本等不同,解决办法未必都是通用的,仅作为大家参考之用: 我的环境配置 macOS M1 系统 webpack版本:(全局版本)we ...

  8. Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子

    Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子 目录 Python打包工具Pyintealler打包py文件为windows exe文件过程 ...

  9. python 打包wheel文件,自己的SDK包

    python 打包wheel文件,自己的SDK包 文章目录 python 打包wheel文件,自己的SDK包 具体参考官方 文件目录结构 `setup.py` `demo.py` `__init__. ...

最新文章

  1. Nginx内存池实现的了解
  2. Nature综述: 蓝藻水华的形成机理及防治动态
  3. SQL SERVER 存储过程执行带输出参数的SQL语句拼接
  4. java程序输出88的0 1矩阵_《剑指Offer》Java实现--顺时针打印矩阵
  5. deepin配置JDK
  6. 架构之旅~底层提供一个统一的GetModel()的重要性
  7. 拓端tecdat|R语言生存分析可视化分析
  8. win10系统下Consul持久化
  9. MATLAB求图像的均值、中值、众数、方差、协方差、相关系数
  10. 大数据教程,大数据实战教程,大数据教程电信信号强度诊断项目实战
  11. 数据结构与算法学习资源
  12. google vr 简介
  13. python从入门到实践16章答案
  14. html字母分别代表什么,HTML 编码
  15. 蓝桥旧题_剪邮票问题
  16. seo具体是怎么操作的(seo网站优化如何做)
  17. mysql5.6 rpm安装配置
  18. StringBuilder.AppendFormat(String, Object, Object) 方法
  19. 7-14 电话聊天狂人 (25分) 【map】
  20. DevOps有“政治倾向性”

热门文章

  1. 基于javaweb个人记账管理系统设计与实现(项目源码+论文+毕业设计任务书)
  2. 云时代的弄潮儿Marc Benioff
  3. 对比两个文件不一样的软件
  4. html文本框只能输入数字和字母,JS限制文本框只能输入数字和字母方法
  5. 继 1.4亿美国用户遭殃后,Equifax 让40万英国人的信息也面临风险
  6. videojs动态封面_video.js如何动态的播放视频?
  7. 现在WEB前端团队协作一点见解
  8. 业余无线电操作证书及无线电台执照申请指南
  9. 解决:无法打开包括文件:“xxxx.h”: No such file or dir
  10. python爬虫学习22