生成资源bundle的流程

生成资源bundle的流程

组件化之后,每个模块作为一个pod被引用,那么资源放在一个bundle里面会比较方便。资源包括图片、视频、xib编译之后的nib、storyboard、国际化字符串等文件。

xib和storyboard是需要编译的,所以我们需要建立一个可编译的bundle。理论上来说就算当时没有xib和storyboard,为了以后可能会引入这些文件,我们也应该用编译型bundle,有备无患。

1. 添加resource target

进入target list 列表页面,点击加号

选择macOS,搜索bundle,选中bundle,点击下一步

输入target名称,推荐使用格式 XYVivaXXXResource,XXX为模块名称,比如XYVivaTemplateCenter模块的bundle名称为:XYVivaTemplateCenterResource.bundle

然后在项目结构那边可以看到多了一个文件夹

所有的资源文件,全部拖入这个目录,并选择此target。

2. 设置bundle target

打开info.plist,删除Executable file这一行

进入target设置页面,设置architectures为iOS

接着设置combine_hidpi_images 为 NO

3. 添加脚本文件

先列出脚本文件代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash

# 如果工程名称和Bundle的Target名称不一样的话,要自定义FMKNAME
# 例如: FMK_NAME = "MyBundle"
FMK_NAME="XYVivaTemplateCenterResource"
# Install dir will be the final output to the framework.
# The following line create it in the root folder of the current project.
INSTALL_DIR=${SRCROOT}/${FMK_NAME}.bundle
# Working dir will be deleted after the framework creation.
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.bundle
# -configuration ${CONFIGURATION}
# Clean and Building both architectures.
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build

# Cleaning the oldest.
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
rm -rf "${INSTALL_DIR}/_CodeSignature"
rm -rf "${INSTALL_DIR}/info.plist"

首先说明一下脚本文件的作用是什么,很简单,就是使用xcodebuild命令编译出一个bundle,然后copy到项目根目录,还有一步是最后两行代码,它删除了bundle内部的代码签名目录_CodeSignature和配置文件info.plist,这两个东西我们是不需要的。

接着打开项目target,打开build phases,添加一段脚本

然后把刚才那段代码copy进去,更改FMK_NAME为你真实的resource target名称

最后把Run Script移动到Copy Bundle Resources前面

3. 使用这个bundle

cmd+b编译一下先

编译成功之后,你的项目根目录会多出来一个你期望的bundle文件,请添加到项目中来

到现在已经全部完成了,你可以试试编译xib,storyboard,图片这几个资源试试看。

看下面的图片,我已经成功编译了这几个资源