iOS - Bundle 资源文件包

简介: 1、Bundle 文件Bundle 文件,简单理解,就是资源文件包。我们将许多图片、XIB、文本文件组织在一起,打包成一个 Bundle 文件。方便在其他项目中引用包内的资源。Bundle 文件是静态的,也就是说,我们包含到包中的资源文件作为一个资源包是不参加项目编译的。

1、Bundle 文件

  • Bundle 文件,简单理解,就是资源文件包。我们将许多图片、XIB、文本文件组织在一起,打包成一个 Bundle 文件。方便在其他项目中引用包内的资源。

  • Bundle 文件是静态的,也就是说,我们包含到包中的资源文件作为一个资源包是不参加项目编译的。也就意味着,bundle 包中不能包含可执行的文件。它仅仅是作为资源,被解析成为特定的 2 进制数据。

2、制作 Bundle 文件

  • 1、新建 Bundle 项目

    • 创建名为 SourcesBundle(最后要生成的 Bundle 文件名称)的工程,注意 Bundle 默认是 macOS 系统的,Xcode 高版本中需要在 macOS => Framework & Library 选项下找到。

      bundle1

      bundle2

      bundle3

  • 2、修改 Bundle 配置信息

    • 因为 Bundle 默认是 macOS 系统的,所有需要修改他的信息,修改成 iOS 系统。

      bundle4

    • 设置 Build Setting 中的 COMBINE_HIDPI_IMAGES 为 NO,否则 Bundle 中的图片就是 tiff 格式了。

      bundle5

  • 3、可选配置

    • 作为资源包,仅仅需要编译就好,无需安装相关的配置,设置 Skip Install 为 YES。同样要删除安装路径 Installation Directory 的值。

      bundle14

      bundle15

    • 该资源包的 pch 文件和 strings 文件是可以删除的。

      bundle16

  • 4、添加文件

    • 将资源文件或文件夹拖动到工程中的 SourcesBundle 文件夹下面。

      bundle6

      bundle7

  • 5、编译生成 Bundle 文件

    • 我们分别选择 Generic iOS Device 和任意一个模拟器各编译一次,编译完后,我们会看到工程中 Products 文件夹下的 SourcesBundle.bundle 由红色变成了黑色。

      bundle8

      bundle9

      bundle10

    • 然后 show in finder,看看生成的文件。我们看到它为真机和模拟器都生成了 .bundle 资源文件。

      bundle11

      bundle12

    • 选中 .bundle 文件右键 显示包内容,我们可以看到之前拖拽到工程中的资源文件都在其中。

      bundle13

      bundle17

3、使用 Bundle 文件

  • 将生成的真机(Debug-iphoneos)Bundle 资源文件拖拽到需要使用的工程中。

    bundle18

  • 1、加载 Bundle 中的 xib 资源文件

        // 设置文件路径
        NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"SourcesBundle" ofType:@"bundle"];
        NSBundle *resourceBundle = [NSBundle bundleWithPath:bundlePath];
    
        // 加载 nib 文件
        UINib *nib = [UINib nibWithNibName:@"BundleDemo" bundle:resourceBundle];
        NSArray *viewObjs = [nib instantiateWithOwner:nil options:nil];
    
        // 获取 xib 文件
        UIView *view = viewObjs.lastObject;
    
        view.frame = CGRectMake(20, 50, self.view.bounds.size.width - 40, self.view.bounds.size.width - 40);
        [self.view addSubview:view];
    • 效果

      bundle19

  • 2、加载 Bundle 中的图片资源文件

    • 指定绝对路径的形式

          UIImage *image = [UIImage imageNamed:@"SourcesBundle.bundle/demo2.jpg"];
    • 拼接路径的形式

          NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"SourcesBundle" ofType:@"bundle"];
          NSString *imgPath= [bundlePath stringByAppendingPathComponent:@"demo4"];
      
          UIImage *image = [UIImage imageWithContentsOfFile:imgPath];
    • 宏定义的形式

          #define MYBUNDLE_NAME   @"SourcesBundle.bundle"
          #define MYBUNDLE_PATH   [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:MYBUNDLE_NAME]
          #define MYBUNDLE        [NSBundle bundleWithPath:MYBUNDLE_PATH]
      
          NSString *imgPath= [MYBUNDLE_PATH stringByAppendingPathComponent:@"demo4"];
          UIImage *image = [UIImage imageWithContentsOfFile:imgPath];
    • 效果

      bundle20bundle21

