我遇到的问题是我的 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)')" >
答案 0 :(得分:0)
似乎需要执行清洁构建。我做了以下事情:
然后是其他(创建存档,验证存档,提交到应用商店)。希望它现在有效。
这就是我尝试重现此问题的方法:
从Xcode的管理器导出ipa文件(保存以进行特别部署)。当设备未连接时,将ipa文件丢弃到iTunes中!然后连接设备,安装并应用更改。
备注自己:
在提交到App Store之前测试AppStore版本。