Every year, Google I/O happens right around this time in June. But this year, due to travel restrictions and COVID-19 concerns, Google decided to try something a little different. Instead of one action-packed week of announcements, keynotes and sessions, the 2020 version of Google I/O has taken on a new identity. And this time, we get a deep dive into one of 11 different announcements over the course of 11 weeks that coincide with the launch of Android 11. If you’d like to see what all is on the docket, you can visit the Android Developers page here.
Each week, our expert developers will be recapping the week’s information and offering up everything you need to know to stay abreast of all that Android 11 has to offer. Here’s the line up:
- Week 1 (June 15-19): People & Identity
- Week 2 (June 22-26): Machine Learning
- Week 3 (June 29-July 3): Privacy & Security
- Week 4 (July 6-10): Android 11 Compatibility
- Week 5 (July 13-17): Languages
- Week 6 (July 20-24): Android Jetpack
- Week 7 (July 27-31): Android Developer Tools
- Week 8 (August 3-7): App Distribution & Monetization
- Week 9 (August 10-14): Android Beyond Phones
- Week 10 (August 17-21): Games & Media
- Week 11 (August 24-28): UI
*Each week, we will add new insights and topics to this article. Please check back each week to get the latest in Android announcements from your experts at Bottle Rocket.
Week 1 - People & Identity (June 15-19)
We just wrapped up week 1 and here’s what we learned.
One of the key goals of Android 11 is for our phones to be more people-centric. Some of the new features introduced in Android 11 will allow the people in you life to feel like they’re right there with you.
These new features include:
- Conversation Notifications - it’s meant for real-time conversations with real people and automatically cached by the system. A dedicated persistent space for these notifications is added with a section header marked as “Conversations” so you can quickly see and respond to them.
- Bubbles - Graduated from developer preview to full user feature! You can grab a conversation that you’re actively engaging with and convert it to a bubble that lets it float on top of everything else you’re doing.
- One Tap - Sign in and sign up are even easier and more secure through this new cross-platform sign-in method.
- Block Store - A new token-based sign-in mechanism eliminates friction from sign-in flow.
At the center of this release is the Android Conversation Shortcut API and Identity Services Library. More information can be found here.
The pattern of Conversation Notifications and Bubbles help put conversations front and center and give users quick access to the people they care about most. If your app offers any sort of communication, even through support channels, you should consider moving towards this new pattern. Chatting with a support representative while continuing to use your device makes the experience feel much more personal, like talking to a friend.
Week 2 - Machine Learning (June 22-26)
We just wrapped up week 2 and here’s what we learned.
Machine Learning capabilities in Android 11 have been updated quite substantially. The Neural Networks API (NNAPI) has been updated to version 1.3. With this comes the expansion of operations and controls available to developers.
- Quality of Service APIs support priority and timeout for model execution.
- Memory Domain APIs reduce memory copying and transformation for consecutive model execution.
- Expanded quantization support, added signed integer asymmetric quantization where signed integers are used in place of float numbers to enable smaller models and faster inference.
Additionally, the Face Detection portion of MLKit now ships with Google Play services, so you can use it without increasing the size of your APK.
There is an early access program for MLKit as well that lets developers preview upcoming MLKit features. There are two new APIs that are now a part of this program.
- Entity Extraction - Detect entities in text and make them actionable. There is support for phone numbers, addresses, payment numbers, tracking numbers, date/time, and more.
- Pose Detection - Low-latency pose detection supporting 33 skeletal points, including hands and feet tracking.
There is also now custom models that can be used with the Image Labeling and Object Detection and Tracking APIs. This allows for more tailored solutions that let you build an implementation from scratch instead of relying on Google’s models.
MLKit has almost infinite possibilities in terms of business functionality. A good example is using OCR to translate a camera feed to real text. Additionally, the project that Rocketeers completed as part of the #AndroidDevChallenge is a great example of practical functionality offered by the MLKit. The project, named Path Finder, is meant to help people with visual impairments navigate complex situations by identifying and calculating trajectories of objects moving in their path. Those trajectories are then process and audio instructions are given to the user. You can learn more about Path Finder here.
Week 3 - Privacy and Security (June 29-July 3)
We just wrapped up week 3 and here’s the summary of what we learned.
Android is evolving as a privacy-centric Operating System and protecting user’s privacy is a shared responsibility between the Android system, the users and apps.
There are many new features in Android 11 that focus on giving control of data to the users:
- One Time Permissions
Evolving permissions to give more control by allowing user to grant permission for one-time use only. App developers will be more successful getting access to the user’s location because users know that it’s only for something right now.
- Background location request
It is now far more difficult to request background location permissions. It must be done through a system UI popup, not an app custom UI dialog. No company should plan on being able to track users while their app is in the background, except in very limited scenarios.
- Permissions auto-reset
Android will automatically revoke all runtime permissions for apps that aren't used frequently. Users will be notified of this through a notification. If you follow the recommended UX patterns, your app will re-request the permission again the next time the user launches it.
- Google Play system updates
This was introduced in Android 10 and the main benefit of this new update approach is to increase the modularity and granularity of platform subsystems within Android so the core OS components can be updated without needing a full OTA update from your phone manufacturer. For app developers, this means that they can use the latest features with even more confidence!
- BiometricPrompt API
The new BiometricPrompt API can be used to specify the biometric authenticator strength required by an app to unlock or access sensitive parts of the app. For apps where a biometric login is more about convenience than security, the restrictions can be a little looser.
- Identity Credential API
This will allow new use cases such as mobile drivers licenses, National ID, and Digital ID. In the new releases, this is being done by having the data stored offline in a secure environment with using security hardware to secure and control access to the data.
From a security perspective, the Android 11 release is all about fit and finish what’s already started in the previous Android releases. Android 11 focused on making sure the internals got plenty of attention and includes the followings:
- Project Mainline (introduced in Android 10): a critical vulnerability was fixed in the media decoding subsystem
- New modules were added, and the security properties of existing ones are maintained
- Biometrics API mentioned above, where different levels of security can use the biometric authentication in different ways.
With better security and privacy controls, apps can instill even more trust with their users. It also keeps them from worrying about a rogue app on their phone that may be collecting information that they are unaware of, or more likely have just forgotten about. Google is taking a stronger stance on security and privacy, and making good privacy practices the recommended default behavior, instead of only providing the option and letting users decide.
Week 4 - Android 11 Compatibility (July 6th -July 10th)
This week the android team is focusing on app compatibility.
As users update their phones to the latest version of android, or buy new phones, changes required by the newer OS can break existing applications. App compatibility is the idea that an application works correctly with the version of android on the user’s phone.
For a certain amount of time, Google allows app developers to avoid many of changes required by the newer Android OS by “targeting” an older operating system. Thereby ignoring many of the changes required.
With Android 11, Google seems to be taking a more aggressive stance on requiring apps to support the newer android system features. However, they are also adding some new features to make the transition to Android 11 easier.
- Google strongly implied that they intend to make all apps in the Play Store support Android 11 more quickly than for previous OS versions
- For at least the first year, instead of having to support all the Android 11 changes, the Play Store will allow apps to “opt in” or “opt out” of specific features individually. *
- Google is adding a “compatibility framework” to allow developers to turn breaking changes off and on individually using the developer settings on their devices
- They are also adding features to automated testing and the software where developers write their code to make it easier to test OS changes
- *Not all features will be toggle-able. For instance, many privacy and security changes will be required of all apps immediately.
- Google is formalizing this split by markings some features as “affecting all apps” vs “based on targetSDK”
The detailed and technical list of changes to the OS is available at:
With the newly added process and tools in Android 11 that helps with compatibility testing, it’ll be easier to make sure the existing apps will continue to work properly after system update which will greatly help with user experience through device OS upgrades.
And as mentioned above, while Google doesn’t typically force apps to support the latest OS version, Google has strongly implied that they intend to make all apps in the Play Store support Android 11 more quickly (especially for privacy and security related features introduced in Android 11.) Thus, it’s important to plan for the existing apps to comply accordingly.
Week 5 - Languages (July 13-17)
This week the android team is focusing on Languages.
Last year, Google announced that Kotlin is the preferred language for writing Android code. In Android 11, Async tasks are now deprecated and Kotlin coroutines should be used to handle asynchronous operations, for a few key reasons:
- Prevent memory leaks
- Multiple instances on one thread
- Flow is built on the foundation of Coroutines and inherits some of the best properties such as cancelation, structure concurrency, exception transparency
- Shard flow is coming, sharing a single flow between multiple subscribers. Useful when a flow is costly to make or you want to save resources by sharing
For projects utilizing C and C++ as the programming languages, Android 11 includes the following solutions to address memory corruption bugs:
- Use-after-free, double-free and heap buffer make up 65% of high/critical bugs for both chrome and android
- HWASan (Hardware_Assisted Address Sanitizer) is a replacement for ASan (Address Sanitizer)
Also, in Android Studio 4.0, Native libraries are now exposed the same way Java libraries are using Android Archives:
Prefab is the tool that facilitates all of this by performing compatibility checks to find suitable libraries for build configuration.
Android Gradle Plugin 4.0 now supports certain Java APIs and third-party libraries such as the followings that were once only available on newer android devices:
- New Java Time API prevents concurrency issues and works with time zones much easier
- Streams allow for functional style operations on collections but do not store data or modify the underlying data structure
- New additions to Map, Collection and comparator interfaces
- New methods for AtomicInteger, AtomicLong and AtomicReference
- Bug fixes for ConcurrentHashMap, thread safe compared to HashMap
For end users, the enhancements included in the Android 11 Languages will greatly improve user experience as well. General performance is improved with Kotlin Coroutines, ensuring that even a complex UI is always responsive smooth. With additional support for APIs in the OpenJDK, it’s less likely that users will see crashes, even on devices that have been heavily customized by the manufacturer. The standardization by Google is resulting in a more robust and stable OS, leading to better user experience and higher satisfaction.
Week 6 - Android Jetpack (July 20-24)
We just wrapped up week 6 and here’s what we learned.
Android 11 Jetpack updates help provide more efficient ways to create better applications. The new features include:
- Hilt – A new Android library, built on top of the popular DI library Dagger, that simplifies dependency injection in your app. Hilt allows you to focus on just the important parts of defining and injecting bindings without worrying about managing all the setup and wiring usually required. Hilt provides containers for every Android class in your project and managing their lifecycles automatically for you.
- Paging Library Updates – The Paging 3 API provides support for things you would usually need to implement yourself when loading data. Better error handling, easier transformations of data(map, filter, etc.), and support for common features (list separator, headers, footers, etc.). Paging 3 is backwards compatible with Paging 2 so you have the option to migrate to 3 over time.
- CameraX – A new library designed to help you develop camera apps easier that also carries support for older Android devices as well. CameraX comes with easier implementation, and consistency across 94% of Android devices starting with API 21.
By utilizing the Android 11 Jetpack components, productivity can be increased, and more focus can be put on how to make the application unique as the common infrastructure code is provided by the Jetpack libraries. Take CameraX mentioned above as an example, it provides quite a few compatibility fixes to help make the developer experience consistent across many devices. Thus, adding camera capabilities to the app can be done without having to worry about device specific details such as the form factor or camera configurations!
Week 7 - Android Developer Tools (July 27-31)
We just wrapped up week 7 and here’s what we learned.
This week is all about Android development tools for different development phrase including Design, Coding & Deployment, Build, Emulator, and Profiling. Some highlights:
- Layout Inspector - allows for debugging like chrome dev tools. This allows you to inspect the hierarchy and all view attributes included ones inherited by parents.
- Database Inspector - included in android studio 4.1. The inspector allows you to make changes and see them live if the app is running. The inspector also lets you test pure SQL queries within the inspector rather than in the code, allowing you to create queries you want faster.
- Compose Design Tools - currently available in Canary channel. Allowing for testing UI with sample data and comparing different types of configurations.
- Other Android studio improvements - Dagger and Hilt navigation support has been improved in AS 4.1 and 4.2 along with improved system tracing.
Having a good understanding of the developer tools available to the development team in the latest versions of Android Studio will greatly help increase team productivity in all different phases of the app development workflow. Take the Database Inspector feature mentioned above as an example, it allows developers to modify data in app database in a way that is not much harder than editing a spreadsheet and prevents requiring using a 3rd party solution for database inspection. This significantly reduces the time and effort needed for app database inspection/manipulation, improving efficiency and help developers build even better apps!
Week 8 - App Distribution & Monetization (August 3-7)
This week we focused on what’s new in Android 11 about App Distribution and Monetization. Google has made improvements in the following areas:
- Fully redesigned Play Console in beta:
- Clearer and easier to use - the new console is equipped with updated navigation, new releases overview, managed publishing and updated status view
- More / faster ways to get answers needed - by offering the new inbox feature, access to new education pages for new features without having to sign in and console-wide unified search
- Better understanding of performance over time - by providing Improved reports and more benchmarks
- Better team management - with different access for different users that enables more granular control
- Android app bundle for optimized app distribution:
The console now has App bundle explorer. For games, Google Play Asset Delivery offers free dynamic delivery of game assets including three delivery modes (install time, on-demand and Fast follow.)
- Enhanced Play Commerce:
Focuses on building a trustworthy ecosystem to help retain users, and support a great developer experience through a modern platform. Google Play billing is focused on increasing your access to more customers around the world.
This week again is packed with valuable information. All the changes made in the new Google Play Console are aimed to help reach and engage more users. For example, the Pre-launch report will help identify issues with the app before your users see them; Subscription report helps optimize the revenue growth and Acquisition report helps you understand how to grow your audience. Also, it’s important to note that new apps and games will be required to publish with the Android App Bundle in the second half of 2021. But no need to worry! There are lots of improvements made to help you develop, test, and publish with app bundles!
Week 9 - Android Beyond Phones (August 10-14)
This week we are talking about the devices other than our phones. Android TV, Wear OS, Chrome OS, Android Auto, and the embedded Android Automotive OS all have made updates to help target these devices.
With the current pandemic, the time spent watching TV on a streaming device has risen as much as 81% year over year, making now an important time to add improvements on Android TV.
- Google Play Instant - Now available on Android TV, enables native apps and games to launch on devices without being installed, getting users into apps quickly.
- Gboard TV - A redesigned Android TV G-Board is smaller, a Qwerty keyboard, predictive typing and speech-to-text all combine to make typing a better experience.
- Improvements in the Leanback Library - Leanback now supports the new Paging 3 API, has added Top Tab Navigation, and added AppCompat support allowing for shared code bases across mobile and TV.
- Cast Connect - With Cast Connect, A user can cast media from their phone directly to the media’s native Android TV app.
Google has also added improvements to both Android Auto and the embedded Android Automotive OS including:
- Expanded ecosystem – adding new categories to Android Auto including navigation, parking, and electric vehicle charging.
- More adoption Android Automotive OS - Volvo Cars, Renault, General Motors and more have announced plans for infotainment systems powered by Android Automotive OS with Google apps and services built-in.
Due to a rise in foldables, the WindowManager Library has been added to Jetpack, allowing the developer to give the best experience on any new from factor. This allows for developers dynamically change the experience as the user changes the state of their device. Below, Google shows us how Duo will work on a device such as the Samsung Galaxy Z Flip, which allows for both folded and partially folded states, and how the windows move to create a better experience when partially folded.
This week was full of improvements that help developers target the non-phone devices. Today people are becoming multi-screen users, making it vital to develop cleanly for as many devices as possible. From features like Cast Connect to assist a user in controlling their favorite media to ways to write apps that will work dynamically with tablets and foldables, Google is helping developers meet users wherever the are, on whatever device is close to them.
Week 10 - Games and Media (August 17-21)
Week 10 is all about the upkeep and integrity of your games and the new controls available for media.
New updates to help keep your games up to date, high performing, and equal among all devices.
- Performance Tuner enables you to bring the best possible experience to all of your users. It does this with frame rate stability measuring and optimization across Android devices. This will help you find and correct performance issues across your game or app.
- Play Asset Delivery allows for flexible delivery and patching. Using three delivery modes, you control what assets get downloaded when.
- Google Play Licensing API verifies that the version of your game is from the Google Play Store.
- SafetyNet Attestation API verifies that the device has not been modified and the game can be trusted to play on it. Allowing for you to filter out players who are using modified devices.
Android 11 enhanced its system media controls.
- Media Controls have replaced Media Notifications, with a dedicated space that controls the media. Users can swipe between up to 5 media sessions displayed in a collapsed state or an expanded state which gives the users more control options.
- Media Resumption creates media controls for up to 5 recent media apps and puts them in the Media Controls area.
- Seamless Transfer allows the user to easily transfer playback from one device to another. This can be activated by using the new Output Switcher in the Media Controls.
This week was packed with information related to the tools, services, and technologies available on Android 11 to help you build, optimize, and distribute great games. With the enhanced media control, new & updated 5G APIs and freshly added tool support, the aims for these updates in Android 11 are to help you unlock transformative new user experiences, improve your game developer experience and help you better characterize the performance of your game so your game can expand the reach to more devices and new audiences!
Week 11 - UI (August 24-28)
You made it to the last week of 11 Weeks of Android! 🎉
Week 11 is all about Modern Android UI.
Jetpack Compose is Android’s new modern UI toolkit that combines the power of Kotlin with the reactive programming model to make it easier and faster to build UI.
The big news this week is that Jetpack Compose had its first Alpha release. According to the roadmap mentioned earlier by Google, in 2021 Jetpack Compose is expected to reach 1.0 stable version.
Common strategies for integrating Jetpack Compose with an existing Android app includes the followings:
- Integrate Compose in new screens
- Use Compose as a replacement for the View system for part of an existing screen
- Migrate whole fragments or screens to Compose one at a time
For more details, please check out the videos here provided by Google.
Keyboard (IME) animations
Android 11 provides the ability for apps to animate the on screen keyboard using the updated WindowInsets APIs.
Material Design Components
MDC is created to help teams build high-quality digital experiences and it is recommended for the apps to follow the Material Design guidelines to ensure that apps operate consistently, that patterns learned in one app can be used in another. More details can be found here.
The goal of all the UI enhancements mentioned above including Jetpack Compose UI toolkit is to help create more beautiful, engaging UIs for the apps that your users will love. By utilizing the MDC (Material Design Components) library and conforming to the guidelines, it helps make the app maintain the consistency with other apps installed on a user’s device. And also, MDC is a drop-in replacement for Android's Design Support Library so it’s worth all developers taking a look!