Emulator

Differences between revisions 23 and 24
Revision 23 as of 2013-11-19 22:40:32
Size: 4368
Editor: 186
Comment:
Revision 24 as of 2013-11-19 22:46:00
Size: 4397
Editor: 186
Comment:
Deletions are marked like this. Additions are marked like this.
Line 75: Line 75:
After starting the emulator with the wrapper script following should be available After starting the emulator with the wrapper script following should be available:
Line 78: Line 78:
Emulator will appear in the output of $ adb devices, and will, once fully booted allow
{{{
  Emulator will appear in the output of $ adb devices, and will, once fully booted allow
  {{{
Line 81: Line 81:
}}}
access into ubuntu.
  }}}
  access into ubuntu.
Line 85: Line 85:
The terminal will start an Ubuntu console by default, which can be used as any virtual console. Just be aware that hiiting Control + C will stop the emulator.   The terminal will start an Ubuntu console by default, which can be used as any virtual console. Just be aware that hiiting Control + C will stop the emulator.
Line 88: Line 88:
SSH is enabled by default in the emulator, but you can only access it via localhost (QEMU handles the routes and NAT internally). All you need is to forward the target SSH port to a known port at your host:
{{{
  SSH is enabled by default in the emulator, but you can only access it via localhost (QEMU handles the routes and NAT internally). All you need is to forward the target SSH port to a known port at your host:
  {{{
Line 92: Line 92:
}}}   }}}
Line 95: Line 95:
Once launched graphical window title will show a port number, e.g. 5554. Connect to that over telnet, to send hardware events to the emulator

{{{
  Once launched graphical window title will show a port number, e.g. 5554. Connect to that over telnet, to send hardware events to the emulator
  {{{
Line 125: Line 124:
}}}   }}}
Line 130: Line 129:
 * Unity8 is also disabled by default as it's still crashing during start-up. Once the issue is fixed, it'll be enabled by default. To start Unity8 manually just use SSH (as phablet) and call ''start unity8''.  * A few other services might also be disabled by default until everything is working properly with the emulator. Please check '''build-emulator-sdcard.sh''' to see the extra customization done for the emulator image.

Getting the emulator

Installing the pre-built emulator

  • Install android-emulator package in Trusty
  • Copy out emulator to read/write directory
  • Generate sdcard
  • Run the emulator

$ sudo apt-get install android-emulator
$ cp -r /usr/share/android/emulator/ ~/
$ cd ~/emulator/
$ ./build-emulator-sdcard.sh
$ ./run-emulator.sh

Building from scratch

To build

$ sudo apt-get install phablet-tools git bzr

$ # install android build-dependencies
$ sudo apt-get build-dep android

$ # if we're on amd64, we need to pull in certain 32-bit packages explicitly
$ sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev:i386 zlib1g-dev:i386

$ # and then work around the fact that libgl1-mesa-dev isn't Multi-Arch: same yet
$ sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so

$ mkdir -p emulator/
$ phablet-dev-bootstrap emulator
$ cd emulator
$ source build/envsetup.sh
$ lunch cm_goldfish-eng
$ mka

To generate sdcard with the ubuntu rootfs

$ ./build/tools/build-emulator-sdcard.sh

Launch the emulator with the run-emulator script:

$ ./build/tools/run-emulator.sh

You can also launch the emulator using your own arguments and options:

$ emulator -verbose -gpu on -system $OUT/system.img -memory 512 -show-kernel -shell -no-jni -qemu -cpu cortex-a8

As of 2013/11/05 there is a bug in the goldfish kernel wrt AppArmor, so you may want to launch with AppArmor disabled until this issue is resolved:

$ emulator -verbose -gpu on -system $OUT/system.img -memory 512 -show-kernel -shell -no-jni -qemu -cpu cortex-a8 -append 'apparmor=0'

Username & password are:

phablet
phablet

To update your existing working tree to pull in new changes from the server, run repo sync.

For more information about how to use the repo command to manage your android working tree, see this page.

Using the emulator

After starting the emulator with the wrapper script following should be available:

  • Adb
    • Emulator will appear in the output of $ adb devices, and will, once fully booted allow
      $ adb shell
      access into ubuntu.
  • Serial console
    • The terminal will start an Ubuntu console by default, which can be used as any virtual console. Just be aware that hiiting Control + C will stop the emulator.
  • SSH access
    • SSH is enabled by default in the emulator, but you can only access it via localhost (QEMU handles the routes and NAT internally). All you need is to forward the target SSH port to a known port at your host:
      $ adb forward tcp:9999 tcp:22
      $ ssh phablet@localhost -p 9999
  • Telnet access
    • Once launched graphical window title will show a port number, e.g. 5554. Connect to that over telnet, to send hardware events to the emulator
      $ telnet 127.0.0.1 5554
      Trying 127.0.0.1...
      Connected to 127.0.0.1.
      Escape character is '^]'.
      Android Console: type 'help' for a list of commands
      OK
      help
      Android console command help:
      
          help|h|?         print a list of commands
          event            simulate hardware events
          geo              Geo-location commands
          gsm              GSM related commands
          cdma             CDMA related commands
          kill             kill the emulator instance
          network          manage network settings
          power            power related commands
          quit|exit        quit control session
          redir            manage port redirections
          sms              SMS related commands
          avd              control virtual device execution
          window           manage emulator window
          qemu             QEMU-specific commands
          sensor           manage emulator sensors
      
      try 'help <command>' for command-specific help
      OK

Known Issues

  • Powerd is disabled by default as suspending & resuming corrupts the root filesystem.

  • A few other services might also be disabled by default until everything is working properly with the emulator. Please check build-emulator-sdcard.sh to see the extra customization done for the emulator image.

Touch/Emulator (last edited 2016-04-15 03:17:10 by tsimonq2)