Sencha touch/cordova 应用程序在 ios8 启动时随机崩溃

Posted

技术标签:

【中文标题】Sencha touch/cordova 应用程序在 ios8 启动时随机崩溃【英文标题】:Sencha touch/cordova app randomly crashes on startup in ios8 【发布时间】:2014-10-03 06:08:31 【问题描述】:

我的应用是用 sencha touch 2.4 编写的,并使用了最新版本的 cordova。自 ios8 以来,我遇到了应用程序随机崩溃的问题。只有当我完全关闭应用程序时才会发生这种情况,而且只是有时。在显示初始屏幕后,崩溃似乎直接发生。煎茶触摸加载图标不会出现,应用程序只是关闭。如果我尝试再次打开该应用程序,它可以工作。

我几乎立即使用 localstorage 来填充用户名等,我试图将其删除,因为我读到它会导致问题,但它没有帮助。

编辑: 经过更多调查,我现在收到此错误:

[UIViewAnimationState release]: message sent to deallocated instance 0x17675080

它出现在一个全新的 cordova/sencha touch 示例项目中,并且使用 iOS8。 知道这可能是什么原因吗? 有什么提示可以调试这个问题吗?

编辑2: Sencha 表示他们不会在下一个版本 2.4.1 之前正式支持 ios8。 http://www.sencha.com/forum/showthread.php?292883-Touch-2.4.0-apps-crashing-on-iOS8

编辑3: 我想我可以通过遵循上面链接的论坛线程中的建议来改进这一点。我将 sencha touch、sencha cmd 和 cordova 更新到了最新版本,并为 cordova 安装了 splashscreen-plugin。从那以后我没有遇到过启动崩溃,希望这已经解决了这个问题。

【问题讨论】:

好的,这似乎与Sencha Touch 和或Cordova 没有直接关系,正如bugzilla.xamarin.com/show_bug.cgi?id=23667 关于Xamarin 的错误报告所证明的那样。 Xamarin 是一个用于构建原生移动应用程序的 .NET 框架,因此这证明它不是 Cordova/Phonegap 错误,另外他们重现了将网页加载到 WebView 中的错误,这证明它不是 Sencha Touch 错误。似乎更有可能是 javascriptCore 错误。 【参考方案1】:

编辑 24/03/2015

我们找到了这个插件https://github.com/Telerik-Verified-Plugins/WKWebView,它使用新的 WKWebView 而不是旧的 UIWebView 修复了随机崩溃。


这似乎与 Sencha Touch 或 Cordova 没有直接关系,正如 Xamarin 上的 bug report 所证明的那样。

Xamarin 是一个构建原生移动应用程序的 .NET 框架,因此这意味着它不是 Cordova/Phonegap 错误,另外错误报告者重现了将 http://www.xamarin.com 网页加载到 WebView 中的错误,这证明它不是 Sencha Touch漏洞。他说“这似乎更可能是 JavaScriptCore 错误”。

错误报告的发布者使用外部网页设置了一些测试,使用 jQuery Mobile 应用程序和 Sencha Touch 发现不同的页面导致应用程序以不同的速率崩溃,特别是非常简单的 jQuery Mobile 应用程序是三者中更稳定。

所以我试图从我的 Sencha 应用程序 app.json 中删除所有外部库(它曾经依赖于 Chart.jsjQuery 和其他一些库),我注意到如果不包括它们,应用程序就会变成 更加稳定。

我重写了需要这些库的代码部分,用纯 Javascript 重新实现了这些功能,并进行了一些测试,发现在加载外部库时,它崩溃了 1/2 次,而轻量级版本崩溃了大约 1 次/50 次(这些统计数据已在每个版本启动应用程序 50 次时获得)。

这些测试似乎表明该错误与正在加载到 webview 的页面的重量有关,页面越轻,崩溃的可能性就越小。

我希望这会有所帮助,至少在 Apple 修复 WebView 之前提高您的应用程序的稳定性。

【讨论】:

以上是关于Sencha touch/cordova 应用程序在 ios8 启动时随机崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Sencha touch/cordova 应用程序在 ios8 启动时随机崩溃

Sencha Touch Cordova iOS 应用程序加载和关闭时间超过 20 秒

Sencha Touch cordova.local.properties 丢失

IBM Woklight、Sencha Touch、Cordova 的区别?

Sencha Touch/Cordova 应用程序在 HTC One 中的 Android Level 18 Jellybean 4.3 更新后遭到破坏

使用 sencha cmd 打包一个 sencha touch 应用程序