管理两个特定于设备的应用程序

Posted

技术标签:

【中文标题】管理两个特定于设备的应用程序【英文标题】:Managing two device-specific applications 【发布时间】:2011-02-15 18:43:28 【问题描述】:

我有一个已发布并在应用商店中的应用。我们现在正在开发该应用程序的 iPad 版本,但我们不会将其作为通用应用程序发布,因为 iPad 版本具有许多不同的功能,不会移植回 iPhone 应用程序。我们的客户还希望应用在不同的 SKU 下发布。

我在 Xcode 中将我的 iPhone 目标升级到 iPad 并选择了“两个特定于设备的应用程序”,但我在 iPad 上运行 iPhone 应用程序时遇到了问题。

应用程序在 iPad 上的 iPhone 模拟器中加载,但随后因以下错误而崩溃:

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法在包中加载 NIB:“NSBundle(已加载)”,名称为“MainWindow-iPad”

在 Info.plist 中,我指定了 2 个不同的 XIB 文件作为 iPhone 和 iPad 的主要 nib 文件。问题是 iPhone 应用程序在 iPad 上加载时会尝试加载 MainWindow-iPad.xib 而不是 iPhone 特定的 MainWindow.xib。

我认为运行两个特定于设备的应用程序的好处是可以轻松地在两个应用程序之间共享代码,但如果我因为这个窗口问题而无法在 iPad 上的模拟器上运行 iPhone 版本,我会有点不走运。

任何帮助都会很棒!

【问题讨论】:

【参考方案1】:

听起来二进制文件认为您正在运行一个通用应用程序。尝试使用单独的 info.plist 文件,每个文件只包含您想要用于该设备的 xib 文件。如果您还没有的话,您可能还需要有两个单独的目标,每个设备一个。

另外,这可能会有所帮助http://cluebucket.com/blog/2010/12/30/universal-apps-ipod-touch/

【讨论】:

啊,我没有考虑使用不同的 Info.plist 文件。我确实为 iPhone 和 iPad 设置了两个单独的目标,但是它们都使用相同的 plist,所以会加载不正确的 MainWindow xib。我会试一试!谢谢! 很高兴听到这个消息。谢谢你告诉我。

以上是关于管理两个特定于设备的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

需要生成特定于设备 ID 的访问密钥(Android 应用程序的 android_id)

iOS 上特定于应用程序的数据保护

加载特定于设备的 iPad/iPhone UIViewController nib 失败,带有 .mm 文件

是否有可用的事件(在 xamarin 或特定于平台的)可用于收听用户设备时间的任何变化?

android 多个 videoView 问题,特定于 Galaxy Tab

录制视频时出现 RuntimeException [特定于设备]