目录
相关文章
|
3月前
|
API 开发工具 iOS开发
iOS 开发高效率工具包:10 大必备工具
iOS 开发高效率工具包:10 大必备工具
42 1
|
JSON 自然语言处理 Dart
Alibaba.com瘦包40MB——业界最全的iOS包大小技术总结
本文总结提炼了Alibaba.com App的瘦身的技术和策略,系统化地介绍APP瘦身的业务价值、分析技术、瘦身技术、防劣化机制,让读者可以系统化地了解APP瘦身的技术体系。并基于实践经验,介绍各种瘦身技术的ROI,让读者可以避免踩雷,将资源浪费在效果不佳的技术上。希望对你有所帮助。
Alibaba.com瘦包40MB——业界最全的iOS包大小技术总结
|
23天前
|
Linux iOS开发 开发者
ios ipa包上传需要什么工具
ios ipa包上传需要什么工具
24 0
|
2月前
|
Linux iOS开发 开发者
ios ipa 包上传需要什么工具
ios ipa 包上传需要什么工具
|
4月前
|
移动开发 开发工具 iOS开发
iOS 开发高效率工具包:10 大必备工具
Ipa Guard是一款功能强大的ipa混淆工具,不需要ios app源码,直接对ipa文件进行混淆加密。可对IOS ipa 文件的代码,代码库,资源文件等进行混淆保护。 可以根据设置对函数名、变量名、类名等关键代码进行重命名和混淆处理,降低代码的可读性,增加ipa破解反编译难度。可以对图片,资源,配置等进行修改名称,修改md5。只要是ipa都可以,不限制OC,Swift,Flutter,React Native,H5类app。
|
6月前
|
存储 物联网 数据安全/隐私保护
iOS开发证书、bundle ID、App ID、描述文件、p12文件,及企业证书打包发布详述
iOS开发证书、bundle ID、App ID、描述文件、p12文件,及企业证书打包发布详述
|
7月前
|
网络安全 iOS开发 开发者
frida环境配置、以及如何脱壳iOS包并安装到非越狱设备-制作iOS任意App分身
frida环境配置、以及如何脱壳iOS包并安装到非越狱设备-制作iOS任意App分身
958 1
|
8月前
|
Linux iOS开发 开发者
ios ipa包上传需要什么工具
iOS IPA包是iOS应用程序的安装包,可以通过iTunes或者其他第三方应用商店安装到iOS设备上。在开发iOS应用程序时,开发人员需要将应用程序打包成IPA包,然后上传到App Store或者
ios ipa包上传需要什么工具
|
编解码 数据安全/隐私保护 Android开发
iOS上架及ipa包上传到AppStore
开发uniapp的app的时候,需要ios证书进行打包,打包后还需要将打包后的ipa上架,这样普通的使用者才能安装,ios应用无法像安卓那样将ipa文件发布在自己的服务器,然后安装,ios需要将ipa上传到app store上架,用户才能安装。 因此,我们上架的前提是需要一个打包的证书和证书profile文件,假如你还不清楚如何申请ios证书,可以参考这篇文章
298 0
iOS上架及ipa包上传到AppStore
|
开发工具 iOS开发 Perl
iOS SDK封装Framework带资源文件封装(二)
iOS SDK封装Framework带资源文件封装
 iOS SDK封装Framework带资源文件封装(二)