One of the remaining key features not yet working in Project Crostini is GPU acceleration. We already know how Google plans to add it — this video covers the technical approach in great detail — but we still don’t know when to expect it. There’s no official announcement but today at its Android Developers Conference, Google provided us a big hint: Early 2019.
Why do I say that? Because of Google did announce today, namely: Official support for Android Studio on Chromebooks.
Android Studio 3.3 launches beta 3 today. In coming releases expect to see a strong focus on quality and fundamentals: reducing the number of crashes and hangs, optimizing memory usage, and fixing user-impacting bugs. We also announced today that we’re making Android Studio an officially supported IDE on Chrome OS early next year; learn more here.
Yes, you can already run the Linux version of Android Studio on any Chrome OS device that works with Project Crostini. What doesn’t work is the Android Emulator though: It requires GPU hardware acceleration.
Putting all of that together: If full, official Android Support on Chromebooks for developers is coming in early 2019, it follows that GPU hardware acceleration in Crostini has to arrive in tandem. I say that because as far as I can tell, the Android Virtual Device (AVD) emulator requires hardware acceleration:
Assuming I’m correct — please chime in if I’m not since I tend to code in Java for school — I can’t see how Google will officially support Android Studio on Chromebooks for devs without supporting the AVD. Yes, you can run your Android app within Android Studio or on a local Android device connected to your computer — well, you could if USB support was working; it’s not but looks to be coming soon.
Again, this is conjecture on my part since a release date hardware acceleration for Crostini on Chromebooks hasn’t been specifically announced. Early 2019 is sounding like a good bet, though.
10 Comments
You have a point but the Android Emulator in Android Studio may not run on each and every Chromebook to begin with. There are many different Chromebook hardware specs, after all, and during development it is the host’s GPU that gets called upon to support graphics operations on the Android Virtual Device, right? And, that additionally implies that there is some specialised code for the target device that remains to be included in the final installed app on the target, I would imagine. Perhaps Google Play can manage all of this complexity or maybe not.
Your article is plain wrong. It is CPU acceleration and not GPU acceleration.
https://en.wikipedia.org/wiki/X86_virtualization#Intel_virtualization_(VT-x)
The author is merely using the phrase “GPU acceleration” descriptively. The point is the GPU of the host computer can be used to accelerate graphics operations called on the virtualized Linux instance/guest OS environment that Android Studio 3.3 requires in order to run on a Chromebook.
In remarks here and elsewhere the author has described how Google is planning to use virtio-gpu and some pieces from the Virgil renderer to achieve this end. I can’t see any error in his remarks. Of course, as you point out, there are virtualization methods directly supported by the CPU these days and these may bump up the execution efficiency of the guest OS on the hardware. That does not invalidate anything the author has said, as far as I can see.
I am not exactly sure of what the acceleration of graphics operations on a development machine tells us about local GPU support for Android apps running in a production environment on an Android phone or in the Android container of a specific Chromebook, however.
https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1036862
https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1043447/20
https://45-56-100-85.ip.linodeusercontent.com/news/video-how-project-crostini-works-run-linux-apps-on-chromebooks/
https://45-56-100-85.ip.linodeusercontent.com/news/project-crostini-progressing-towards-gpu-acceleration-for-chromebooks-running-linux-apps/
do any chromebooks have external gpu’s?
Nope, all of the GPUs used to date are integrated with the CPUs.
Sorry but I think it’s not just lack of GPU support in Crostini that’s stopping Android Emu running on it, it’s the restriction in Crostini of not running VMa inside it’s VM, and Android emu is actually Qemu so it can’t run inside Termina, see: https://chromium.googlesource.com/chromiumos/docs/+/master/containers_and_vms.md#Can-I-run-my-own-VM_kernel
More likely what the announcement means is that they may lift the restriction of needing dev mode to access adb and sideload apps into ARC, as there is an in progress but report for that. And also as pointed out, USB support is also on it’s way.
Great point. I might be overly optimistic that Google finds a way to make AVD work in Crostini. 😉
Well it’s not all bad news, I could be wrong about all of this but I suspect the long term goal is to actually get ARC++ running inside the termina vm in it’s own container as the Crostini readme faq does make it very clear that the chrome is dev team feel unhappy with the security compromise of running Android in a less secure sandbox to what termina provides…
Yes, that does make a lot of sense.
There was a deep dive session on the Android Emulator at the recent Android Developers Summit. See
https://www.youtube.com/watch?v=lL2nKEVmMjc&t=0s&index=42&list=PLWz5rJ2EKKc8WFYCR9esqGGY0vOZm2l6e
This session, if I have understood the context correctly, looks at the use of Android Studio on Linux dev boxes broadly, not Crostini in particular. Still the topics discussed are relevant to all versions of Linux used for Android development including the crosvm isolated Linux guest OS built for the Crostini project.
The details in the talk make it clear that until the release of version 3.3 of Android Studio the Android Emulator either had either no GPU support or negligible support. As the issue with the Android Emulator on Debian Stretch (Linux guest OS supported by Chrome OS) was that it doesn’t run (not that it doesn’t run quickly), Mak’s suggestion does seem sound. In addition to the changes to the Android Emulators in the most recent release of Android Studio and the implementation of virtio-gpu and other pieces of the Crostini para-virtualization strategy, certain limitations of Termina VM would also have to be overcome or circumvented to get the QEMU binary translator dependent Android Emulator running inside a Termina VM in a nested fashion.
Of course, the announcement that Android Studio will be supported on Crostini probably means that the mentioned limitation has indeed been overcome. It is hard to believe that Google would announce support for Android Studio on Crostini if the Android Emulator was still non-functional.