• 3 things to know about Android Studio from Android Dev Summit 2019
    by Android Developers on November 15, 2019 at 7:40 pm

    Posted by Deepanshu Madan, Product Manager Last month’s #AndroidDevSummit was jam-packed with announcements and technical news…so much that we wouldn’t be surprised if you missed […]

  • Still Using InstallBroadcast? Switch to the Play Referrer API by March 1, 2020
    by Android Developers on November 15, 2019 at 5:38 pm

    Posted by Marcus Leal, Product Manager, Google Play Ads How do people find your app? It’s the million-dollar question for any developer, and the answer can help you make the right choices […]

  • Kotlin: Serializable Objects
    by Mark Allison on November 15, 2019 at 10:00 am

    When is a Kotlin object not a Kotlin object? When it’s a Serializable Kotlin object. This blog post is the story of a strange issue that I encountered recently where a Kotlin object stopped […]

  • 3 things to know about Kotlin from Android Dev Summit 2019
    by Android Developers on November 13, 2019 at 9:33 pm

    Posted by David Winer, Kotlin Product Manager, @davidjwiner Last month’s #AndroidDevSummit was jam-packed with announcements and technical news…so much that we wouldn’t be surprised if […]

  • 3 things to know about Jetpack Compose from Android Dev Summit 2019
    by Android Developers on November 13, 2019 at 5:00 pm

    Posted by Anna-Chiara Bellini, @dr0nequeen Last month’s #AndroidDevSummit was jam-packed with announcements and technical news…so much that we wouldn’t be surprised if you missed […]

  • Final “Elements of Android Q” Released
    by CommonsWare on November 11, 2019 at 12:58 pm

    Subscribers now have access to the final version of Elements of Android Q, in PDF, EPUB, and MOBI/Kindle formats. Just log into your Warescription page to download it, or set up an account and […]

  • Fixing Android Studio Keyboard Shortcuts
    by Dan Lew on November 11, 2019 at 12:40 pm

    I absolutely adore keyboard shortcuts because they save me both time and money. However, there are two cases where they’ve failed me recently on Android Studio (on macOS).First is the “Find Actions” […]

  • Scoped Storage Stories: Trees
    by CommonsWare on November 9, 2019 at 3:13 pm

    Android 10 is greatly restricting access to external storage via filesystem APIs. Instead, we need to use other APIs to work with content. This is the fourth post in a series where we will explore […]

  • AnimatedIcons: Loading V3
    by Mark Allison on November 8, 2019 at 10:00 am

    There is a nice micro-animation library at useanimations.com which contains some useful animations which are particularly well suited for animated icons. These are all free to use and downloadable at […]

  • Unit Testing Coroutine Suspend Functions using TestCoroutineDispatcher
    by Craig Russell on November 8, 2019 at 12:00 am

    Kotlin coroutines provide an elegant way to write asynchronous code, but sometimes coroutines make it difficult to write unit tests. This post describes how to use TestCoroutineDispatcher to write […]

  • Modern app and game distribution on Google Play
    by Android Developers on November 7, 2019 at 10:00 am

    Posted by Kobi Glick, Product Lead, Google Play Today we’re kicking off Playtime, our annual event series where we host developers from all over the world to discuss features and best […]

  • Privacy protections for physical activity in Android 10
    by Android Developers on November 6, 2019 at 9:30 pm

    Since Google Fit was released in 2015, apps with an abundance of features for health and fitness tracking have integrated with the Google Fit APIs. Over the years, the number of users using Google […]

  • Speaking at Øredev 2019 – Automate All The Things
    by goobar.io on November 6, 2019 at 2:28 pm

    I had a great time speaking at Øredev Developer Conference today in Malmö, Sweden. Øredev is quite a bit larger than the typical conference I’m used to speaking at, so […]

  • Introducing Google Play Points in the U.S.
    by Android Developers on November 4, 2019 at 5:59 pm

    Posted by Paul Feng, Product Manager, Google Play At Google Play, we continue to build new experiences to delight users and help developers succeed. Today, we’re excited to announce that […]

  • “Exploring Android” Version 0.9 Released
    by CommonsWare on November 4, 2019 at 1:32 pm

    Subscribers now have access to an update to Exploring Android, known as Version 0.9, in PDF, EPUB, and MOBI/Kindle formats, in addition to the online reader. Just log into your Warescription page and […]

  • Scoped Storage Stories: DocumentFile
    by CommonsWare on November 2, 2019 at 11:59 am

    Android 10 is greatly restricting access to external storage via filesystem APIs. Instead, we need to use other APIs to work with content. This is the third post in a series where we will explore how […]

  • BottomNavigationView: Animating Icons
    by Mark Allison on November 1, 2019 at 10:00 am

    There is an occasional series on Styling Android which covers techniques for creating Animated Icons as AnimatedVectorDrawable and AnimatedStateListDrawable. These are quite easy to use when using […]

  • One Biometric API Over all Android
    by Android Developers on October 30, 2019 at 9:47 pm

    Posted by Isai Damier, Android Developer Platform Engineering (@isaidamier) Kevin Chyn, Android Framework Curtis Belmonte, Android Framework With the launch of Android 10 (API level 29), […]

  • Exploring Jetpack Compose: Text
    by hitherejoebirch on October 30, 2019 at 7:45 am

    Within Android Studio 4.0 Canary 1 we can start exploring Jetpack compose, a new way to build the UI for your android applications in a declarative manner. To get started with jetpack compose, there […]

  • D8 Optimizations
    by Jake Wharton on October 30, 2019 at 12:00 am

    Note: This post is part of a series on D8 and R8, Android’s new dexer and optimizer, respectively. For an intro to D8 read “Android’s Java 8 support”. For an intro to R8 read […]

  • Why I Left Lyft
    by Artem Zinnatullin on October 29, 2019 at 8:35 pm

    I joined Lyft in July 2017. It’s been 2.5 years and it’s the longest job I’ve had in my life so far. It was a bumpy ride in the beginning though. I joined to work on Mobile Infrastructure: tools, […]

  • Scoped Storage Stories: Durable Access
    by CommonsWare on October 27, 2019 at 12:08 pm

    Android 10 is greatly restricting access to external storage via filesystem APIs. Instead, we need to use other APIs to work with content. This is the second post in a series where we will explore […]

  • Code Comments
    by Donn Felker on October 25, 2019 at 5:30 pm

    When it’s it appropriate to comment code? I follow a simple set of rules: If the code is confusing – I try to refactor the code so that it’s not confusing anymore. If a refactoring […]

  • Dagger Open JDK Version Mismatch
    by Donn Felker on October 25, 2019 at 1:11 pm

    While working on a client project I recent received this error: An exception occurred: java.lang.IllegalArgumentException: not a valid name: <set-?>Provider Googling for the error didn’t […]

  • AnimatedIcons: Plus / X
    by Mark Allison on October 25, 2019 at 9:10 am

    There is a nice micro-animation library at useanimations.com which contains some useful animations which are particularly well suited for animated icons. These are all free to use and downloadable at […]

  • Android Dev Summit 2019
    by goobar.io on October 25, 2019 at 6:38 am

    Android Dev Summit 2019 just wrapped up, and I have to say I had a really great time. I love the 100% Android focus, and I appreciate the direct access to Googlers, devices, tools, and announcements. […]

  • High engagement, larger screens: How Android developers can reach users on any device
    by Android Developers on October 24, 2019 at 5:19 pm

    Posted by Allan Livingston, Product Management Director, Chrome OS App Ecosystem Android fuels mobile apps on devices that range far beyond your typical small-screen smartphone, from new Chromebooks […]

  • Exploring Jetpack Compose: Button
    by hitherejoebirch on October 24, 2019 at 12:33 pm

    Within Android Studio 4.0 Canary 1 we can start exploring Jetpack compose, a new way to build the UI for your android applications in a declarative manner. To get started with jetpack compose, there […]

  • A modern approach to Android development, with Jetpack Compose and more!
    by Android Developers on October 23, 2019 at 7:35 pm

    Posted by Stephanie Cuthbertson, Director, Product Management Modern Android Development today Perhaps as a consequence of Android’s flexibility, we often get asked by developers what does the […]

  • Android Developer Challenge: helpful innovation, powered by On-Device Machine Learning + you!
    by Android Developers on October 23, 2019 at 5:45 pm

    Posted by The Android team Developers like you have always played an important role in shaping the direction of Android, fueling the wave of Android innovation. It’s the reason that when we […]

  • All About Updates: More Treble
    by Android Developers on October 23, 2019 at 4:44 pm

    Posted by Iliyan Malchev, Project Treble Architect Android 10, our newest release, brings helpful tools for both developers and consumers like suggested actions in Smart Reply to help you multitask […]

  • How To Fix: Jest Did Not Exit
    by Donn Felker on October 23, 2019 at 12:05 pm

    I was recently doing some work on a Node.JS project and I decided to use Knex.js with Objection.js for my data access to PostgreSQL. Problem In usual fashion, I wrote some tests to validate the […]

  • Celebrating 1 year of Google Play’s Academy for App Success
    by Android Developers on October 22, 2019 at 5:00 pm

    Posted by Dan Lavelle, Head of Learning Operations, Google Play One year ago, we introduced the Academy for App Success , an e-learning platform to help apps and games businesses who want to grow […]

  • Here’s how to watch the 2019 Android Dev Summit!
    by Android Developers on October 22, 2019 at 3:00 pm

    We’re less than 24 hours away from kicking off the 2019 Android Dev Summit, broadcasting live from the Google Events Center (MP7) in Sunnyvale, CA on October 23 & 24. We’ll be […]

  • Android Automotive OS updates for developers
    by Android Developers on October 21, 2019 at 5:13 pm

    Posted by Madan Ankapura, Product Manager, Android Google’s vision is to bring a safe and seamless connected experience to every car. Since 2017, we have announced collaborations with vehicle […]

  • I Wrote A Book!
    by goobar.io on October 21, 2019 at 5:18 am

    I wrote a book! 📙 Very excited to share that the book I’ve been working on all year is finally finished and available! Mastering Kotlin: Learn advanced Kotlin programming techniques to […]

  • Scoped Storage Stories: SAF Basics
    by CommonsWare on October 19, 2019 at 2:23 pm

    Android 10 is greatly restricting access to external storage via filesystem APIs. Instead, we need to use other APIs to work with content. This is the first post in a series where we will explore how […]

  • Image Convolution: Implementation
    by Mark Allison on October 18, 2019 at 9:00 am

    Many commercial image processing applications have various effects which are achieved using convolution matrices. These are actually pretty easy to implement on Android and enable us to apply some […]

  • Introducing NDK r21: our first Long Term Support release
    by Android Developers on October 17, 2019 at 5:25 pm

    Posted by Dan Albert, Android NDK Tech Lead Android NDK r21 is now in beta! It’s been a longer than usual development cycle (four months since NDK r20), so there’s quite a lot to […]

  • Better Custom Views with Delegates
    by Márton Braun on October 17, 2019 at 2:00 pm

    Reusable UI components are all the rage these days. In this article, we’ll take a look at implementing custom components easily by using Kotlin’s delegates. […]

  • Exploring Android Leanback: Browse Branding
    by hitherejoebirch on October 17, 2019 at 12:00 pm

    When it comes to building apps for Android TV, things get pretty different when compared to building apps for phones. The experience completely changes for the user – in both the way that […]

  • Lessons Learnt with Kotlin: Extension Functions
    by franks.rebecca on October 16, 2019 at 9:32 am

    At Over, we’ve been using Kotlin since we started the new Android version of the app in November 2018. From day one, we’ve been excited to try the language features and leverage them to […]

  • R8 Optimization: Enum Switch Maps
    by Jake Wharton on October 16, 2019 at 12:00 am

    Note: This post is part of a series on D8 and R8, Android’s new dexer and optimizer, respectively. For an intro to D8 read “Android’s Java 8 support”. For an intro to R8 read […]

  • Over ❤️ Kotlin – How we’ve used Kotlin to build our design app
    by franks.rebecca on October 14, 2019 at 10:32 am

    I recently presented this talk at Kotlin Everywhere South Africa as the keynote for the event. I really enjoyed preparing this talk as it spoke about how we use Kotlin, mistakes we’ve made […]

  • The Storage Situation: Removable Storage
    by CommonsWare on October 11, 2019 at 12:17 pm

    Back in 2014, I wrote a series of blog posts to try to clear up confusion around where you can read and write files in Android. I updated them in 2017 to reflect changes in Android… but […]

  • Image Convolution: Theory
    by Mark Allison on October 11, 2019 at 9:00 am

    Many commercial image processing applications have various effects which are achieved using convolution matrices. These are actually pretty easy to implement on Android and enable us to apply some […]

  • Spoiler Alert!
    by CommonsWare on October 10, 2019 at 12:56 pm

    Every weekday, as part of maintaining AndroidX Tech, I round up all of the new and updated artifacts that are available on Google’s Maven repo (those that begin with androidx., anyway). […]

  • Practical SwiftUI: Onboarding UI
    by hitherejoebirch on October 10, 2019 at 12:07 pm

    At WWDC this year we saw the announcement for SwiftUI, a new way to build user interfaces for our iOS applications in a declarative manner. Whilst SwiftUI is still in beta and there are likely […]

  • Previewing #AndroidDevSummit: Sessions, App, & Livestream Details
    by Android Developers on October 9, 2019 at 10:45 pm

    Posted by The #AndroidDevSummit team In two weeks, we’ll be welcoming Android developers from around the world at Android Dev Summit 2019, broadcasting live from the Google Events Center (MP7) in […]

  • Media Store access using openFile() on Android 10
    by hitherejoebirch on October 9, 2019 at 6:06 am

    As of Android 10, things have changed slightly with how we access files that are contained outside of our application. This change of behaviour has come from the concept of scoped storage – […]

  • R8 Optimization: Enum Ordinals and Names
    by Jake Wharton on October 9, 2019 at 12:00 am

    Note: This post is part of a series on D8 and R8, Android’s new dexer and optimizer, respectively. For an intro to D8 read “Android’s Java 8 support”. For an intro to R8 read […]

  • The Storage Situation: External Storage
    by CommonsWare on October 8, 2019 at 12:00 pm

    Back in 2014, I wrote a series of blog posts to try to clear up confusion around where you can read and write files in Android. I updated them in 2017 to reflect changes in Android… but […]

  • The Storage Situation: Internal Storage
    by CommonsWare on October 6, 2019 at 1:36 pm

    Back in 2014, I wrote a series of blog posts to try to clear up confusion around where you can read and write files in Android. I updated them in 2017 to reflect changes in Android… but […]

  • AnimatedIcons: Strikethru
    by Mark Allison on October 4, 2019 at 9:00 am

    There is a nice micro-animation library at useanimations.com which contains some useful animations which are particularly well suited for animated icons. These are all free to use and downloadable at […]

  • Using Firebase on Android with Kotlin Coroutines
    by hitherejoebirch on October 3, 2019 at 12:17 pm

    Whilst recently working on a side project I ran into a situation where I needed to make use of the Android Firebase SDKs. This project of mine uses Kotlin Coroutines for all of the asynchronous task […]

  • Continuous testing with new Android emulator tools
    by Android Developers on October 2, 2019 at 9:14 pm

    Posted by Lingfeng Yang, Android Studio team Developers often use the Android Emulator during their day-to-day development to quickly test the latest changes before they are being committed. In […]

  • View Binding: Performance
    by Mark Allison on September 27, 2019 at 9:00 am

    In September 2019 Google released Android Studio 3.6 Canary 11 to the Canary channel. This had an interesting new addition: View Binding. In this short series we’ll take a look at how it works, […]

  • R8 Optimization: Class Reflection and Forced Inlining
    by Jake Wharton on September 25, 2019 at 12:00 am

    Note: This post is part of a series on D8 and R8, Android’s new dexer and optimizer, respectively. For an intro to D8 read “Android’s Java 8 support”. For an intro to R8 read […]

  • Unlock your creativity with Google Play Pass
    by Android Developers on September 23, 2019 at 4:25 pm

    Posted by Shazia Makhdumi, Global Head of Play Pass Business Development With over 2.5 billion active Android devices, Google Play helps your apps and games get discovered by billions of users […]

  • New! Android Kotlin codelab courses are here
    by Android Developers on September 20, 2019 at 7:54 pm

    Posted by Jocelyn Becker, Senior Program Manager, Google Developer Training Want to learn to build Android apps in Kotlin? Get started with the Kotlin Bootcamp for Programmers and Developing […]

  • View Binding: Internals
    by Mark Allison on September 20, 2019 at 9:00 am

    In September 2019 Google released Android Studio 3.6 Canary 11 to the Canary channel. This had an interesting new addition: View Binding. In this short series we’ll take a look at how it works, […]

  • Calculating the true impact of zip file entries
    by Jake Wharton on September 20, 2019 at 12:00 am

    How can we determine the impact of each entry on a zip file’s size? It seems like a trivial problem, but things quickly don’t add up. There’s three built-in ways to read […]

  • Exploring View Binding on Android
    by hitherejoebirch on September 18, 2019 at 1:59 pm

    When it comes to manipulating our user interfaces within Android applications, there are a couple of approaches that we can take. In these cases, we need to obtain a reference these views in-order to […]

  • When to Use Sequences
    by author@typealias.com (Dave Leeds) on September 16, 2019 at 12:00 am

    One of the most common questions I get about Kotlin’s sequences is this: “When should I use sequences, and when should I use normal collections?” That’s the question […]

  • AnimatedIcons: Loading V2
    by Mark Allison on September 13, 2019 at 9:00 am

    There is a nice micro-animation library at useanimations.com which contains some useful animations which are particularly well suited for animated icons. These are all free to use and downloadable at […]

  • Feature flags – A successful architecture
    by Jeroen Mols on September 11, 2019 at 10:00 pm

    Now that we know how feature flags can help us release faster, it’s time to dive into the actual implementation details. How can we easily define feature flags? How to configure them both […]

  • Why I’m No Longer Traveling for Conferences
    by Dan Lew on September 10, 2019 at 2:00 pm

    I am a tech conference junkie. I owe much of my career to them: The amount of knowledge I’ve learned is immense, I greatly enjoy being surrounded by tech people, and I get a real high from […]

  • Book (P)review: Living by the Code
    by Márton Braun on September 9, 2019 at 1:00 pm

    I can’t tell you how much I’ve been anticipating this book ever since I first heard it announced. This is a very short review, because really, you should read it yourself. But let me spoil one thing: […]

  • 2019 BMW R9T Radiator Guard Install
    by Artem Zinnatullin on September 8, 2019 at 10:40 pm

    Table of Contents Requirements Warnings Radiator Guard Directions Photos Before Photos After Requirements Radiator Guard T27 Torx Bit Driver/Wrench Extender to reach the left bolt (it’s a bit […]

  • Trust but verify attestation with revocation
    by Google Developers on September 6, 2019 at 6:40 pm

    Posted by Rob Barnes & Shawn Willden, Android Security & Privacy Team Billions of people rely on their Android-powered devices to securely store their sensitive information. A vital […]

  • Expand your app beyond mobile to reach Android users at large
    by Android Developers on September 5, 2019 at 6:58 pm

    Posted by Sameer Samat, Vice President, Platforms & Ecosystems From day one, we designed Android to be a flexible, adaptive platform. Most people picture a smartphone when they think of […]

  • Welcoming Android 10!
    by Android Developers on September 3, 2019 at 5:02 pm

    Posted by Stephanie Cuthbertson, Senior Director of Product Management, Android After more than a year of development and months of testing by early adopters, we’re ready to introduce Android […]

  • Increased Google Play Review Times?
    by goobar.io on September 2, 2019 at 11:38 pm

    Have you seen increased app review times when submitting apps via the Google Play Console? There have been several posts from Google over the past few months indicating that more time will be spent […]

  • Committed to a safer Google Play for Families
    by Android Developers on August 30, 2019 at 6:29 pm

    Posted by Kanika Sachdeva, Product Manager, Google Play In May, we launched new Families policies to provide additional protections for children and families on Google Play. As part of this policy […]

  • Expanding bug bounties on Google Play
    by Android Developers on August 29, 2019 at 4:30 pm

    Posted by Adam Bacchus, Sebastian Porst, and Patrick Mutchler — Android Security & Privacy We’re constantly looking for ways to further improve the security and […]