Xcode iOS Build - 仅将特定子文件夹复制为捆绑资源
Posted
技术标签:
【中文标题】Xcode iOS Build - 仅将特定子文件夹复制为捆绑资源【英文标题】:Xcode iOS Build - copy only specific sub-folders as Bundle Resources 【发布时间】:2013-12-17 08:01:17 【问题描述】:我之前曾在这方面与 Xcode 进行过斗争,我想在其中添加要复制到构建的应用程序包中的文件和目录列表,而 XCode 只想让我添加整个文件夹。现在我需要一个合适的解决方案...
我有一个包含多个目标的工作区,每个应用程序一个。我有一个包含大量资产/数据文件的目录结构,其结构有点像这样:
- Data
|- Common
| |-Scripts
| |-Images
|- AppA
| |-Scripts
| |-Images
|- AppB
| |-Scripts
| |-Images
我想将 Data/Common/* 添加到我的目标 AppA 和 AppB,然后将 Data/AppA/* 添加到 AppA 等。
我发现如果我在 XCode 项目中添加对 Data 的文件夹引用,我无法选择工作区 - 我只能设置与 Data 关联的目标。
我可以分别为每个子文件夹添加文件夹引用,但我认为这会破坏我想要实现的目录结构。此外,它似乎变得一团糟......说我不希望两个应用程序中的 all 通用,而是为每个应用程序挑选某些子目录/文件?
那么,是否在 XCode[4] 中有一种更随意的方式来告诉它哪些文件在哪里?我知道我可以编写一个自定义的 bash 脚本构建阶段,实际上我曾经这样做过,但这对构建性能非常不利。
【问题讨论】:
【参考方案1】:选项 1) 创建一个 bash 安装程序并对主项目中的路径进行硬编码:
## Compression Script
mkdir -vp installer/payload
cd installer/
tar tvf files.tar
echo "Running Installer"
mkdir $HOME/files
tar ./files.tar -C $HOME/files
## Decompression Script
#!/bin/bash
echo ""
echo "Self Extracting Installer"
echo ""
export TMPDIR=`mktemp -d /tmp/selfextract.XXXXXX`
ARCHIVE=`awk '/^__ARCHIVE_BELOW__/ print NR + 1; exit 0; ' $0`
tail -n+$ARCHIVE $0 | tar xzv -C $TMPDIR
CDIR=`pwd`
cd $TMPDIR
./installer
cd $CDIR
rm -rf $TMPDIR
exit 0
__ARCHIVE_BELOW__
选项 2) 像这样使用 pkgbuild、productbuild 和 pkgutil:
Making OS X Installer Packages like a Pro - Xcode Developer ID ready pkg
【讨论】:
我不清楚,因为我不太了解 XCode/OSX - 这是否仅适用于 ios 或 OSX? 如果您小心地将它们引用地添加到构建阶段,它不会破坏目录结构。以上是关于Xcode iOS Build - 仅将特定子文件夹复制为捆绑资源的主要内容,如果未能解决你的问题,请参考以下文章
如何仅将 css 样式应用于特定的 Vue 组件及其子组件?
为啥“cordova build ios”不更新 Xcode 项目?