The Tizen SDK comes with an emulator based on QEMU. The
default configuration doesn’t allow you to connect from the host machine to the
guest OS, other than using sdb.
While developing HTML5 frameworks and apps, I find the need to use the Chrome debugger by attaching it to the remote session running within the emulator, and to do that I need to establish a TCP connection from the host machine to the guest OS.
QEMU comes with a way to forward ports, but to use it, we must activate the
QEMU monitor. Edit your
~/tizen-sdk-data/emulator-vms/vms/YOUR_VM_NAME/vm_config.xml file, and add
the following tag inside the <usability>tag:
<advancedOptions>-monitor unix:/tmp/qemu.sock,server,nowait</advancedOptions>
The following script will install your HTML5 widget, launch it, and connect a remote Chrome debugging session to it:
#!/bin/sh LOCAL_PORT=11223 SOCKET='unix:/tmp/qemu.sock' echo "Building..." # This script simply create a zip file with the content of the HTML5 app ./make-wgt.sh my_app.wgt >/dev/null echo "Pushing the widget file..." # This copies the file over to the emulator sdb push my_app.wgt /home/developer echo "Installing the widget file..." # The following line does, in order: # - Remotely kill an instance of the app if it's running # - Uninstall it # - Install the new version that we previously copied # - Launch it # - Get the port number where we can attach our remote debugging session # We are hardcoding the app's id here (123456790). REMOTE_PORT=`sdb shell 'wrt-launcher -k 1234567890; sleep 2; wrt-installer -un 1234567890; wrt-installer -i /home/developer/my_app.wgt; wrt-launcher -d -s 1234567890' | awk '/port:/ { print $2 }'` echo "Enabling forwarding to port $PORT..." # This removes previous port forwarding rules. We are using 'socat' to # connect to the UNIX socket that QEMU opened thanks to the XML changes in the # Tizen VM config. echo "hostfwd_remove ::$LOCAL_PORT" | socat $SOCKET - # This creates the new forwarding rule. echo "hostfwd_add ::$LOCAL_PORT-:$REMOTE_PORT" | socat $SOCKET - echo "Starting debugging..." # Now we can connect for some remote debugging. google-chrome http://localhost:$LOCAL_PORT
Hope this helps.