0

我正在尝试将 PebbleKit JS 模拟器设置为能够在没有 Pebble-Watch 本身的情况下完全开发。我按照他们的github repo上的说明安装了模拟器,但是当按照他们的 github 上的指示运行模拟器时,我遇到了错误,我不知道为什么。我重新安装了几次,错误仍然存​​在。(我安装了 QEMU-Emulator 并且工作正常)

似乎 JS-Simulator 无法连接到 QEMU-Emulator。这是我在没有打开 QEMU 的情况下运行 ./phonesim.py 时的终端输出:

Namespace(debug=False, layout=None, oauth=None, pbws=[], persist=None, port=9000, qemu='127.0.0.1:12344', ssl_root=None, token=None)
['127.0.0.1', '12344']
INFO:pypkjs:Ready. Loaded apps:
Traceback (most recent call last):
  File "./phonesim.py", line 31, in <module>
    runner.run()
  File "/Users/manuelburger/pypkjs/runner/websocket.py", line 56, in run
    pebble_greenlet = self.pebble.connect()
  File "/Users/manuelburger/pypkjs/pebble_manager.py", line 29, in connect
    self.pebble.connect()
  File "/Library/Python/2.7/site-packages/libpebble2/communication/__init__.py", line 56, in connect
    self.transport.connect()
  File "/Library/Python/2.7/site-packages/libpebble2/communication/transports/qemu/__init__.py", line 53, in connect
    raise ConnectionError(str(e))
libpebble2.exceptions.ConnectionError: [Errno 61] Connection refused

这是在 QEMU 运行 watchface1.pbw 时运行 ./jskit.py localhost:12344 watchface1.pbw 时的输出:

['localhost', '12344']
Traceback (most recent call last):
  File "./jskit.py", line 28, in <module>
    runner = TerminalRunner(sys.argv[1], sys.argv[2:], "data")
  File "/Users/manuelburger/pypkjs/runner/terminal.py", line 15, in __init__
    super(TerminalRunner, self).__init__(*args, **kwargs)
  File "/Users/manuelburger/pypkjs/runner/__init__.py", line 37, in __init__
    self.timeline = PebbleTimeline(self, persist=persist_dir, oauth=oauth_token, layout_file=layout_file)
  File "/Users/manuelburger/pypkjs/timeline/__init__.py", line 33, in __init__
    model.prepare_db(self.persist_dir + '/timeline.db')
  File "/Users/manuelburger/pypkjs/timeline/model.py", line 312, in prepare_db
    db.connect()
  File "/Library/Python/2.7/site-packages/peewee.py", line 2811, in connect
    self.__local.closed = False
  File "/Library/Python/2.7/site-packages/peewee.py", line 2732, in __exit__
    reraise(new_type, new_type(*exc_value.args), traceback)
  File "/Library/Python/2.7/site-packages/peewee.py", line 2810, in connect
    **self.connect_kwargs)
  File "/Library/Python/2.7/site-packages/peewee.py", line 3016, in _connect
    conn = sqlite3.connect(database, **kwargs)
peewee.OperationalError: unable to open database file

非常感谢解决此问题的任何帮助和建议。

4

1 回答 1

0

我发现了几件事:

  1. 我的默认端口不是 12344。运行 'ps -ax | grep qemu' 运行时,您可以看到正在使用的端口。我的通过 'localhost:41968' 连接。可能有更好的方法来获取 qemu 的实际端口,但这很有效。

  2. 对于phonesim.py,您需要指定与qemu 的连接和端口,您可以再次从上面的ps 命令的输出中复制它们。例如,在我的情况下,除非我将其作为 './phonesim.py --qemu localhost:41968' 运行,否则它会失败

  3. jskit 尝试打开数据库“data/timeline.db”失败,因此您需要在运行 jskit 的文件夹中创建一个名为“data”的子目录。如果 jskit 为您创建了该文件夹,那就太好了,但似乎没有。

希望有帮助!

于 2015-10-13T06:48:38.623 回答