ste*_*esu 11
Apple 不认可此解决方案。当我与一位在 Xcode 上工作的 Apple 开发人员交谈时,他们告诉我iOS不支持资源包,他们很惊讶这竟然有效。
这个解决方案在 iOS 9 到 13 上对我有用,包括手机和平板电脑。但是,未来对 iOS 的更新可能会破坏这一点。请注意这一点。
我知道已经晚了 8 年,但是由于我偶然发现了这个问题,因此其他人很有可能会这样做,所以我想我会提供一个有用的答案。
+目标列表底部的我们将在步骤 3 中将其转换为 iOS Bundle
Base SDK并将此值从 更改macOS为iOS在这一点上,您在技术上已经完成了您的问题(为 iOS 创建资源包目标),但是需要一些配置才能使其正常工作
-按钮将它们移除+按钮向 iOS 应用程序添加新的捆绑资源(未图示)+按钮添加新的依赖项完成所有这些步骤后,您将构建一个与 iOS 兼容的资源包并将其嵌入到要加载的应用程序中。这不是那么简单,很多文章可能会说这是不受支持的,但我已经在已发布的应用程序中使用了此功能,并且效果很好
请记住,如果您现在想向您的应用程序添加任何资源(PNG、XIB 文件等),您需要将它们添加到包而不是应用程序,如下所示:
设置完成后,再检查一次资源包的构建设置。查找标题为“版本控制系统”的设置。此值必须设置为None。如果设置为Apple Generic,当您尝试推送到应用商店时会遇到问题!
Apple 的版本控制系统将创建一个*_vers.c文件,编译它,然后将此二进制文件嵌入到您的包中。由于这不是有效的 CFBundleExecutable,它会导致您的应用程序被拒绝并出现错误 ITMS-90171
bundle只是一个具有特殊结构和.bundle扩展名的目录.您可以在文档中阅读有关详细信息的更多信息.
编辑:
重要的是,bundle只是一个以特殊扩展名命名的普通文件夹.例如,如果你有一个名为MyBundle.bundle的文件夹和一个名为image.png的图像,你可以加载它.[UIImage imageNamed:@"MyBundle.bundle/image.png"]; 因此,不需要通过Xcode目标来构建它.实际上,它在iOS项目中不可用.您可以在项目中创建"复制文件"构建阶段,也可以使用shell脚本.
这很简单,也很强大.例如,如果您遵循框架文档中列出的特殊结构,则可以使用简单方法,shell脚本或ant任务或rake文件将静态库构建到Frameworks中.只要输出目录符合结构并命名为Something.framework,您就可以将其用作Framework,即使在iOS上也是如此.
| 归档时间: |
|
| 查看次数: |
7451 次 |
| 最近记录: |