Xcode 和 iOS9 的“Asset packs must be in /OnDemandResources”错误

Posted

技术标签:

【中文标题】Xcode 和 iOS9 的“Asset packs must be in /OnDemandResources”错误【英文标题】:Xcode and iOS9's "Asset packs must be in /OnDemandResources" error 【发布时间】:2015-09-14 19:04:32 【问题描述】:

我已更新到 ios 9 GM 和 Xcode 7 GM,并且正在为我的游戏提交更新。

但是,验证过程现在出现“资产包必须在 /OnDemandResources 中”。错误。

这是日志

2015-09-14 18:50:52 +0000 [MT] 无法生成分发项目 出现错误:错误域 = IDEFoundationErrorDomain 代码 = 1“意外 资产包在 /Applications/churningseas.app/AssetPacks/Dropbox.assetpack。资产 包必须在 /OnDemandResources 中。” UserInfo=NSLocalizedDescription=意外的资产包位于 /Applications/churningseas.app/AssetPacks/Dropbox.assetpack。资产 包必须在 /OnDemandResources 中。

2015-09-14 18:50:52 +0000 [MT] 呈现:错误域 = IDEFoundationErrorDomain 代码 = 1“意外 资产包在 /Applications/churningseas.app/AssetPacks/Dropbox.assetpack。资产 包必须在 /OnDemandResources 中。” UserInfo=NSLocalizedDescription=意外的资产包位于 /Applications/churningseas.app/AssetPacks/Dropbox.assetpack。资产 包必须在 /OnDemandResources 中。

这是我的 Xcode 目录,显示 Assetpacks 当前位于 Ressources 下(我对模糊感到有些疯狂,对此感到抱歉):

我想这是由于 Apple 新的“应用程序精简”系统,我现在并不想将其用于小更新。

有没有办法禁用按需资源?如果没有,如何解决这个问题(我是否只需将我的“Assetpacks”文件夹移动到另一个名为“OnDemandResources”的文件夹)?我这样,在哪里?我有点紧张,搞砸了我的文件结构......

另外,我确实已经查看了构建设置的资产部分,并且“启用按需资源”已经设置为“否”

感谢任何帮助。非常感谢!

【问题讨论】:

【参考方案1】:

自从 iOS 9 引入按需资源以来,这似乎已经成为一个问题。尝试验证档案时,文件夹引用中的术语“AssetPacks”或“assetpack”会导致错误。

因为这似乎会影响 Codea 导出的 2.3.1 及更早版本的项目。这是专门针对 Codea 导出项目的修复:

在导出项目的根目录中找到名为libversion 的文件。它将包含一个版本号,很可能是2.3.1。改成2.3.2 从您的 Libs/ 文件夹中删除 libcodea.alibtools.a 从导出的 Xcode 项目的“资源”组中删除“AssetPacks”文件夹引用 - 如果 Xcode 要求您将文件移动到垃圾箱,请说 NO。 在 Finder 中:将“AssetPacks”文件夹重命名为“Assets” 在 Finder 中:将其中的每个“SomePack.assetpack”文件夹重命名为“SomePack.assets” 将根级“Assets”文件夹拖回 Xcode,告诉 Xcode 将此添加为“文件夹引用”(而不是“组”)

这里有更深入的讨论https://bitbucket.org/TwoLivesLeft/core/issues/366/trying-to-export-xcode-file-so-i-can#comment-22075482

【讨论】:

【参考方案2】:

我花了一段时间才弄清楚这一点,但我似乎得到了一些有用的东西。归档构建后,如果您转到 XCode 的首选项并单击选项卡位置,您将找到归档保存文件的位置。如果您然后单击“档案”部分下方的链接,它将带您进入一个文件夹(您打开该文件夹),其中包含其中的档案。导航到您归档构建的日期,然后(使用获取信息来确定时间)找到您的构建。右键单击它,然后单击“显示包内容”。然后点击产品。创建一个名为“OnDemandResources”的新文件夹。单击应用程序并右键单击文件并打开包内容。根据您资产的先前位置,它们将在那里的某个地方,但对我来说,它们位于一个名为 Assets 的方便文件夹中。找到包含资产的文件夹后,您需要将其复制并删除。在我们之前创建的 OnDemandResources 文件夹中,创建一个新文件夹,命名为您的包包标识符 (com.-----.-----) 并添加到它的末尾: .New.assetpack 。然后将您的 AssetPacks(或 Assets)文件粘贴到其中。现在您要创建一个新的文本编辑文件,将其设置为纯文本,然后键入:bplist00“TTags_CFBundleIdentifier°SNew_?com.Identifier.Identifier.asset-pack-00000008CM2Z9 ')-o 这就是我的意思,我不知道它是否对你有用,但我不明白为什么不。 这种方法对我有用,现在我有一个可用的 .ipa 文件。我希望它对你有用!

【讨论】:

谢谢雨果,我明天试试。我确实希望它可以工作,但是每次我们想要提交构建时我们都必须这样做似乎很疯狂! :D 知道为什么会这样吗? 我有几个问题@Hugo Selvesta:文本文件应该叫什么?是否应该将其保存在具有捆绑 ID 的新文件夹中?另外,这听起来可能很愚蠢,但是我如何从中获得 ipa(我在 xcarchive 文件夹中进行了更改,该文件夹确实包含 ipa,但不仅如此)?这是我的文件夹的样子:dropbox.com/s/fnp1ne3y7svvsn5/… 谢谢!

以上是关于Xcode 和 iOS9 的“Asset packs must be in /OnDemandResources”错误的主要内容,如果未能解决你的问题,请参考以下文章

我的应用程序在 Xcode 10 正式版 Seed 上传的 iOS9.1 和 9.2 设备中崩溃

Xcode10发布App Store,iOS9崩溃

如何在 iOS9.2 上修复 Xcode 错误“找不到开发者磁盘映像”

iOS9 Xcode 7 - 核心数据 - 避免重复对象

在 Xcode 7 ios9 中正常时,UIScrollView 在 xcode8、ios10 中没有响应

iOS9 Share Extension 无法在 Xcode 上调试