Easy Android Scopes

Properly scoping objects in Android apps to avoid memory leaks and avoid repeating work can be challenging. Let’s take a look at some ways that this could be done in the past, and also an approach that is clean and simple, but isn’t tied to the Android framework.
Read More →

Handling Transient Events

Some data communicated between view models and views shouldn’t be restored. Here’s a look at a simple way to deliver these transient events, avoiding complexity and common bugs.
Read More →

Encapsulating View State

This article looks at an approach to encapsulate view state, allowing us to move more logic into our more easily testable ViewModel classes, and simply our views.
Read More →

Cloud Build Recipes - Saving the Build Cache

Using a build cache can speed up builds a great deal. Here’s a look at how to enable a build cache in Google Cloud Build.
Read More →

Cloud Build Recipes - Incrementing Build Numbers

Many CI services use an incrementing build number to identify builds. Google Cloud Build, however, uses a randomly assigned unique identifier, as is common in large scale systems. In this article we take a look at how to support incremented build numbers in Google Cloud Build.
Read More →

Google Cloud Build for Android

Google Cloud Build is a Continuous Integration environment from Google Cloud that’s very flexible, and very affordable. In this post we look at how it can be used for Android projects.
Read More →

Android Development on a Pixelbook

A couple of weeks ago I bought a Google Pixelbook. I’ve been doing a bit of Android Development on it, mostly to optimize Pigment for Chromebooks. It’s taken some experimentation and discovery to find out how to get things set up, largely because the Android documentation is slightly out of date, so I thought I would share my experience, hopefully saving others time. This post serves as a step by step guide to getting up and running with Android Studio on a Pixelbook (and, hopefully, other Chromebooks as well).
Read More →

Introducing Billingx

A few months ago I was tasked with rewriting the subscription code for Pigment, the coloring book app I work on at Pixite. Our users were suffering from a bug causing paying users to sometimes lose access to premium content, and the original implementation was somewhat hastily written, so I decided it made sense to invest the time to rewrite the billing code from scratch. Play Billing Library Google makes interacting with the Play Store’s in app billing infrastructure pretty easy with the Play Billing Library.
Read More →

Continuous Delivery for Android

For a long time I’ve been in search of a good continuous integration server for Android. I’ve even written about one that I used years ago, which is no longer suited to Android development, in my opinion. As the Android community has grown, so has the wealth of tools available. In that time I’ve also moved from simply wanting continuous integration, to wanting continuous delivery. Continuous Delivery you say? Continuous delivery builds on continuous integration, but instead of just testing your source code when you commit, it is also published to the appropriate channels.
Read More →

AutoValue Extensions

This is the third article in a series on AutoValue. The first article introduced AutoValue, the code generating annotation processor for value types. The second took a more in depth look at the code generated by AutoValue, and the benefits of compile time code generation. In a previous article introducing AutoValue, I briefly mentioned AutoValue Extensions. Now it’s time to go a bit more in depth to look at what extensions are, how they work, and how they can help you get even more out of AutoValue.
Read More →