 Hi, everyone. My name is Patrick Fuentes, and I work on the Chrome OS Developer Relations team. Today, we're going to cover three topics, new developments for Android on Chrome OS, how to ensure your apps have a high-quality experience on Chromebooks, and how to optimize the performance and experience of your games for Chrome OS. A lot has changed since Google Iow in 2019. We want to tell you about what's new and some things you may have missed. In that time period, usage of Android apps on Chrome OS has more than tripled. With all of this platform growth, there's an opportunity for you to engage more users than ever. We're here to talk about how you can create the best possible user experience for your Android app or game on Chrome OS. We'll also share some of the work that we've done to help make that easier. Most Chromebooks with Android are currently running Android 9, but we're happy to share that Chrome OS is in the process of moving devices to Android 11, bringing you the latest APIs and features. Another big change that's happening with the move to Android 11 is that Android runtime is migrating from a container to a virtual machine. The move to a virtual machine will improve security for users, and it'll make the Android environment more maintainable. This should enable Chrome OS to reduce its divergence from mainline Android, which will increase stability and the velocity of future Android updates. This is all happening under the hood, so there shouldn't be any changes for you as developers or for your users. We're also improving the Play Store on Chrome OS to serve as high-quality apps and games on the platform. This means that we'll be putting apps and games that do the work to create great user experiences in front of Chromebook users. So let's talk about what you can do as a developer to make your app look great and improve the user experience on Chromebooks. There are three main areas to look at. A thoughtful, large-screen user interface, support for a variety of hardware and software inputs, and desktop-like functionality. When designing your app, remember that your users will be engaging with it on a variety of form factors and screen sizes. This could mean laptops, tablets, convertibles, foldables, and more. If an app layout designed for a portrait phone is stretched to a 4K monitor, many kinds of problems can arise. UI elements may get stretched out, there could be wasted space, and the app may be difficult to use and navigate. Let's look at an example. Imagine you have a phone app with a bottom navigation bar. This allows users to quickly navigate with their thumbs and it may be a great user experience on handsets. But what happens if that same layout is shown on a wider landscape screen? The icons are difficult to see and click and they can be even more difficult to understand. Not being able to easily navigate through your app can disrupt the entire user experience. Transitioning to a side navigation bar on large screens can make your app easier to understand and interact with. Of course, there are more opportunities with large screens beyond navigation. For example, a simple list and detail view paradigm works well on handsets, but as you can see in this example, you can make better use of space on larger screens by also showing an image preview to the side. With more space available on larger screens, you can do much more with your layouts. You can display more information at the same time, allow for fluid multitasking with other apps, or immerse users more deeply in your experience. Fluid design approaches allow your app to take advantage of available screen space to provide the best app experience for the user. Different apps require different approaches, but you can find practical tips in two other talks at this year's Google I.O. Five things you can do right now to prepare your app for large screens with material design and what's new in foldables, tablets, and large screens. Be sure to check out the links in the description below. If you're looking for more design inspiration, check out the Rally demo app from the Material Design Studies. This is a great example of the way space can be used on different screen sizes and orientations to maximize functionality and visibility. Another important subject to consider when optimizing your app for large screens is configuration changes. Handling rotation changes in apps isn't anything new for many Android developers, but the increasing variety of form factors has made configuration changes more common. Changes like folding and unfolding or window resizing on the desktop environment like Chrome OS can be common parts of your user's workflows. Not handling this correctly can lead to the app restarting or getting into an unexpected state. You don't want to lose user data or the state of the UI, so be sure to maintain all UI state in a view model and or by using on saved instance state to ensure a smooth experience. Another key consideration across form factors is supporting different input methods. Users will be using your app with keyboards, mice, trackpads, game controllers, styluses, and more. We have an in-depth talk on just this subject this year, so be sure to check out Emily's talk, Input Matters for Chrome OS. It's linked in the description below. Before you check that talk out, let's hear from Ricardo about some things especially relevant to game developers. Thank you, Patrick. I'm going to talk about gaming news and gaming best practices. Let's start with the best practices. As you know, Android phones are mostly based on ARM CPUs, and for that reason, chances are that your game might be supporting ARM binaries only. However, on the Chromebook world, although we have a lot of ARM devices, we have a lot of x86 ones too. Rest assured, all your ARM-only games will run perfectly fine on our x86 Chromebooks. But to get an extra boost in performance, we encourage you to support both ARM and x86 binaries. To do so from Android Studio, it is just adding a few lines of code in the build.gradle file. As you can see in the snippet code, you should include both ARM and x86, both for 32 and 64 bits. That's four ABIs in total. But it is worth mentioning that adding support for a new ABI does not increase the binary size delivered to the user. Up Bundle takes care of that. When the user downloads the game from Google Play, it will receive the right binary for their Chromebook, meaning that an ARM Chromebook will only receive ARM binaries and an x86 Chromebook will only receive x86 binaries. And if you are using Unity, we are happy to announce that with only a few clicks, you can add x86 support to your Unity game. Stay tuned on ChromeOS.dev for more details. If your game requires internet access, consider using the connectivity manager to sense whether internet is available. Don't just check whether Wi-Fi is enabled. Although all Chromebooks support Wi-Fi, some users might have ethernet as their main interface, and Wi-Fi might or might not be enabled. Let's take a look. Here is the code that checks whether the Chromebook is online. It gets the connectivity manager, grabs the first active interface and returns whether or not it is connected. One of the most requested features from developers was to support APK-side loading without having to go to developer mode. Not only it is now possible to install a game by double-clicking an APK file, but also the entire ADB suite is available. As an example, you can do ADB install, ADB log cut, or ADB damses without putting your Chromebook in developer mode. On Iona 18, we talked about the AR graphics tracing tool that is built-in ChromeOS. Since then, we kept improving our tools. We developed a new tool to measure FPS, render quality, power consumption, among other things. It is built-in ChromeOS, and you can try it by navigating to the ArcOverview tracing URL. Another useful tracing tool is Parfetto. It is similar to SysTrace with some extra benefits, like in addition to tracing Android events, you can also trace Linux kernel events. You can include log cut messages in the trace. This is very useful when you want to have more context of what's happening. It has a query API that can be used from Python. This means, among other things, that you can automate some of your performance tests. Parfetto is a tool that is available on devices running Android 10 or later, including Chromebooks with ArcR. Regarding gamepads, in the previous I.O., we announced that Arc was receiving raw gamepad events. This was a big improvement in gamepad compatibility. Since then, we kept improving the compatibility by updating the key layout files, the one that convert raw events into Android events. We backported the key layout files from the latest Android version into Arc. And we are also contributing back with our own key layout files. Please watch the talk, input matters from Chrome OS for further info. Regarding graphics, our graphics stack is complex and contains many subcomponents. And this image is an oversimplification of how it works. We fixed bugs, added improvements, and updated drivers in all these subcomponents. The changes were many, but just to mention two of them, we reduced the latency when handling graphics buffers, and we did so by implementing fences. And we improved Vulkan rendering. In particular, we fixed glitches that were affecting some games. And now, back to you, Patrick. Thanks, Ricardo. We hope you found a few tips and tricks that will help make your app or game even better on Chrome OS. We're continuing to invest in improving your developer experience when building for Chromebooks because we want Chrome OS to be a great place for users to enjoy your Android apps and games. So what should you do to take advantage of this progress? If you'd like to learn more, please visit ChromeOS.dev. We've published a lot more guidance for large screen layouts, handling inputs, performance, and more. So be sure to take a look there for helpful tips. Most importantly, try running your app or game on a Chromebook and see what it's like for yourself. Try the tips we've shared and ask yourself what your users want. We look forward to seeing users enjoying your apps and games on Chrome OS devices and every other device that supports Android experiences.