我想通过xcode目标从我的静态库的资源文件创建一个Resource Bundle。我看到Three20有一个需要导入的.bundle文件。
我该怎么做?
答案 0 :(得分:5)
bundle只是一个具有特殊结构和.bundle扩展名的目录。您可以在documentation。
中详细了解具体细节修改强>
重要的是,bundle只是一个以特殊扩展名命名的普通文件夹。例如,如果你有一个名为MyBundle.bundle的文件夹和一个名为image.png的图像,你可以用[UIImage imageNamed:@"MyBundle.bundle/image.png"];
加载它。因此,不需要通过Xcode目标来构建它。实际上,它在iOS项目中不可用。您可以在项目中创建“复制文件”构建阶段,也可以使用shell脚本。
这很简单,也很强大。例如,如果您遵循框架文档中列出的特殊结构,则可以使用简单方法,shell脚本或ant任务或rake文件将静态库构建到Frameworks中。只要输出目录符合结构并命名为Something.framework,您就可以将其用作框架,即使在iOS上也是如此。
答案 1 :(得分:1)
我知道已经晚了8年,但是由于我偶然发现了这个问题,所以其他人很有可能会这样做,所以我想我会提供有用的答案。
+
我们将在步骤3中将其转换为iOS捆绑包
Base SDK
并将此值从macOS
更改为iOS
至此,您的问题在技术上已经完成(为iOS创建Resource Bundle目标),但是需要一些配置才能使其正常工作
-
按钮将其删除+
按钮将新的捆绑包资源添加到iOS应用(未显示)+
按钮以添加新的依赖项完成所有这些步骤后,您将构建与iOS兼容的资源包并将其嵌入要加载的应用程序内部。它不是那么简单,很多文章可能会说不支持此功能,但是我已经在已发布的应用程序中使用了此功能,并且效果很好
请记住,如果要立即向应用程序中添加任何资源(PNG,XIB文件等),则需要将其添加到捆绑包而不是应用程序中,如下所示:>
设置完成后,再次检查资源包的构建设置。查找标题为“ Versioning System”的设置。此值必须设置为None
。如果将其设置为Apple Generic
,当您尝试推送到应用商店时,您会遇到问题!
Apple的版本控制系统将创建一个*_vers.c
文件,对其进行编译,然后将此二进制文件嵌入到您的捆绑软件中。由于这不是有效的CFBundleExecutable,将导致您的应用被拒绝,并显示错误ITMS-90171