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 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 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!