【问题标题】:Reloading and debugging JavaScript in TVOS simulator在 TVOS 模拟器中重新加载和调试 JavaScript
【发布时间】:2016-01-13 20:05:23
【问题描述】:

我已经开始研究为新的 Apple TV 制作基于 TVML/TVJS 的应用程序的教程,但我有两个问题使得开发过程非常乏味和不切实际。

我无法理解的第一件事是我应该如何调试应用程序启动时发生的代码。我已经连接了 Safari 调试器,并且我确实设法命中了一些断点,但仅限于由某些用户输入触发的代码。在启动时,我正在从远程位置加载一个 xml 文档,我将使用它来动态生成 tvml 模板,但在模板完成渲染之前,我无法让调试器在正在运行的代码中的任何位置停止。

我遇到的另一个不利于生产的问题是,除了完全关闭模拟器中的应用程序(双击主页按钮,然后将应用程序滑开)之外,我似乎无法以任何其他方式重新加载 JavaScript 文件。这也使调试器退出,所以我也必须重新启动那个。这肯定不是您应该进行持续开发和测试的方式吗?

【问题讨论】:

    标签: javascript debugging tvos apple-tv


    【解决方案1】:

    当您从 Safari 菜单“开发/模拟器”中选择“自动暂停”和“自动显示”选项时,您可以让调试器停止在第一行。

    您对退出问题的看法是正确的。 您还可以尝试的一件事是从 Safari 调试器控制台运行 App.reload()。 这也会重新启动应用程序,也许将来他们可以让它工作,这样调试器就不会消失。 但目前这也不能解决问题。

    【讨论】:

      【解决方案2】:

      对于手动调试器输出(又名console.log()),您可以将日志记录重定向到 Xcode 调试器。

      (在网络上的某个地方)我找到了一种方法来实际做到这一点,简而言之,它看起来像......

      AppDelegate.Swift

      func appController(appController: TVApplicationController, evaluateAppJavaScriptInContext jsContext: JSContext) {
          let jsInterface: cJsInterface = cJsInterface();
          jsContext.setObject(jsInterface, forKeyedSubscript: "swiftInterface")
      }
      

      App.js

      // re-route console.log() to XCode debug window
      var console = {
        log: function() {
          var message = '';
          for(var i = 0; i < arguments.length; i++) {
            message += arguments[i] + ' '
          };
          swiftInterface.log(message)
        }
      };
      

      JsInterface.Swift

      @objc protocol jsInterfaceProtocol : JSExport {
          func log(message: String) -> Void
      }
      ...
      class cJsInterface: NSObject, jsInterfaceProtocol {
          func log(message: String) -> Void {
              print("JS: \(message)")
          }
      }
      

      github中的完整来源:https://github.com/iBaa/PlexConnectApp/tree/f512dfd9c1cb2fbfed2da43c4e3837435b0b22af

      我自己对即将死去的调试器没有任何解决方案......

      【讨论】:

      猜你喜欢
      • 2016-11-05
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      • 2012-06-17
      • 1970-01-01
      • 2015-11-12
      • 2015-01-14
      相关资源
      最近更新 更多