在发布版本中找不到故事板

时间:2015-02-18 13:41:42

标签: c# ios xamarin.ios xamarin app-store

我遇到的问题是我的 Debug Ad-Hoc 构建工作正常。只有 AppStore 构建不起作用,这就是它被拒绝的原因。如果我从存档中提取ipa文件(我用于app store发布),则应用程序会在启动时崩溃。 Apple提供的ips日志文件明确说明了

  

无法在捆绑NSBundle xxx中找到名为“MainStoryboard_iPhone”的故事板

在我的on环境中,生成以下符号化日志文件

Exception Type:  EXC_BAD_ACCESS (SIGABRT)
Exception Subtype: KERN_INVALID_ADDRESS at 0xfffffffc
Triggered by Thread:  0

Last Exception Backtrace:
0   CoreFoundation                  0x2c8355f2 __exceptionPreprocess + 122
1   libobjc.A.dylib                 0x3a0a7c72 objc_exception_throw + 34
2   UIKit                           0x3022d2f8 +[UIStoryboard storyboardWithName:bundle:] + 680

所以问题是加载故事板。在我的情况下,我需要访问使用过的故事板实例。因此,我在 Build>中为iPhone和iPad设置主界面为空iOS应用程序。相反,我在我的app delegate中使用以下代码:

if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Phone) {
    Storyboard = UIStoryboard.FromName ("MainStoryboard_iPhone", null);
} else {
    Storyboard = UIStoryboard.FromName ("MainStoryboard_iPad", null);
}

在app委托中,我有一个变量,可以稍后通过AppDelegate.Storyboard.InstantiateViewController("xxx")访问项目中的任何位置。

我认为问题在于这种方法。但是,当我在主界面中设置故事板时,如何访问当前加载的故事板?

首先我认为这与Migrating from Classic to Unified API breaks my project类似,但我有以下设置:

<!-- TODO: check for duplicate items -->
<Target Name="_CopyContentToBundle" DependsOnTargets="_CollectBundleResources;_GenerateBundleName"
    Inputs = "@(_BundleResourceWithLogicalName)"
    Outputs = "@(_BundleResourceWithLogicalName -> '$(_AppBundlePath)%(LogicalName)')" >

1 个答案:

答案 0 :(得分:0)

似乎需要执行清洁构建。我做了以下事情:

  • 构建&gt;全部清理
  • 构建&gt;清理AppName
  • 删除bin和obj文件夹
  • 构建&gt;创建新的AppName

然后是其他(创建存档,验证存档,提交到应用商店)。希望它现在有效。

这就是我尝试重现此问题的方法:

从Xcode的管理器导出ipa文件(保存以进行特别部署)。当设备未连接时,将ipa文件丢弃到iTunes中!然后连接设备,安装并应用更改。

备注自己

在提交到App Store之前测试AppStore版本。