iOS 崩溃:无法在 Path 中打开领域

Posted

技术标签:

【中文标题】iOS 崩溃:无法在 Path 中打开领域【英文标题】:iOS crash : Unable to open a realm at Path 【发布时间】:2019-05-28 16:29:05 【问题描述】:

我在 Crashlytics 上看到了许多崩溃,但无法重现应用启动时发生的崩溃。有谁知道如何重现以下崩溃。我已经尝试了 Github 和 *** 上的所有答案,但没有人提到重现这个特定的崩溃。 因此,如果我确实有修复程序,那么除了将修复程序投入生产然后假设 Crashlytics 不会显示崩溃之外,没有办法对其进行测试。

请帮忙。

错误:

Fatal error: 'try!' expression unexpectedly raised an error: Error Domain=io.realm Code=2 "Unable to open a realm at path '/var/mobile/Containers/Data/Application/03BA7C37-9852-4A01-8EF6-949E308EADCD/Documents/default.realm.lock': open() failed: Operation not permitted." UserInfo=Error Code=2, NSFilePath=/var/mobile/Containers/Data/Application/03BA7C37-9852-4A01-8EF6-949E308EADCD/Documents/default.realm.lock,

调用代码

//passing the fileProtectionType as .none
RealmHelper.configureRealmFiles(with: .none)

示例代码

   static func configureRealmFiles(with fileProtectionType: FileProtectionType) 
            guard let folderPath = realm.configuration.fileURL?.deletingLastPathComponent().path else 
                return
            

            do 
                try FileManager.default.setAttributes([FileAttributeKey.protectionKey: fileProtectionType],
                                                      ofItemAtPath: folderPath)
             catch 
                logI("Realm: Couldn't change Realm file protection type")
            
        

【问题讨论】:

您是否尝试过关闭沙盒(如果它已打开)?在左列中选择项目,然后选择 Capabilities 选项卡->Sandboxing。 请分享您的代码。尤其是在应用启动时使用Realm 的那个。 @Václav 我已更新问题以获得代码。有没有办法复制崩溃本身以了解这种情况何时发生? 哈哈。我知道。这就是为什么我要问您是否在关闭沙盒​​的情况下尝试过 @Jay 如果我无法更改 ios 应用项目的沙盒,我将如何关闭它?我也没有这样做。当您将应用程序发布到应用商店时,是否可以关闭沙箱?另外,我的问题更多是关于如何复制此崩溃,如果您也可以提供帮助。 【参考方案1】:

Realm documentation 有一些关于如何处理这个错误的信息。检查他们降级文件访问属性的说明是否适合您的情况。

【讨论】:

我正在使用 FileManager.default.setAttributes 并将 fileProtectionType 传递给 .none 这会是个问题吗?【参考方案2】:

在新位置添加 default.realm.lock 可以解决问题并阻止崩溃再次出现。但是我永远无法复制崩溃。这是因为它可能在后台发生。

【讨论】:

你能解释一下吗?【参考方案3】:

从项目中删除领域 pod 并重新安装它对我有帮助:)

【讨论】:

如果某些东西已经在生产和使用中,那么使用我建议的解决方案就可以了。

以上是关于iOS 崩溃:无法在 Path 中打开领域的主要内容,如果未能解决你的问题,请参考以下文章

应用程序打开启动屏幕但崩溃(在 iOS 设备上)

在推送消息时打开崩溃的iOS

打开相机时 Flutter Image_Picker 崩溃 iOS 应用

React Native IOS App 在没有网络连接时崩溃

iOS Wikiitude SDK 在退出/重新打开应用时崩溃

15行代码让苹果设备崩溃,iOS 12也无法幸免