我正在就如何在我的项目中的 4 个目标之间共享资产寻求建议:A.app、B.app、C.app、D.app
方法 1 - 最佳情况。我试过这个没有成功
- 创建一个 Assets.bundle 目标。
在“运行脚本”阶段,将 Assets.bundle 中的文件复制到 *.app 目标中,如下所示:
cd "${BUILT_PRODUCTS_DIR}" ls Assets.bundle | sed '/Info.plist/d' | xargs -t -I {} cp -r Assets.bundle/{} "${CONTENTS_FOLDER_PATH}/"
但是,当我运行该应用程序时,用户界面看起来不对。.xib 被加载,但没有图像被加载!图像文件和 nib 文件似乎已正确复制到 .app 文件夹中。我的假设是编译的 .nib 文件假定它位于 Assets.bundle 文件夹内,从而解释了为什么它位于 Assets.bundle 文件夹外时不起作用。
我在这种方法中遗漏了什么吗?
方法 2 - 未经测试
创建一个由 {A,B,C,D}.app 目标#imported 的 Assets.xcconfig 文件。
方法 3 - 未经测试
将 A.app 目标中的“复制捆绑资源”镜像到 {B,C,D}.app 目标
使用 ruby 脚本,我可以更新“project.pbxproj”文件。
方法 4 - 我目前的方法
在 {A,B,C,D}.app 目标上手动维护“复制捆绑资源”。
编辑:我想放弃这种“目标会员”方法,因为它是一个大项目,并且有很多人在做出贡献。
方法 5 - 最坏情况
- 创建一个 Assets.bundle 目标。
- 将 Assets.bundle 文件夹复制到 *.app 目标中。
- 更改所有 [NSBundle mainBundle] 代码,因此它使用 Assets.bundle 代替。
在这个项目中,我有 >1000 个图像文件和 >150 个 .xib 文件。有很多遗留代码使用硬编码路径查找。返工需要时间。我在小项目上做了这个改变。这是一个非常优雅的解决方案。然而,这种规模的返工将花费大量时间。