我正在将一个应用程序从 PhoneGap 1.9 升级到 PhoneGap 3.0。console.log() 函数不再起作用。以前,输出是在 XCode 控制台中编写的。恢复日志记录功能的最佳方法是什么?
我已阅读:PhoneGap 2.0 在 XCode 中不显示 console.log,但在 PhoneGap 3.0 中,即使在 deviceReady 事件之后,console.log 也不起作用。
我也有兴趣直接在 xcode 中查看 javascript 错误。
我正在将一个应用程序从 PhoneGap 1.9 升级到 PhoneGap 3.0。console.log() 函数不再起作用。以前,输出是在 XCode 控制台中编写的。恢复日志记录功能的最佳方法是什么?
我已阅读:PhoneGap 2.0 在 XCode 中不显示 console.log,但在 PhoneGap 3.0 中,即使在 deviceReady 事件之后,console.log 也不起作用。
我也有兴趣直接在 xcode 中查看 javascript 错误。
您需要将调试控制台插件添加到您的项目中:
phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-console.git
在更高版本的 phonegap/cordova 中,在项目中添加调试控制台插件:
cordova plugin add org.apache.cordova.console
事实证明,至少在我的情况下,deviceready
记录器的那个函数没有被调用。中的最后一行logger.js
。
document.addEventListener("deviceready", logger.__onDeviceReady, false);
解决方案(或真正的解决方法)是logger.__onDeviceReady
从您的deviceready
侦听器函数中调用该函数:
function onDeviceReady() {
if (window.cordova.logger) {
window.cordova.logger.__onDeviceReady();
}
}
document.addEventListener('deviceready', onDeviceReady, false);
我发现JSconsole.com 对于从移动设备远程捕获控制台日志非常有用。
以下是您的设置方式:
在您的应用程序 index.html 中,包含(更改 ID):
<script src="http://jsconsole.com/remote.js?<MAKE UP SOME UNIQUE ID>"></script>
:listen <YOUR UNIQUE ID>
在您的移动设备上打开您的应用程序,您将在您的计算机上看到控制台日志。
按照 Sam 的答案添加控制台插件,并确保在每个页面上都包含 cordova.js,否则插件无法工作。
使用 phonegap 插件时,我在脚本标签中添加了 phonegap.js,然后我注意到插件(任何)仅适用于 index.html 页面。当我将 phonegap.js 更改为 cordova.js 时,插件(通知、相机等)开始在其余页面上工作。如果这对任何人都有帮助。
如果您已经安装了 Cordova 控制台插件,那么当您运行您的应用程序时:
phonegap run iOS
您将在以下位置找到日志:
[your project dir]/platforms/ios/cordova/console.log
对于IOS。所有控制台日志都按预期显示。
问题
通过命令行界面将控制台插件添加到 ios 平台(或重新安装后)时,会出现以下或类似的错误消息:
“CDVPlugin 类 CDVLogger (pluginName: Console) 不存在。”
解决方案
打开您的 Xcode 项目并转到“构建阶段”选项卡。现在打开名为“Compile Sources”的下拉菜单。单击列表末尾的“+”号并添加“CDVLogger.m”或任何其他缺少的源。
除了添加控制台插件之外,我还有另一个假设为什么它可能不起作用:
Phonegap 中的 console.log 是异步调用的,因此如果将来的调用失败,整个函数都会失败,并且其中的所有日志调用都会被吞没。
receivedEvent = function( id ) {
alert( 'This message is displayed because alert is called synchronously ')
console.log( 'This will not be displayed in Phonegap only in browser' )
callingAFunctionWhichDoesNotExist()
console.log( 'This will neither be displayed in Phonegap nor in browser' )
}
我发现GapDebug真的很有用。与其他任何东西不同 [cough咳 weinre],它让您可以从本地应用程序控制台日志