iOS 应用程序在使用 Realm 和 Crashlytics 通过 testflight 启动时冻结

Posted

技术标签:

【中文标题】iOS 应用程序在使用 Realm 和 Crashlytics 通过 testflight 启动时冻结【英文标题】:iOS app freeze when launched through testflight with Realm and Crashlytics 【发布时间】:2016-03-13 18:53:01 【问题描述】:

在提交应用程序进行 Beta 审核后,它会因为在 iPad 上启动到空白屏幕而被拒绝。

我已经在多个 iphone 和模拟器上进行了测试,但无法重现任何内容。重现这一点的唯一方法是在 Testflight 应用程序本身中按下“打开”按钮。按主屏幕上的图标始终有效(即使是在从 testflight 中崩溃的 iPad 上)。

通过 USB 连接时,我检查 Xcode 设备中的日志:

... <Warning>: [Crashlytics] Version 3.7.0 (102)
... <Warning>: [Crashlytics:Crash] Warning: NSUncaughtExceptionHandler is '_ZZ34RLMInstallUncaughtExceptionHandlerEN3$_08__invokeEP11NSException' in '/private/var/mobile/Containers/Bundle/Application/DF8A0CBE-99D1-4466-ACAE-F1BB7D8DA4BC/Feeder.app/Frameworks/Realm.framework/Realm'

在最后一行它就停止了。没有更多的调试消息。 launchscreen.xib 消失,屏幕变为白色。它不会崩溃或任何事情。

我试过了:

    Fabric 和 Crashlytics 的不同版本 移除 Fabric 和 Crashlytics 完全移动 Realm 的初始化 重写应用程序的启动方式 Realm 的不同版本(0.96 和 0.98.4)

【问题讨论】:

您是否尝试过使用“发布”配置在本地构建和运行应用程序以查看问题是否出现?此外,刚刚发布了一个全新的Realm版本,0.98.5;你试过了吗? 【参考方案1】:

我发现了这个问题,它与 Realm 或 Crashlytics 无关。我的 AppDelegate 中有这段代码:

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate 

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
        // This breaks it
        for window in application.windows 
            window.backgroundColor = UIColor.whiteColor()
        

        // this works...
        // window?.backgroundColor = UIColor.whiteColor()

        return true
    


【讨论】:

以上是关于iOS 应用程序在使用 Realm 和 Crashlytics 通过 testflight 启动时冻结的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用 RestKit 和 Realm.io 吗?

主包中的 Realm realmWithPath 方法在 iOS 上崩溃

iOS 数据库比较:SQLite vs Core Data vs Realm

一起使用 Realm.io 和 RestKit 时的属性数据类型

带有 AnyObject 下标的 Realm.io

在 IOS(Objective-C)中有效地解析 JSON 到 Realm DB