• 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 hitherejoebirch 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 […]

  • 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, […]

  • 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 […]

  • 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 […]

  • Scoped Storage Stories: The Undocumented Documents
    by CommonsWare on February 15, 2020 at 6:12 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 12th post in a seemingly never-ending series, […]

  • 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

    It’s been a long time coming: the install_referrer broadcast intent is being shut down on March 1, 2020. Its replacement is the Play Install Referrer library. It’s easy to get setup but you might […]

  • “Elements of Android Room” Version 0.2 Released
    by CommonsWare on February 10, 2020 at 12:18 pm

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

  • 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 […]

  • GDSA for App Distribution: Promising, Yet Problems
    by CommonsWare on February 8, 2020 at 2:29 pm

    Making the news this week is the Global Developer Service Alliance (GDSA), an initiative of Oppo, Vivo, Xiaomi, and (maybe) Huawei. It aims to provide a central site for developers to be able to […]

  • Become a Master Builder with these Android Dev Tools
    by franks.rebecca on February 7, 2020 at 1:40 pm

    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 hitherejoebirch 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 […]

  • Start Before You Finish
    by CommonsWare on February 1, 2020 at 2:15 pm

    […]

  • 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 hitherejoebirch 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 […]

  • “Elements of Android Jetpack” Version 0.7 Released
    by CommonsWare on January 20, 2020 at 1:43 pm

    Subscribers now have access to Version 0.7 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 […]

  • Animated Icons: Burger Menu
    by Mark Allison on January 17, 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 […]

  • Building an App with Kotlin Multiplatform: Structuring our app
    by hitherejoebirch 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 […]

  • Exploring Jetpack Compose: FlexColumn & FlexRow
    by hitherejoebirch on January 15, 2020 at 2:57 pm

    In the last article we looked at both the Row and Column layouts, along with how they can be used when constructing our user interface. Alongside these Row and Column components we also have the […]

  • Which is Which: Named Breakpoints
    on January 15, 2020 at 12:00 am

    I have always believed that one of the biggest factors that influence a person’s enjoyment and delight in doing their job are the tools. Having the right tools and using them the best way […]

  • Android Developer Career Paths
    by Nate Ebel on January 14, 2020 at 1:32 am

    What Android developer career paths are available and viable in 2020? What question do you ask yourself when considering your career future? The post Android Developer Career Paths appeared first on […]

  • “Elements of Android Room” Version 0.1 Released
    by CommonsWare on January 13, 2020 at 1:36 pm

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

  • Scoped Storage Stories: The Diabolical Details of Downloads
    by CommonsWare on January 11, 2020 at 7:56 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 eleventh and final(?) post in a series where we […]

  • Confidence
    by Mark Allison on January 10, 2020 at 10:00 am

    Confidence is both a strange and fragile thing. It is strange because there are two sides to it – how others might perceive you as being confident; and how confident you actually feel. […]

  • Enter the Indie Games Festival from Google Play
    by Android Developers on January 9, 2020 at 8:00 am

    Posted by Patricia Correa, Director, Developer Marketing The indie developer community released several fantastic titles on Google Play during 2019, showing the technical skill and innovative […]

  • Year in review 2019
    by Jeroen Mols on January 8, 2020 at 11:00 pm

    Getting up without being rushed, cycling my kids to school, cooking healthy salads for lunch, kids running into my arms when they get home… I’m quite happy with my new daily routine! […]

  • When WorkManager Stops Working
    by Dan Lew on January 7, 2020 at 2:58 pm

    When using WorkManager, be wary about the implications of using unique work with the APPEND policy. Unique work with APPEND is implemented (under the hood) via a chain of work. For example, if you […]

  • Let’s Review: Pokedex
    by Márton Braun on January 7, 2020 at 2:00 pm

    In what may be the start of a new series, I code review a project that was posted on reddit recently and got very popular very quickly. Let’s see what we can learn from it? […]

  • Scoped Storage Stories: Modifying the Content of Other Apps
    by CommonsWare on January 5, 2020 at 1:27 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 tenth post in a series where we will explore how […]

  • Android Biometrics UX Guide – User Messaging
    by Sam Edwards on January 3, 2020 at 4:21 pm

    Users Say: “Biometric…🤷‍♂️🤷‍♀️?” When I’ve demoed “Biometric” UIs to non-developers, many say: Why don’t […]

  • Exploring Jetpack Compose: Row & Column
    by hitherejoebirch on January 3, 2020 at 2:31 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 […]

  • AnimatedIcons: Search / X
    by Mark Allison on January 3, 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 downloadable at […]

  • Year in Review (2019)
    by Dan Lew on January 2, 2020 at 3:22 pm

    Another year, another annual review of my public contributions to the world. My output is down this year due to 1. raising a toddler and 2. devoting a lot of my free time to working on climate change […]

  • Modeling States vs. Facts
    by Jesse Wilson on January 1, 2020 at 8:48 pm

    Lots of object models primarily track application state. For example, OkHttp’s Http2Connection.kt has state for whether a ping’s reply is outstanding: private var awaitingPong = false […]

  • Android Development in 2019 – A Year In Review
    by Nate Ebel on December 31, 2019 at 11:01 pm

    How did Android development evolve in 2019? In this week’s newsletter, we are taking a look back on the year that was, and highlighting some of the biggest updates in Android, Kotlin, and Flutter. […]

  • Scoped Storage Stories: Reading via MediaStore
    by CommonsWare on December 29, 2019 at 4:25 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 ninth post in a series where we will explore how […]

  • Motion Vectors
    by Mark Allison on December 27, 2019 at 10:00 am

    Regular readers of Styling Android will not be surprised to hear that I rather like animations. A couple of really useful tools for creating nice animations are AnimatedVectorDrawable (AVD), and […]

  • Wrap-up 2019
    by Márton Braun on December 27, 2019 at 9:00 am

    Another year has come to an end, so it’s time to reflect again. I’ll attempt to sum up what I’ve done this year, how that compares to what I was planning to do at this same time last year, and what I […]

  • Exploring Jetpack Compose: Modifiers
    by hitherejoebirch on December 26, 2019 at 12:56 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 […]

  • Hacking your keyboard with karabiner
    by Kaushik Gopal on December 25, 2019 at 12:00 am

    tl;dr: […]

  • How Stable Is Stable Enough? – Should You Use Non-Stable Library Versions
    by Nate Ebel on December 23, 2019 at 10:54 pm

    How stable is stable enough when deciding when to update a third-party library? The post How Stable Is Stable Enough? – Should You Use Non-Stable Library Versions appeared first on goobar.io. […]

  • Scoped Storage Stories: Storing via MediaStore
    by CommonsWare on December 21, 2019 at 5:50 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 eighth post in a series where we will explore […]

  • AnimatedIcons: Arrow * Circle
    by Mark Allison on December 20, 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 […]

  • Mastering Kotlin – What’s Inside the Book?
    by Nate Ebel on December 19, 2019 at 1:07 pm

    Should you read my book Mastering Kotlin? What will you learn? What projects will you walk through? Learn the answers to these questions, and more in this post about my recently published book. […]

  • Kotlin/Everywhere – it’s a wrap!
    by Android Developers on December 18, 2019 at 5:08 pm

    Posted by Florina Muntenescu, Developer Advocate (@FMuntenescu) At Google I/O 2019 we announced that Android development will become increasingly Kotlin-first. Together with JetBrains, we also […]

  • Naming Versions
    by Jesse Wilson on December 18, 2019 at 8:14 am

    I’m working on some code to sort software versions and it’s tricky. Maven Software that releases to Maven Central should follow Maven’s versioning scheme. This list is sorted by […]

  • D8 Library Desugaring
    by Jake Wharton on December 18, 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 […]

  • Our highlights from Android & Google Play in 2019 – building for the next decade
    by Android Developers on December 17, 2019 at 8:00 pm

    Posted by Patricia Correa, P&E Developer Marketing Director The last 12 months have seen Google Play continue to grow, with over 116 billion downloads of the apps and games that you created. […]

  • Kotlin: Serialization – Update
    by Mark Allison on December 13, 2019 at 10:00 am

    Last week I published an article covering the kotlinx.serialisation library and how it had the potential to overcome the issue of Kotlin object serialization using Java Serialization not correctly […]

  • Exploring GraphQL with Coroutines on Android
    by hitherejoebirch on December 11, 2019 at 12:31 pm

    In a recent article of mine we took a look at how we could implement OAuth flows in Android with the use of Custom Tabs . This was done using the Product Hunt API and now that we authenticated users […]

  • Code Search with Cross References for the Android Open Source Project
    by Android Developers on December 10, 2019 at 10:00 pm

    Posted by Jeff Bailey, AOSP Engineering Manager; Ally Sillins, AOSP Program Manager; Kris Hildrum, Open Source Code Search Tech Lead; Jay Sachs, Kythe Tech Lead/Manager Searching for “it’s all […]

  • Android 10 on Android TV
    by Android Developers on December 10, 2019 at 5:00 pm

    Posted by Paul Lammertsma, Developer Advocate Technology has changed the way media and entertainment is accessed and consumed in the home. While the living room experience is evolving with the […]

  • Android Pseudolocalization Update
    by Dan Lew on December 9, 2019 at 2:18 pm

    It’s been many years since I last wrote about Android pseudolocalization. There’s even some official documentation now! I’m back because of two small speedbumps I’ve since run into when using […]

  • Dark Mode Musings: Beware of the Context 🌗
    by franks.rebecca on December 9, 2019 at 1:30 pm

    I’ve been working on getting Dark Mode in our app fully supported and I stumbled upon an interesting finding: The Application#applicationContext does not keep information about the theme that […]

  • Android’s commitment to Kotlin
    by Android Developers on December 6, 2019 at 7:00 pm

    Posted by David Winer, Kotlin Product Manager When we announced Kotlin as a supported language for Android, there was a tremendous amount of excitement among developers. Since then, there has […]

  • Android Game SDK
    by Android Developers on December 5, 2019 at 8:45 pm

    Posted by Dan Galpin, Developer Advocate With over 2.5 billion monthly active devices, the Android Platform gives incredible reach for game developers. Taking advantage of that opportunity can be […]