Blog PostsProjectsHackathonsAbout Me

Running Fuchsia on the Android Emulator

Posted on May 1, 2019

9/5/2019 Update: Many updates have been made to fuchsia, and many of these steps are no longer required. Small updates have been made where they were needed, but a majority of the content is outdated and irrelevant. The original content has been preserved for historical purposes.

With as quickly as Fuchsia is being developed, this may not be relevant for too long, but I hope that it can help at least a few people for the time being. Horus125 and I have been working on this for the past couple days or so and we're glad we finally got it working and are happy to share our process.

Prerequisites

So, before we start, you're gonna need a few things.

  • Android Emulator build 29.0.6 or higher (You may have to install it via the SDK Manager)
  • The location of where your Android Emulator is located. Mine is at ~/Android/Sdk/emulator, so yours should be similar.
  • Properly configured Vulkan drivers for your GPU.
  • A copy of the fuchsia source tree. For now, let's say it's at ~/fuchsia.
  • git must be installed

Setting up the environment

Once you have the fuchsia source downloaded, we have to cherry-pick some currently-unmerged commits. The commits we're going to be cherry-picking are:

and to do that, you run these commands:

git fetch "https://fuchsia.googlesource.com/fuchsia" refs/changes/50/251950/12 && git cherry-pick FETCH_HEAD git fetch "https://fuchsia.googlesource.com/fuchsia" refs/changes/68/253068/37 && git cherry-pick FETCH_HEAD git fetch "https://fuchsia.googlesource.com/fuchsia" refs/changes/77/255277/30 && git cherry-pick FETCH_HEAD git fetch "https://fuchsia.googlesource.com/fuchsia" refs/changes/88/275588/10 && git cherry-pick FETCH_HEAD

If everything merged in nicely, you're good to move on to the next step!

We need to clone a small part of AOSP in order for it to work, so run:

git clone https://android.googlesource.com/device/generic/goldfish-opengl third_party/aosp/device/generic/goldfish-opengl cd third_party/aosp/device/generic/goldfish-opengl/ git checkout --track remotes/origin/emu-29.0-release cd ../../../../..

Now we're good to build!

Building

fx set workstation.x64 fx build

Note: This should take a fair bit of time.

Running

At this point, we have modified the fuchsia to add support for 'goldfish' (the Android Emulator), and have successfully built a goldfish-compatible version of fuchsia. However, there is one more step we need to take, and that's actually enabling Vulkan support for the Android Emulator. To do that, we run the following commands:

echo 'Vulkan = on' >> ~/.android/advancedFeatures.ini echo 'GLDirectMem = on' >> ~/.android/advancedFeatures.ini

Now, to run it, we run the following command:

fx run -g -k -E -q ~/Android/Sdk/emulator

Where -g enables graphics, -k enables KVM, -E tells fx run to use the Android Emulator, and -q is used to specify the location of the emulator binaries.

9/5/2019 Update: aemu support is now native to fuchsia, so all you have to do is run the command:

fx aemu

Troubleshooting

If you get a black screen instead of a functioning emulator, please ensure the following:

  • Vulkan is properly set up and enabled
  • If using an NVIDIA GPU, try switching to the 390 drivers

If you're getting an error while building that relates to a missing newline in a file in the goldfish-opengl repo we cloned, add -Wno-newline-eof in between lines 84 and 85 of that repo's BUILD.gn file, such that the resulting cflags_cc define looks like this:

cflags_cc = [ "-Wno-unused-function", "-Wno-unused-variable", "-Wno-missing-field-initializers", "-Wno-newline-eof", ]

then attempt the build process again.

Success!

You should now have Fuchsia booting on the Android Emulator!

The Fuchsia lockscreen running in the Android Emulator

The main "ermine" screen on Fuchsia in the Android Emulator

We're glad we were able to finally get everything working, and hope that you were able to, as well. I'll try to update this as things change, and if I get the time. Let me know down in the comments if you were able to follow this guide, and I'll try to respond to everyone when I get the chance.

Thank you, and have fun!

Additional Notes

After messing with it for a bit, here's some extra information that Horus125 was able to come up with about ermine and running fuchsia in the Android Emulator:

  • Performing a long press anywhere outside the window content opens or exits search
  • You can slide left and right between apps and grey desktop
  • If you slide to the left from the last opened app, it opens search
  • There's some graphical apps: settings, terminal
  • Opening basemgr brings back the login screen