【发布时间】:2011-04-26 19:16:28
【问题描述】:
如何使用android模拟器查看网站的console.log消息?
【问题讨论】:
标签: android-emulator console.log
如何使用android模拟器查看网站的console.log消息?
【问题讨论】:
标签: android-emulator console.log
您可以临时添加一些 JavaScript,例如...
var console = {
log: function(msg) { alert(msg); }
};
丑得要命,但它确实有效。
【讨论】:
来自 Rich Chetwynd 的短文《Android 浏览器上的 Javascript 调试》。
您可以从 Android 设备或模拟器记录 javascript 错误和控制台消息。为此,您首先需要安装 Android SDK 和 USB 驱动程序并在实际设备上启用 USB 调试。
要检查设备是否连接正确,您可以从 Android SDK 工具目录运行以下 cmd,您应该会在列表中看到一个设备
c:\android sdk..\platform-tools\adb devices然后,您可以使用 Android Debug Bridge 过滤调试消息,以便通过运行以下 cmd 仅查看与浏览器相关的消息。
c:\android sdk..\platform-tools\adb logcat browser:V *:S默认情况下,日志会写入标准输出,因此您会看到任何 Javascript 错误或 console.log 消息等写入 cmd 窗口。
更多详情:Logcat CLI tool docs。
【讨论】:
running logcat browser:V *:S 似乎为我输出了所有日志,我必须通过管道将其传送到 grep 以获取相关日志。
cd ~/eclipse/adt-bundle-linux-x86_64-20140702/sdk/platform-tools; ./adb logcat browser:V *:S | sed 's/^.*Console: \(.*\) [^ ]*/\1/'
adb logcat chromium:V *:S
zsh: no matches found: *:S
如果您从Eclipse 使用ADT plugin 启动模拟器,您将在LogCat 视图下直接看到所有JavaScript 控制台日志:
Window -> Show View -> Android -> LogCat
【讨论】:
我使用以下代码劫持了 console.log:
function logManager() {
var self = this;
self.init = function () {
console.log('logmanager initialized');
var old = console.log;
self.logger = document.getElementById('log');
console.log = function (message, options) {
if (typeof message == 'object') {
self.logger.innerHTML = (JSON && JSON.stringify ? JSON.stringify(message) : message) + '<br />' + self.logger.innerHTML;
} else {
self.logger.innerHTML = message + '<br />' + self.logger.innerHTML;
}
}
}
self.toggleLogVisibility = function () {
return $(self.logger).toggle();
};
}
并在您的 html 中使用您自己的样式使用它(绝对右上角是我使用的)
<div id="log" class="log">
Application loaded...
</div>
在你的 jscript 中(在加载的页面上运行这个,因为日志元素必须存在)
document.lmgr = new logManager();
document.lmgr.init();
【讨论】:
如果您使用的是 Android Studio;您可以打开 Logcat (Alt+6) 并过滤::CONSOLE
仅过滤:CONSOLE(而不是INFO:CONSOLE)将显示所有类型的控制台消息(包括错误、警告等)。
【讨论】:
命令 - 从模拟器获取日志
adb -e logcat
adb.exe 位于 $your_installation_path$\android sdk\platform-tools
【讨论】: