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

  • Navigating the Future of Android Development
    by Nate Ebel on December 16, 2019 at 8:32 pm

    December 16 – You are reading “Goobar,” an Android development newsletter exploring the latest tools, tips, and trends from the world of Android. The post Navigating the Future of Android Development […]

  • “Exploring Android” Version 1.0 Released
    by CommonsWare on December 15, 2019 at 3:50 pm

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

  • Scoped Storage Stories: listFiles() Woe
    by CommonsWare on December 14, 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 seventh post in a series where we will explore […]

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

  • “Elements of Android Jetpack” Version 0.6 Released
    by CommonsWare on December 11, 2019 at 2:18 pm

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

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

  • Securing Jetpack Compose
    by CommonsWare on December 10, 2019 at 1:46 pm

    Jetpack Compose is nothing short of a complete overhaul of how we create Android UIs. This sort of major change is unusual, to say the least. This gives us a great opportunity to fix all sorts of […]

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

  • More on the Missing SAF
    by CommonsWare on December 8, 2019 at 1:39 pm

    Last week, I mentioned: […]

  • Manually Trigger Android Build Tasks Using GitHub Actions
    by Nate Ebel on December 7, 2019 at 11:01 pm

    Learn to manually trigger GitHub Actions Workflows for Android build tasks. The post Manually Trigger Android Build Tasks Using GitHub Actions appeared first on goobar.io. […]

  • Manually Triggering GitHub Actions Workflows Using Postman
    by Nate Ebel on December 7, 2019 at 8:31 pm

    Learn to manually trigger GitHub Actions workflows using Postman. The post Manually Triggering GitHub Actions Workflows Using Postman appeared first on goobar.io. […]

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

  • Kotlin: Serialization
    by Mark Allison on December 6, 2019 at 10:00 am

    After chatting with Sebastiano Poggi about the issues with using Kotlin objects that I covered in a recent post, he made the interesting suggestion that possibly kotlinx.serialization might work […]

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

  • Suspending over Views
    by Chris Banes on December 3, 2019 at 12:00 am

    Kotlin Coroutines allow us to model asynchronous problems like synchronous code. That’s great, but most usage seems to concentrate on I/O tasks and concurrent operations. Coroutines are great […]

  • Suspending over Views — Example
    by Chris Banes on December 3, 2019 at 12:00 am

    This blog post is the second of two which explores how coroutines enables you to write complex asynchronous UI operations in a much simpler way. The first post goes through the theory, while this […]

  • #AndroidDevChallenge: today is the last day to apply!
    by Android Developers on December 2, 2019 at 10:39 pm

    Today is the last day to apply for the Android Developer Challenge! And to spark your imagination, we wanted to take a look at one of the original Android Developer Challenge winners, from over 10 […]

  • An Update on Android TLS Adoption
    by Android Developers on December 2, 2019 at 10:28 pm

    Posted by Bram Bonné, Senior Software Engineer, Android Platform Security & Chad Brubaker, Staff Software Engineer, Android Platform Security Android is committed to keeping users, […]

  • Qualifications
    by Mark Allison on November 29, 2019 at 10:00 am

    People are often surprised if I tell them that I do not have a university degree. I’m not someone who achieved a degree in a subject unrelated to computer science and then moved in to the field […]

  • Getting Only Positive Feedback
    by Márton Braun on November 28, 2019 at 4:00 pm

    A brief discussion of my wonderful imposter syndrome and a call for more criticism (at least towards me). […]

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

    Posted by Jisha Abubaker, 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 […]

  • Exploring Jetpack Compose: Container
    by hitherejoebirch on November 26, 2019 at 4:42 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 […]

  • AirPods Pro Compatibility With Android (Detailed Article)
    by Artem Zinnatullin on November 25, 2019 at 7:32 am

    Table of Contents Hardware/Software Connection Connect AirPods Pro With Android Inspect Device/Connection Properties (Optional) Enable Absolute Volume Level Playback Experience Controls Noise […]

  • Our panel of experts for the #AndroidDevChallenge (apply by Dec. 2)
    by Android Developers on November 22, 2019 at 3:30 pm

    Just a little over a week left to finish your submission for the Android Developer Challenge, due December 2! Technology is enabling us to create a whole new era of helpful innovation by helping […]

  • AnimatedIcons: Max / Min
    by Mark Allison on November 22, 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 […]

  • Scratch That Itch
    on November 21, 2019 at 12:00 am

    One of the most useful things for me whilst I was learning Kotlin was TryKotlin. It gave me a quick way to test concepts, try new APIs, or just to get familiar with the syntax. […]

  • Public API challenges in Kotlin
    by Jake Wharton on November 21, 2019 at 12:00 am

    Kotlin is justifiably lauded for its language features compared to today’s Java. It has constructs which allow expressing common patterns with more concise alternatives. An overused example in […]

  • Android Developer Challenge: here’s what we’re looking for! (Apply by Dec. 2)
    by Android Developers on November 20, 2019 at 9:34 pm

    Last month, we kicked off the next Android Developer Challenge, and asked you to submit your ideas focused on helpful innovation, powered by on-device machine learning. But what exactly do we mean […]

  • Unifying Background Task Scheduling on Android
    by Android Developers on November 19, 2019 at 6:29 pm

    Posted by Caren Chang, Developer Programs Engineer Android users care a lot about the battery life on their phones. In particular, how your app schedules deferrable background tasks play an […]

  • New! Learn advanced skills for developing Android apps in Kotlin
    by Android Developers on November 18, 2019 at 9:16 pm

    Posted by Aleks Haecky Advanced Android in Kotlin, developed by Google together with Udacity, is our newly-released, free, self-paced online course. In this course expert instructors from the […]

  • Kotlin’s Assert Is Not Like Java’s Assert
    by Jesse Wilson on November 18, 2019 at 3:02 am

    OkHttp uses synchronized as an allocation free mutex. Our concurrency model is tricky enough that we’ve documented the rules! And if we forget the rules, we also use runtime assertions to catch […]

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

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

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