我想通过Xcode目标从我的静态库资源文件创建一个Resource Bundle。我看到Three20有一个需要导入的.bundle文件。我该如何做?
苹果公司不认可此解决方案。我曾与一名在Xcode上工作的开发人员交谈,他们告诉我,在iOS中,资源束不受支持,他们对这个方法能运行感到惊讶。
该解决方案在iOS 9到13上都适用于手机和平板电脑。但是,未来的iOS更新可能会破坏此方法。请注意这一点。
虽然我回答这个问题已经晚了8年,但由于我偶然发现了这个问题,还有其他人可能也会遇到同样的问题,所以我想提供一个有用的答案。
+
我们将在第三步将其转换为iOS Bundle
Base SDK
并将其从macOS
更改为iOS
此时,您的问题(为iOS创建资源包目标)已经完成,但还需要一些配置才能使其正常工作。
-
按钮以删除它们+
按钮以向iOS应用程序添加新的资源包(未显示)完成所有这些步骤后,您将构建一个与iOS兼容的资源包,并将其嵌入到您的应用程序中进行加载。这并不是那么直观,很多文章可能会说这是不受支持的,但我在一款发布的应用中使用了这个功能,它完美地工作。
只需记住,如果您现在想要添加任何资源(PNG、XIB文件等)到您的应用程序中,您需要将它们添加到资源包而不是应用程序中,如下所示:
设置完成后,再次检查您的资源包构建设置。搜索标题为“版本控制系统”的设置。此值必须设置为None
。如果设置为Apple Generic
,则在尝试推送到应用商店时会遇到问题!
Apple的版本控制系统将创建一个*_vers.c
文件,进行编译,并将此二进制文件嵌入您的包中。由于它不是有效的CFBundleExecutable,因此会导致您的应用被拒绝并出现错误ITMS-90171。
[UIImage imageNamed:@"MyBundle.bundle/image.png"];
来加载它。因此,无需通过Xcode目标构建它。实际上,在iOS项目中不可用。您可以在项目中添加复制文件生成阶段或shell脚本。
iOS 2.0+
,而Apple bundle programming指南以文本“Bundles are a fundamental technology in macOS and iOS...”开头。 - TonyLovesDevOps