PhoneGap应用在WP8.1上崩溃

4
简述: 我无法在WP8.1上成功运行一个PhoneGap应用程序。在诊断问题的过程中,我遇到了许多问题。 背景:我创建了一个PhoneGap 3.4 Windows Phone应用程序,使用Visual Studio 2012 for WP进行测试并提交。然而,我得到了许多来自Windows Phone 8.1用户的崩溃报告。 问题诊断:我尝试在使用Visual Studio 2013 for Windows的WP8.1仿真器上运行该应用程序,但出现以下错误:
Deployment of application to device failed.
Exception from HRESULT: 0x89721500

然后我尝试选择“重新定向到Windows Phone 8.1”。应用程序启动并显示闪屏,但随后崩溃,并出现以下错误:

An exception of type 'System.SystemException' occurred in Microsoft.Phone.Interop.ni.dll but was not handled in user code

Additional information: An unknown error has occurred. Error: 80020006.

If there is a handler for this exception, the program may be safely continued.

尝试手动安装现有XAP应用程序:我认为在VS2013上运行此应用程序时可能出现问题,因此我想尝试手动安装。问题是,在8.1模拟器中没有XapDeploy.exe,并且我似乎无法从模拟器中下载/打开互联网上的应用程序。

试图找出问题所在:所有这些都不是非常有用的,特别是考虑到WP8.1还很新,相对少数人使用PhoneGap;没有多少人遇到这种问题,因此在线上信息很少。我已经尝试了以上所有方法,使用PhoneGap创建的全新应用程序,但没有任何改变。

如果有任何帮助指导我的方向,将非常有帮助。

解决方法:如果我无法使其正常工作,解决方法就是排除对8.1的支持;让8.1的用户无法下载该应用程序/应用程序版本。我有办法做到这一点吗?我似乎找不到可以做到这一点的方法。

2个回答

6
我在我的项目中遇到了同样的问题。如果你的项目异步加载了多个外部文件(.html,.js等),我找到了一个解决方案。
我调试了这个问题的根源,并且通过获取更简单的cordova示例来运行,逐渐将其转换成我的项目状态,我发现当我一次加载多个文件时,它会在cordova文件XHRHelper.cs中崩溃。
最后,在https://issues.apache.org/jira/browse/CB-4873中找到了解决方案。似乎 cordova 和 Windows Phone 8.1 存在某种bug,当他尝试异步加载多个文件时,就会崩溃。
那里有一个来自Maris Seimanovs的评论,他提供了一个修改过的XHRHelper文件,已经为我解决了这个问题:https://gist.github.com/anonymous/5bf4d9ba9cdb5d0f3f3e 记住,你可以在 platforms/wp8/cordovalib/XHRHelper.cs 中找到 XHRHelper 文件。

我希望它也能帮助你。


谢谢您提供详细的答案!非常抱歉回复您有所延迟。我已经尝试使用您提供的Maris Seimanovs替换 platforms/wp8/cordovalib/XHRHelper.cs,但是我仍然在应用程序中遇到了同样的错误,该应用程序已将目标版本更改为Windows Phone 8.1。您是否还知道其他可能的解决方案?我在您提供的错误链接中没有看到其他解决方案。 - Sergio Prado
我有完全相同的问题,仍然崩溃并出现索引超出范围的异常。 - Rati_Ge
添加Maris的代码后,应用程序得以进一步运行,现在似乎可以加载应用程序并看到主菜单,但之后仍然出现问题...我预计这是所有新问题,但至少我不再从jquery $.ajax调用中获得随机文本出现在正文部分。我很难相信这个错误会出现在cordova wp8中,因为几乎每个现代应用程序都使用ajax调用? - sradforth
1
Maris Seimanovs修改后的XHRHelper在我的情况下非常有效。 - German Latorre
非常感谢。Maris Seimanovs修改后的XHRHelper对我也有效。 - Patrice
我注意到如果你有一个空文件(长度为0个字符),无论是否带有BOM(例如UTF-8字节标记),xap都不会加载。 - DATEx2

0

我曾经遇到过这个问题,尝试了所有其他解决方案,但都没有奏效,'System.SystemException' in Microsoft.Phone.Interop.ni.dll 异常信息仍然存在。

花费了我数小时的时间才发现,我有一个格式不正确的 Content-Security-Policy meta 标签 - 我错过了内容属性的闭合引号。

加上闭合引号后,错误得到了修复。很难相信一个简单的标记语法错误会导致如此严重的后果。

我想在这个 SO 线程上分享这个问题,因为这似乎是该错误的最高谷歌搜索结果,毫无疑问,其他人也会遇到和我一样的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接