我编写的 Chrome Kiosk 应用程序只有在 Chromebox 上以 Kiosk 模式运行时才会出现问题。在我登录 Chromebox 后手动启动应用程序时,它运行良好。此外,在我的开发机器上测试应用程序时,一切正常。
如何将远程调试会话、写入远程日志记录信息或以任何其他方式从 Chromebox 上的 Kiosk 应用程序获取调试信息到我的开发机器?
我编写的 Chrome Kiosk 应用程序只有在 Chromebox 上以 Kiosk 模式运行时才会出现问题。在我登录 Chromebox 后手动启动应用程序时,它运行良好。此外,在我的开发机器上测试应用程序时,一切正常。
如何将远程调试会话、写入远程日志记录信息或以任何其他方式从 Chromebox 上的 Kiosk 应用程序获取调试信息到我的开发机器?
如果您使用 --remote-debugging-port=9222 选项运行 Chrome,它将提供对 DevTools 的访问权限http://localhost:9222/
。现在,在以 Kiosk 模式运行的 Chromebox 上,如果没有一些额外的步骤,这并不是那么有用(甚至可能):
/etc/chrome_dev.conf
.killall chrome
或pkill chrome
使命令行更改生效。ssh -L9222:127.0.0.1:9222 chronos@<chromebox ip>
http://localhost:9222/
鉴于所有这些,如果您可以在非信息亭模式下解包运行它,则更容易调试信息亭应用程序。
为了将来节省其他时间,我发现在尝试调试在 kiosk 模式下运行的应用程序时,您不需要以 chronos 用户身份登录。
事实上,我发现当设备在非托管信息亭模式下运行应用程序时,我根本无法以 chronos 用户身份登录,但是,我可以在登录操作系统时进行登录。
相反,我不得不以 root 用户身份登录。然后,我能够按照 Reilly Grant 的记录设置隧道,并通过 localhost:9222 连接到远程调试器。
这意味着您需要对 Reilly Grant 的说明进行的唯一更改是在第 5 步中更改ssh -L9222:127.0.0.1:9222 chronos@<chromebox ip>
为ssh -L9222:127.0.0.1:9222 root@<chromebox ip>
我知道这应该是一个评论,但我坐在 49 代表。对于那些尝试使用最新版本的 chrome 的人,你最终可能会得到一个无法正常工作的远程控制台。要解决此问题,您必须打开本地调试器并在其控制台中输入以下内容:(参考:https ://github.com/Adobe-CEP/CEP-Resources/issues/78 )
isEnterKey = function(event){
return event.key == 'Enter' && event.keyCode == 13;
};
Object.defineProperty(KeyboardEvent.prototype, 'keyIdentifier', {
get: function() {
switch (this.key) {
case "ArrowDown":
return "Down";
case "ArrowLeft":
return "Left";
case "ArrowRight":
return "Right";
case "ArrowUp":
return "Up";
case "Escape":
return "U+001B";
case "Tab":
return "U+0009";
default:
return this.key;
}
}
});