我在 Android 模拟器中安装的应用出现白屏(但在浏览器中有效)

Getting a white screen with my installed app in Android emulator (however works in browser)

我在模拟器中将遗留移动应用程序 运行 时遇到问题 - 在浏览器中似乎 运行 没有任何问题,但是当我 运行 cordova emulate 命令应用程序尝试安装,但我总是出现白屏(没有其他问题)并且应用程序无法使用。

我正在 运行ning Cordova CLI v5.0.0,尽管该应用程序是大约一年前制作的,因此是在旧版本的 Cordova 中开发的。

任何人都可以建议调试此应用程序的最佳方法以找到问题的原因以及为什么问题仅在我 运行 模拟命令但在浏览器中似乎正常时仍然存在?

-- 更新 -- 我已经安装了三星驱动程序以允许我将我的 OnePlusOne 设备连接到 adb,并且我知道使用 Android Studio 程序来整理错误等。

在 Android studio 中我可以看到日志(见下面的要点):

https://gist.github.com/gkimpson/fbde0f5a7d1017daae17

它太长了所以从外部添加了它 - 知道为什么我的应用程序有问题吗?

-- 更新 -- 这条线似乎是问题所在

D/SystemWebChromeClient﹕ file:///android_asset/www/js/app/modules/stickers/stickers.js: Line 357 : Uncaught TypeError: window.requestFileSystem is not a function

stickers.js 中的代码在该部分下方。

if (window.isDevice) {
     window.requestFileSystem(window.PERSISTENT, 512, onInitFs, errorHandler);
} else {
     callback(fc);
}

好的,这是我从 cordova 3.6 迁移到 cordova 5 时必须做的事情。

但首先,我建议您阅读一下:

Cordova Android 4 release notes

Plugins switch to npm

The white list plugin documentation And in addition the CSP documentation

综上所述,cordova 中的安全性发生了变化,如果您不添加白名单插件,您的应用将无法访问网络,并且现在通过 npm 安装插件,而不是通过 git.

所以我做了什么(可能有点硬核):

  • 完全删除 platforms/android 文件夹
  • 删除插件文件夹(如果你在某个地方没有列表,可能在 cordova 插件列表之前)
  • 使用新名称重新安装插件(大多数外部插件没有更改名称,但所有 cordova 插件都有)例如 cordova-plugin-camera 替换 org.apache.cordova.camera
  • 添加白名单插件并配置它(或者如果您不关心安全性,请安装 white list-legacy 插件,它应该像以前的版本一样工作)
  • 添加android平台

并且您可以 运行 cordova plugin savecordova platform save 将所有插件和平台保存在 config.xml