• GitHub CLI – GitHub From The Command Line
    by Nate Ebel on April 1, 2020 at 4:30 pm

    Learn to use GitHub CLI to manage your issues and pull requests. We’ll walk through the use of GitHub CLI for common developer workflows. The post GitHub CLI – GitHub From The Command Line […]

  • Introducing jetc.dev!
    by CommonsWare on April 1, 2020 at 12:17 pm

    I am running a weekly email newsletter about Jetpack Compose. You can find the latest issue and archives at jetc.dev. It’s your typical “roundup of new resources” newsletter, with a […]

  • Meet the finalists of the Google Play Indie Games Festival
    by Android Developers on March 30, 2020 at 4:41 pm

    Posted by Leticia Lago, Head of Developer Marketing, EMEA At the start of this year we opened submissions for 2020’s Google Play Indie Games Festival – an international competition […]

  • “Elements of Android R” Version 0.1 Released
    by CommonsWare on March 30, 2020 at 12:07 pm

    Subscribers now have access to Version 0.1 of Elements of Android R, in PDF, EPUB, and MOBI/Kindle formats. Just log into your Warescription page to download it, or set up an account and subscribe! […]

  • A Peek at SurfaceControlViewHost in Android R
    by CommonsWare on March 27, 2020 at 10:51 pm

    One of the items that I found interesting in the second half of my R DP2 random musings was SurfaceControlViewHost. I experimented with it this week, and it at least partially works. In a nutshell: […]

  • Android 11: WindowInsets
    by Mark Allison on March 27, 2020 at 10:00 am

    Getting Window Insets working correctly can be tricky. It’s a subject that we’ve looked at before on Styling Android and we covered some of the complexity involved in that article. With […]

  • Run ARM apps on the Android Emulator
    by Android Developers on March 26, 2020 at 5:42 pm

    Posted by Michael Hazard As part of the Android 11 developer preview we’ve released Android 11 system images, which are capable of executing ARM binaries with significantly improved […]

  • D8 Optimization: Assertions
    by Jake Wharton on March 25, 2020 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 […]

  • Google for Games Developer Summit March 2020
    by Android Developers on March 23, 2020 at 3:30 pm

    Posted by Greg Hartrell, Head of Product Management, Games on Android & Google Play While we’re sorry we didn’t get to see you all in person at GDC, we hope you are all staying healthy and […]

  • R Raw Paths and All Files Access
    by CommonsWare on March 22, 2020 at 11:06 pm

    In R DP1, I could not get the “raw paths” feature or the “all files access” feature to work. […]

  • More Random Musings on R DP2!
    by CommonsWare on March 20, 2020 at 10:15 pm

    Rich Hong pointed me to the DP1 -> DP2 API differences report. Which is really good, because, as it turns out, all the cool stuff isn’t in the actual R DP2 docs. […]

  • AnimatedIcons: Archive
    by Mark Allison on March 20, 2020 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 […]

  • Random Musings on the R Developer Preview 2
    by CommonsWare on March 19, 2020 at 11:36 pm

    Each time Google releases a new developer preview, I read what I can to see if there are things that warrant more attention from developers. I try to emphasize mainstream features that any developer […]

  • Building an App with Kotlin Multiplatform: Building our Authentication module
    by hitherejoe on March 19, 2020 at 7:25 am

    In the last post we outlined the foundations for how our kotlin multiplatform project is going to be structured. With this in mind, we’re going to start building the next part of our project […]

  • Android 11: Developer Preview 2
    by Android Developers on March 18, 2020 at 5:01 pm

    Posted by Dave Burke, VP of Engineering It’s been a difficult few months for many around the world. The Android team at Google is a global one, and we, like many of you, are learning how to […]

  • Removing Google as a Single Point of Failure Part 2: Gmail
    by Jake Wharton on March 18, 2020 at 12:00 am

    I want to remove Google as a single point of failure in my life. In the first blog post on this subject I detailed my setup for backing up Google Photos and Google Drive contents onto my home server […]

  • Why Trailing Commas In Kotlin Are Hype
    by Egor Andreevich on March 14, 2020 at 8:52 pm

    Kotlin 1.3.70 landed last week with a bunch of new APIs, bug fixes and tooling improvements (check out the release blog post), but a small change that mostly flew under the radar is this:KT-34743 […]

  • Connectivity
    by Mark Allison on March 13, 2020 at 10:00 am

    I am a firm believer that everything that we do as app developers should be focused on UX – what the user experiences when using our app. While things like adding analytics gathering may not […]

  • Handling Nullability in Android 11 and Beyond
    by Android Developers on March 12, 2020 at 4:00 pm

    Posted by David Winer, Kotlin Product Manager Last May at Google I/O, we announced that Android was going Kotlin first, and now over 60% of the top 1000 Android apps use Kotlin. One feature we […]

  • Exploring Dynamic Feature Navigation on Android
    by hitherejoe on March 12, 2020 at 7:04 am

    Since the introduction of the Navigation Component on Android, navigating the different parts of our application has become much more pleasant to implement. We’ve been able to better decouple […]

  • Preventing coroutine cancellation for important actions
    by Craig Russell on March 11, 2020 at 12:00 am

    This post describes a pattern of launching coroutines which cancel when the Activity or ViewModel is destroyed, but support allowing important parts of the coroutine to run uncancelled. Overview When […]

  • Join us for the digital Google for Games Developer Summit
    by Android Developers on March 10, 2020 at 6:20 pm

    Posted by the Google for Games Team Last month, Game Developers Conference (GDC) organizers made the difficult decision to postpone the conference. We understand this decision, as we have to […]

  • My 1st screen cast: awk program from scratch
    by Kaushik Gopal on March 10, 2020 at 12:00 am

    Two big announcements: […]

  • AnimatedIcons: Play / Pause Circle
    by Mark Allison on March 6, 2020 at 10:05 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 […]

  • Android Platform Codelab Kickstarts OS Development
    by Android Developers on March 6, 2020 at 1:47 am

    Posted by Sam Saccone, Software Engineer and Clay Murphy, Technical Writer The Android Platform Codelab has been published to take developers from bare metal to a (virtual) device under test in a […]

  • //TODO Live Templates
    on March 6, 2020 at 12:00 am

    Throughout my career, I have worked in projects of all sizes. I have taken part in greenfield projects and some that are a few years old. One of the lessons I have learned over the years is that no […]

  • Android R: A Rough Start
    by CommonsWare on March 5, 2020 at 11:03 pm

    I had hoped to have a first version of Elements of Android R out soon. However, so far, the only Android R feature that I have found that works as advertised is the one-time permission grant. […]

  • Unveiling expert insights in our new podcast series: Apps, Games, & Insights
    by Android Developers on March 5, 2020 at 6:51 pm

    Posted by Lily Sheringham, Global Marketing, Platforms & Ecosystems UPDATE: We have updated the launch date of some of the episodes due to the current circumstances with COVID-19, please check […]

  • Exploring Jetpack Compose: Floating Action Button
    by hitherejoe on March 5, 2020 at 11:58 am

    The floating action button is an important component in mobile applications – allowing us to showcase primary actions for our users to carry out. Within Jetpack Compose we can create Floating […]

  • Variables, Expressions, and Types
    by author@typealias.com (Dave Leeds) on March 5, 2020 at 12:00 am

    So you want to be a Kotlin programmer? You’ve come to the right place! This series will take you through the fundamentals of Kotlin, gently introducing you to the core concepts of the language, […]

  • Coroutine Cancellation 101
    by Márton Braun on March 4, 2020 at 7:00 pm

    A brief introduction to the basics of coroutine cancellation. […]

  • Update on Google at GDC 2020
    by Android Developers on March 3, 2020 at 5:00 pm

    Posted by the Google for Games Team Last Friday, GDC 2020 organizers made the difficult decision to postpone the conference. We understand this decision, as we have to prioritize the health and […]

  • Scoped Storage Stories: More on RecoverableSecurityException
    by CommonsWare on March 3, 2020 at 1:07 pm

    Android 10 and higher are greatly restricting access to external storage via filesystem APIs. Instead, we need to use other APIs to work with content. This is the 13th post in a seemingly […]

  • Lessons Learnt with Kotlin: Using inline classes 👩‍🔬
    by Rebecca Franks on March 3, 2020 at 10:32 am

    What is an inline class? 🧐 An inline class is a special type of class defined in Kotlin that only has one property. At runtime, the compiler will “inline” the property where […]

  • Custom Lint Check
    by Mark Allison on February 28, 2020 at 10:00 am

    Back in November 2019 I wrote about an issue that can cause problems when serialising Kotlin objects. It is one thing to know about this issue, but quite another to find all instances of it in your […]

  • Data Encryption on Android with Jetpack Security
    by Android Developers on February 25, 2020 at 11:30 pm

    Posted by Jon Markoff, Staff Developer Advocate, Android Security Have you ever tried to encrypt data in your app? As a developer, you want to keep data safe, and in the hands of the party […]

  • OkHttp + Restricted APIs
    by Jesse Wilson on February 25, 2020 at 4:04 am

    Certain TLS features like Server Name Indication (SNI) and Application-Layer Protocol Negotiation (ALPN) existed in Android before they had public APIs. The code was there; there just wasn’t a […]

  • What’s New In Android? – February 2020
    by Nate Ebel on February 25, 2020 at 3:37 am

    What’s new in Android in February 2020? Quite a lot actually. Discover the latest updates including Android 11 preview, Android Studio 3.6 release, and more. The post What’s New In Android? […]

  • Android Studio 3.6
    by Android Developers on February 24, 2020 at 5:58 pm

    Posted by Scott Swarthout, Product Manager We are excited to announce the stable release of Android Studio 3.6 with a targeted set of features addressing quality in primarily code editing and […]

  • “Elements of Android Jetpack” Version 0.8 Released
    by CommonsWare on February 24, 2020 at 1:29 pm

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

  • Random Musings on the R Developer Preview 1
    by CommonsWare on February 21, 2020 at 2:21 pm

    Each time Google releases a new developer preview, I rummage through the API differences report the high-level overviews, and even the release blog post, to see if there are things that warrant more […]

  • Exploring the Android 11 Developer Preview: Permission Changes
    by hitherejoe on February 21, 2020 at 12:08 pm

    That time of the year has come, a new Android version is on the horizon! As announced in a blog post earlier this week, the first developer preview of Android 11 is now available – along with […]

  • Location
    by Mark Allison on February 21, 2020 at 10:00 am

    Location is a strange thing. As technology advances, the methods available for determining the physical location of a specific device are increasing. This has ramifications for both end-users and us […]

  • Native Dependencies in Android Studio 4.0
    by Android Developers on February 20, 2020 at 10:00 pm

    By Dan Albert, Software Engineer One thing that NDK users struggle with is managing native dependencies: Library authors need to maintain support for both ndk-build and CMake (and hope that […]

  • Turning it up to 11: the first Developer Preview of Android 11
    by Android Developers on February 19, 2020 at 6:03 pm

    Posted by Dave Burke, VP of Engineering Android has led the way towards the future of mobile, with new technologies like 5G to foldable displays to machine learning built into the core. A hallmark […]

  • Safer and More Transparent Access to User Location
    by Android Developers on February 19, 2020 at 5:58 pm

    Posted by Krish Vitaldevara, Director of Product Management Trust & Safety, Google Play Last year, we made several changes to our platform and policies to increase user trust and safety. […]

  • Exploring Jetpack Compose: Modal Drawer Layout
    by hitherejoe on February 19, 2020 at 1:08 pm

    In the last post we took a look at the Top App Bar component within Jetpack Compose. Here we learnt how to create toolbar-like components to hold the title and menu options for screens in our […]

  • git-number to the command line rescue
    by Kaushik Gopal on February 19, 2020 at 12:00 am

    If you’re a programmer these days, you probably spend a large part of your day in git. If you’re a command line zealot like me, you realize the holy ways of using your Terminal app for […]

  • Removing Google as a Single Point of Failure
    by Jake Wharton on February 19, 2020 at 12:00 am

    I want to remove Google as a single point of failure in my life. They have two decades of my email. They have two decades of my photos. They have the only copy of thousands of documents, projects, […]

  • Kdoc for Android libraries using Dokka
    by Jeroen Mols on February 18, 2020 at 11:00 pm

    A great way to make your library easier to use it to generate code documentation for its public interface. The default way to do this in Kotlin is to generate KDoc using the official Dokka plugin. […]

  • Tame Your Gradle Dependencies just BECAUSE!
    by blundell on February 15, 2020 at 9:49 pm

    Did you know you can specify a reason for using a certain dependency or certain version of a dependency? Yep it’s in the API here and referenced in the DOCS here. void because?(@Nullable String […]

  • Handling Device Orientation Efficiently in Vulkan With Pre-Rotation
    by Android Developers on February 14, 2020 at 9:11 pm

    By Omar El Sheikh, Android Engineer Francesco Carucci, Developer Advocate Vulkan provides developers with the power to specify much more information to devices about rendering state compared to […]

  • Animated Icons: Info
    by Mark Allison on February 14, 2020 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 […]

  • Detecting Memory Corruption Bugs With HWASan
    by Android Developers on February 13, 2020 at 9:00 pm

    Posted by Evgenii Stepanov, Staff Software Engineer, Dynamic Tools Native code in memory-unsafe languages like C and C++ is often vulnerable to memory corruption bugs. Our data shows that issues […]

  • Extracting 100% of Data From a Stubborn, Dying ZFS Pool
    by Jake Wharton on February 12, 2020 at 12:00 am

    In 2010 I built a home server with five 2TB drives. It ran Solaris and ZFS for the redundancy and data checksumming to ensure no data could be lost or corrupted. Just 16 months later five 3TB drives […]

  • How we fought bad apps and malicious developers in 2019
    by Android Developers on February 11, 2020 at 6:00 pm

    Posted by Andrew Ahn, Product Manager, Google Play + Android App Safety Google Play connects users with great digital experiences to help them be more productive and entertained, as well as […]

  • Install Referrer Library Permissions Snafu
    by Dan Lew on February 11, 2020 at 2:43 pm

    Update 3/13/2020: Install Referrer 1.1.2 was released recently which fixes the problem below; go get it! It’s been a long time coming: the install_referrer broadcast intent is being shut down on […]

  • KitKat and TLSv1.2
    by Jesse Wilson on February 9, 2020 at 5:15 am

    TLSv1.2 came out in 2008 but Android didn’t get support for it until Android 5 in 2014. Previous releases including Android 4.4 KitKat support up to TLSv1.1 by default. KitKat’s old […]

  • Become a Master Builder with these Android Dev Tools
    by Rebecca Franks on February 7, 2020 at 11:40 am

    Day-to-day tasks as an Android Developer can consist of varying jobs to complete your work effectively. Whether it is making sure your network requests are correct or ensuring pixel-perfect screens, […]

  • View Binding: Merge
    by Mark Allison on February 7, 2020 at 10:00 am

    View Binding was introduced in 2019 and is really nice. I have written about it before. However I recently discovered a small gotcha that is easy to work around, but it did me a frighten when I first […]

  • Exploring Jetpack Compose: TopAppBar
    by hitherejoe on February 7, 2020 at 6:56 am

    In many screens of our applications it’s likely that we’re making use of a Toolbar / AppBar within our Android applications. When it comes to building apps with Jetpack Compose, […]

  • The path to DX deprecation
    by Android Developers on February 4, 2020 at 5:00 pm

    Posted by Leo Sei, Product Manager on Android Back in 2017, we released D8, a new faster dexing compiler to replace DX, producing smaller APKs. In April 2018, we announced D8 as the default option […]

  • 2020
    by Kaushik Gopal on February 4, 2020 at 12:00 am

    2019 has been the year that’s primed me the most for life changes. I imagine 2020 will the be the one where a lot of these changes materialize. […]

  • Kotlin Multiplatform – Cross Platform Development With Kotlin
    by Nate Ebel on February 3, 2020 at 7:34 pm

    Have you tried Kotlin Multiplatform for building cross platform apps? How is Kotlin Multilpatform different from other cross platform solutions? Learn what makes Kotlin Multiplatform a unique and […]

  • Blogging: Writing
    by Mark Allison on January 31, 2020 at 10:00 am

    On 28th March 2011 I published the first ever blog post to Styling Android. Almost 9 years later there are now, as this is published, some 459 published articles. When I first started out, I did not […]

  • You should CD your blog (Firebase Hosting + Circle CI + Docker)
    by Kaushik Gopal on January 29, 2020 at 12:00 am

    This blog now 1 uses Jekyll – a static blog generator that takes markdown as an input and pumps html as output. I then copy it over to my hosting server – Firebase, which then happily serves it to […]

  • Flashing Builds from the Android Open Source Project
    by Android Developers on January 28, 2020 at 5:00 pm

    Posted by Mitchell Wills, Android Build Software Engineer AOSP has been around for a while, but flashing builds onto a development device has always required a number of manual steps. A year ago […]

  • Coroutines and Java Synchronization Don’t Mix
    by Dan Lew on January 28, 2020 at 2:43 pm

    Suppose you’ve got a critical section of code, meaning only one process should execute it at a time. In the Java world, one solution is to slap synchronized on the method and call it a day. In […]

  • Get ready for the Game Developers Conference
    by Android Developers on January 27, 2020 at 5:39 pm

    Posted by Kacey Fahey, Games Developer Marketing, Google Cross-posting from the Google Developers Blog. Join us online or live* at the Google Developer Summits during the Game Developers […]

  • Have You Tried Server Side Kotlin For Backend Services?
    by Nate Ebel on January 27, 2020 at 1:00 pm

    Have you tried server side Kotlin? In this post, you’ll discover several frameworks that support writing server side Kotlin. The post Have You Tried Server Side Kotlin For Backend Services? appeared […]

  • Enabling dark theme in Android WebViews
    by hitherejoe on January 24, 2020 at 11:48 am

    So your apps just implemented a shiny new dark theme and it’s looking 👌 And if you haven’t yet, maybe it’s in the pipeline for you to work on sometime in the future! There […]

  • Blogging: Ideation
    by Mark Allison on January 24, 2020 at 10:00 am

    On 28th March 2011 I published the first ever blog post to Styling Android. Almost 9 years later there are now, as this is published, some 458 published articles. When I first started out, I did not […]

  • Your Privilege is Showing
    on January 21, 2020 at 12:00 am

    When I left the Philippines five years ago, I had a high-paying job at the heart of the country’s financial district. I was living a very comfortable life: I can afford an annual membership to […]

  • Android Development Tools – What’s In Your Toolbox?
    by Nate Ebel on January 20, 2020 at 10:57 pm

    What are your favorite Android development tools? Have a favorite IDE? Have a go-to command line utility? I’m sharing a list of my favorite Android development tools, and would love to hear about […]

  • Building an App with Kotlin Multiplatform: Structuring our app
    by hitherejoe on January 16, 2020 at 8:28 am

    Over the past few months I’ve been seeing more and more talk of Kotlin multiplatform online. With this rise in conversations on the topic, I naturally became more and more curious about the […]