~/devreads

#android-app-development

12 posts

31 Mar

Brian Terczynski 7 min read

How we chose Roborazzi for fast, easy, and high-fidelity screenshot tests of our Android apps, without needing to run them on an emulator. As mentioned in our earlier blog post , screenshot tests are a fundamental part of our testing pyramid at Thumbtack. They validate that our UI code renders correctly. They catch UI regressions as our code evolves. They…

robolectricandroid-app-developmentscreenshot-testingroborazzimobile

12 Feb 2024

Pooja Sharma 6 min read

In today’s competitive world of Mobile app development, it’s essential to create apps that are not only feature-rich but also lightweight. Studies show that for every 6MB increase in the app size, there’s a decrease in install conversion rate by 1%. Therefore, with the increasing demand for faster downloads and better user experiences, app size has become crucial to increase…

mobile-appsandroid-app-developmentapp-sizemobile-app-developmentreact-native

19 Dec 2023

Manuel Vivo 12 min read

Crash Course on the Android UI Layer | Part 2 State Holders and Saving State This blog post series aims to summarise the Android Developer guidance on the UI layer . We’ll explore all the entities involved in it, understand the role each part plays, and discuss best practices. By the end of this series, you will have a general…

android-app-developmentviewmodelarchitectureandroidui

1 Feb 2023

Saif Chaouachi 4 min read

After Duplo modularization, we noticed that the task producing a transitive R class was taking a significant amount of time to execute. To eliminate this task altogether, and since the non-transitive R class is advertised to have up to 40% incremental build time improvement, we decided to migrate our codebase to use it. If you’re not…

uncategorizedandroidandroid-app-development

4 May 2022

28 Mar 2022

Tracy Stampfli 11 min read

In the first post about the Duplo initiative, we discussed the reasons for launching a project to revamp Slack’s mobile codebases, and what we accomplished in Duplo’s initial Stabilization phase. This post will explore modularization, and then there will be a third post to describe how we modernized our codebase and the overall results of…

uncategorizedandroid-app-developmentios-app-developmentmobilemobile-app-development

12 Jan 2022

Tracy Stampfli 14 min read

When do you need to overhaul a large code base to address tech debt? What is the best way to address widespread inconsistencies and outdated patterns? How can you make significant architectural improvements to a complex application while still continuing to ship features? These were questions we grappled with at the beginning of 2020, when…

uncategorizedandroidandroid-app-developmentiosios-app-development

13 Oct 2016

Jared Burrows 5 min read

See my conference talk here: Youtube link: https://www.youtube.com/watch?v=ZmI-NZ1akow SpeakerDeck: https://speakerdeck.com/jaredsburrows/the-road-to-single-dex-gradle-summit-2017 Original Post: The Yammer for Android app was over the dex limit. This means the Android application was being shipped with more than one .dex file because each .dex file can only hold around 64k methods . I was determined to make our Android application much smaller in order to…

androidandroid-app-developmentproguardgradlemultidex

15 Sept 2016

Miguel Juárez López 5 min read

Using RxJava’s Observable.fromAsync() to convert asynchronous APIs while properly dealing with backpressure Since we started using RxJava in our Yammer Android app we’ve often encountered APIs that don’t follow its reactive model, requiring us to do some conversion work to integrate them with the rest of our RxJava Observable chains. APIs usually offer one of these two options when dealing…

androidjavaandroiddevrxjavaandroid-app-development

Miguel Juárez López 6 min read

The pattern for loading and displaying data for our Yammer Android app is roughly as follows: When wanting to show content query two sources: one being the disk (cache), and the other one being the network (API). Show the cached data while waiting for the network. When the network request comes back, cache it to disk, then show it. This…

android-app-developmentrxjavaandroid

Miguel Juárez López 3 min read

Re-register GCM push notifications on app upgrade with MY_PACKAGE_REPLACED When implementing push notifications using GCM (Google Cloud Messaging) on Android, one of the gotchas of which to be aware is the “application update” scenario. The Google documentation states: When an application is updated, it should invalidate its existing registration ID, as it is not guaranteed to work with the new…

push-notificationandroidandroid-app-development

Miguel Juárez López 3 min read

Using Otto and Retrofit to log out users when receiving 401 error responses from the API I was recently working on an Android project where we needed to log out the current user whenever you encountered a 401 Unauthorized HTTP response from our API. I am a fan of all the Android libraries from square , so for this post…

androidretrofitandroid-app-development