Google I/O 2022

Google I/O 2022
Photo by Pawel Czerwinski / Unsplash

Another year has gone by and that means another Google I/O has come and gone with lots of new announcements.(It also means I'm due for at least one new blog post right?)

This post will be a summary of all the android related talks from the event along with the highlights that I found most interesting. I've included links to each video on youtube so that if something piques your curiousity you can go watch the video to get the full details.

Whats new in Google Play

Video Link : https://www.youtube.com/watch?v=d8mn0pmgvGw

Highlights

  • Integration between play vitals and crashlytics
  • Device catalog improvements including (install count per device in the catalog finally)
  • Customized Store listings in google play
  • SDK Console where you can see if the SDKs you use are quality SDKs or not
  • In app update sdk now informs users of an update as quickly as within 15 minutes vs 24 hours previously
  • Automated google scanning of your deep links
  • Live Ops to show features in the play store at targetted users
  • Updates to subscription Offers
  • Play billing 3.0 is deprecated and will be dropped in a few months, Play billing 5 is the new version

Whats New in Android Dev Tools

Video Link : https://www.youtube.com/watch?v=RFv8GkLd5OY

Highlights

  • Compose Animation Preview
  • Jank Detection
  • Updates to the Build analyzer
  • Lint checks for google play SDK Index
  • Gradle managed devices for device tests
  • Baseline Profiles
  • Release build profiling
  • Updated Logcat
  • Physical Device Embed
  • Layout validation/design help
  • Live Edit for Compose
  • Animation Preview
  • Recomposition Counts in Layout Inspector
  • Crashlytic Integration in Studio

Updates in Fragments

Video Link : https://www.youtube.com/watch?v=OE-tDh3d1F4

Highlights

  • Repeat On Lifecycle coroutine for lifecycle dependent actions
  • SharedViewModels using requireParentFragment() as owner
  • Fragment Result API
  • Fragment testing
  • Menu and toolbar via MenuHost and MenuProvider
  • Fragment strict mode policy builders

Best practices for running background work on Android

Video Link : https://www.youtube.com/watch?v=t1_8WSEguDY

Highlights

  • FCM Policy changes, Jobscheduler behavior changes, Increase consistency across devices
  • Manufacturer customizations can break developers foreground services expectations.
  • App Restrictions are being standardized to combat device inconsistency
  • App Restriction levels: Unrestricted, Optimized, Restricted, background restricted
  • Unrestricted is user choice only
  • Optimized is default level
  • The more your app is used, the more likely you will be in an optimized and active state
  • Background restricted is user choice, this level may break your app and its expectations
  • Job Scheduler Pre-Fetch jobs will be deferred closer to the estimated app launch time
  • JobScheduler Priority API to provide more info
  • JobScheduler priorities are not compared across apps, just used for jobs within an app
  • Network Transfer job api, provide a way to estimate how much network traffic your job will require
  • Expedited jobs run faster for apps that are "on top"
  • Foreground permission if denied will mean foreground service notifications wont show up. Service will still work as before.
  • Foreground notifications can now be swiped away
  • New Foreground Service Task manager for user
  • High Priority FCM Messages quota will now longer be tied to app stand by buckets, this will help apps that run less often,but still need to send time sensitive FCM messages
  • Apps that do not display a notification alongside a high priority FCM will see their messages automatically downgraded by the system

What's new in Android media

Video Link : https://www.youtube.com/watch?v=Ba70zmFZgk0

Highlights

  • HDR Video Support Standardized
  • Spatial Audio
  • Midi 2.0
  • Media3 & Exoplayer Updates
  • Device Performance Classes
  • AV1

Basics for system back

Video Link : https://www.youtube.com/watch?v=Elpqr5xpLxQ

Highlights

  • History of back in android
  • Improvements to Gesture Navigation
  • Let system know if you handle back
  • Ahead of time model for back nav
  • Window callback to implement
  • Android 13, new behavior is opt in
  • Android 14, behavior will be defaulted
  • AndroidX Activity 1.6.0
  • BackHandler Composable for ComposeUI
  • Platform API for lower level handling

What's new in Android Camera

Video Link : https://www.youtube.com/watch?v=n8mubjwEVxQ

Highlights

  • Android camera report -> Popular use cases
  • Use CameraX in your apps
  • CameraX v 1.1.0 update, includes video capture
  • Expanded CameraX test lab, over 150 android models
  • Improve Preview Quality, for effects and AR
  • HDR Video capture
  • CameraX extensions will come quicker

What's new in Firebase

Video Link : https://www.youtube.com/watch?v=i0VNBvCqpgI

Highlights

  • Firebase Extensions, custom use cases using your code
  • Revenuecat, stripe, snap extensions
  • Firebase Hosting preview channels
  • Firebase hosting support for Angular, Next.js
  • Flutter Plugins
  • Flutter Crashlytics
  • Swift UI, iOS SDk firebase SDK updates
  • App Check firebase beta
  • App check protects APIs by verifying traffic hitting your API is truly from your app and a trusted device
  • Firebase app distribution is GA
  • Firebase Perf now supports setting alerts for issues
  • Crashlytics integration with Android Studio
  • Crashlytic filtering based on Play store tracks

Designing apps for large screens

Video Link : https://www.youtube.com/watch?v=pvdqeIM6mh0

Highlights

  • Consider how the larger screen devices are held vs a phone
  • More content and longer sessions are more typical
  • Opportunity for more capabilities with the larger devices
  • Comfort, Capability, Efficiency, Immersion
  • Expand and Reorganize, Combine content
  • Drag n Drop between apps
  • Consider mouse, keyboard, stylus
  • Foldables + Tablets are fastest growing device segment

Performance best practices for Jetpack Compose

Video Link : https://www.youtube.com/watch?v=EOQB8PTLkpY

Highlights

  • Check for perf issues in release mode not debug
  • rely on remember to cache expensive operations
  • LazyList Keys to help list performance
  • Provide keys to your Lazy Lists
  • derivedStateOf function to help reduce compositions
  • 3 Phases: Composition, Layout, Draw
  • Defer reading state as long as possible
  • Avoid "Backwards writes"
  • Baseline Profile
  • Macrobenchmark library for testing baseline profiles

What's new in Jetpack

Video Link : https://www.youtube.com/watch?v=jTd82lcuHTU

Highlights

  • 90% of top 1,000 apps rely on multiple jetpack libraries
  • Room 2.4.2 now uses KSP, and kotlin 1.6
  • Room-Paging artifact for use with paging 3.0
  • Map return types for joins
  • Room auto migrations
  • Paging 3.0 stable and uses kotlin coroutines
  • Navigation component support for jetpack compose
  • Navigation supports two-pane layout
  • Baseline profiles for AOT compilation and improve start up times or reduce jank
  • Macrobenchmark library updates
  • WindowManager jetpack library
  • DragAndDrop jetpack library
  • Over 100 of the top 100 apps using compose in prod
  • Twitter, Airbnb, Playstore
  • Compose 1.2 in beta
  • Nested scrolling interop with old android view system
  • Downloadable fonts in compose
  • Live edit, recomp debugging, compose animation preview
  • Lots of compose workshops
  • androidx on github and open to Pull Requests

Lazy layouts in Compose

Video Link : https://www.youtube.com/watch?v=1ANt65eoNhQ

Highlights

  • LazyColumn, LazyRow, LazyGrid
  • contentPadding to prevent clipping
  • Arrangement.spacedBy to give spacing between items
  • rememberLazyListState() in your Lazy layout
  • derivedStateOf
  • GridCells.Adaptive() to expand with screen size nicely
  • GridItemSpan()
  • LazyLayout experimental layout comparable to recyclerview LayoutManager for getting really customized
  • Item Animations
  • item types in lazy layouts to help performance

What's new in app performance

Video Link : https://www.youtube.com/watch?v=DYdHLqLVspY

Highlights

  • Perfetto web app to dig through app traces
  • Baseline profiles for start up time improvement
  • Macrobenchmark library
  • App Startup Library
  • Jank detection in AS dolphin profiler
  • ART updates and runtime improvements outside of the android release cycle beginning with andorid 12
  • New openJDK APIs will be able to be made available because of these ART improvements
  • New GC is coming to ART

Optimize app health with Firebase Performance Monitoring and Crashlytics

Video Link : https://www.youtube.com/watch?v=ENaOg5YefjQ

Highlights

  • Crashlytic + Play store linking
  • Firebase analytics screenview via fragments
  • Crashlytics coming to android studio plugin
  • Performance Alerts are out of beta