~/devreads

#android

50 posts

26 May

23 May

13 May

1 min read

On its face the new Friend Bubbles feature looks simple enough. It highlights Reels your friends have watched and reacted to. But sometimes the features that seem the most straightforward require the deepest engineering work. On this episode of the Meta Tech Podcast, Pascal Hartig chats with Subasree and Joseph, two software engineers from the Facebook [...] Read More... The…

androidcultureiosml applicationsmeta tech podcast

11 May

1 min read

We’re rolling out version 1.1 of Labyrinth, the encrypted storage system and protocol that secures messages and history on Messenger. Labyrinth 1.1 enhances the reliability of end-to-end encrypted backups with a new sub-protocol that helps messages survive the loss of a device, a switched device, and long gaps between sign-ins. Read our updated white paper, [...] Read More... The post…

androidiossecurity privacymessenger

19 Mar

Frances Coronel 7 min read

Introduction 🔔 At Slack, notifications are how teams stay in the loop, but they can also become overwhelming when not designed with intention. Our goal was to make staying informed feel effortless. We set out to rebuild one of Slack’s most complicated systems from the ground up by bringing calm, consistency, and clarity to the…

uncategorizedandroidbackendcross-platformdesign

17 Mar

Pierrick CAEN 9 min read

Generated by DALL-E Turning knowledge into reusable AI agent instructions for a small, fast-moving team. We're a small Android team at Medium, just a handful of engineers maintaining and evolving the Medium Android app. Our codebase follows Clean Architecture with Kotlin, Jetpack Compose, Hilt, Apollo GraphQL, and a growing number of feature modules. Like most Android teams, we have strong…

software-engineeringandroidai

13 Mar

1 min read

Even seemingly simple engineering tasks — like updating an API — can become monumental undertakings when you’re dealing with millions of lines of code and thousands of engineers, especially if the changes are security-related. Nowhere is this more apparent than in mobile security, where a single class of vulnerability can be replicated across hundreds of [...] Read More... The post…

androidml applicationssecurity privacymeta tech podcast

12 Jan

15 Dec 2025

10 min read

Meta’s secure-by-default frameworks wrap potentially unsafe OS and third-party functions, making security the default while preserving developer speed and usability. These frameworks are designed to closely mirror existing APIs, rely on public and stable interfaces, and maximize developer adoption by minimizing friction and complexity. Generative AI and automation accelerate the adoption of secure frameworks at [...] Read More... The post…

androidiosml applicationssecurity privacy

19 Nov 2025

Hye Jung Choi 8 min read

Background A Voluntary Product Accessibility Template (VPAT) is a document that outlines how well a product aligns with accessibility (a11y) standards. Its primary purpose is to inform customers about a product’s a11y features, enabling them to make informed decisions before purchasing software. At Slack, we conducted a VPAT by a third party a11y vendor in…

uncategorizeda11yaccessibilityandroidempathy

6 Oct 2025

Pierrick CAEN 6 min read

Photo by Mario Verduzco on Unsplash Medium Android App — Migrating from Apollo Kotlin 3 to 4: Lessons Learned In this post, I’ll share my experience migrating the Medium Android app from Apollo Kotlin version 3 to version 4, including the challenges I encountered and how I solved them to improve our GraphQL implementation. Understanding Our Apollo Cache Implementation Before…

graphqlapollo-clientandroidkotlin

1 Oct 2025

11 min read

Key Takeways: With billions of Android app users, we’re always looking to improve the Meta app experience, and in this post, we explore the ways we’ve leveraged Android’s Baseline Profiles to significantly improve their performance. We discuss the performance challenges we’ve faced as Meta’s apps, how the needs of users have become more complex over [...] Read More... The post…

android

28 Jul 2025

4 min read

ExecuTorch is the PyTorch inference framework for edge devices developed by Meta with support from industry leaders like Arm, Apple, and Qualcomm. Running machine learning (ML) models on-device is increasingly important for Meta’s family of apps (FoA). These on-device models improve latency, maintain user privacy by keeping data on users’ devices, and enable offline functionality. [...] Read More... The post…

androidiosopen source

30 Jun 2025

1 min read

We are proud to announce that Meta has officially joined the Kotlin Foundation as a gold member, marking a significant milestone in our ongoing commitment to Kotlin and the broader Android development ecosystem. Over the past several years, Meta engineers have been actively migrating our extensive Android codebase—comprising tens of millions of lines—from Java to [...] Read More... The post…

androiddevinfraopen source

26 Jun 2025

Karan Gourisaria 6 min read

How Blinkit Cracked Android's Performance Puzzle with Droid Dex Adaptive real-time performance tuning — fewer ANRs, smoother UX, and smarter device-specific optimization Picture this: Your app runs buttery-smooth on Pixel 7 Pro while throwing ANRs on a Redmi Note 4. Users on a Fold 6 have to experience the same janky transitions as those on a ₹6,000 device. Sounds familiar?…

engineeringperformancemobile-developmentandroidkotlin

25 Feb 2025

1 min read

Meta has been working to shift its Android codebase from Java to Kotlin, a newer language for Android development that offers some key advantages over Java. We’ve even open sourced various examples and utilities we used to in our migration to manipulate Kotlin code. So how do you translate roughly tens of millions of lines of Java [...] Read More...…

androiddevinframeta tech podcast

24 Jan 2025

1 min read

Introducing a new Android UI framework like Jetpack Compose into an existing app is more complicated than importing some AARS and coding away. What if your app has specific performance goals to meet? What about existing design components, integrations with navigation, and logging frameworks? On this episode of the Meta Tech Podcast Pascal Hartig is [...] Read More... The post…

androidculturedevinfrainstagrammeta tech podcast

21 Feb 2024

Yury 9 min read

Jetpack Compose both makes it easier and promotes usage of an internal design system by creating custom Compose components. But how should we build these components? In this article, we will take a look at possible implementations of a design component, explore their API verbosity and extensibility, and how we can find a balance between these characteristics to make Compose…

jetpack-composekotlinandroid

9 Feb 2024

Konstantin Zolotov 9 min read

During the development process, we often focus on the source code but rarely inspect the compiled bytecode. This means we’re missing out on a valuable source of information and data for analysis. How? Let’s delve into Dex file inspection and build a tool that demonstrates how source code changes impact the compiled binary. Have you ever set R8 rules to…

bytecodekotlinandroidandriod-app-development

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

13 Dec 2023

Manuel Vivo 13 min read

Crash Course on the Android UI Layer | Part 1 The UI and UI 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…

viewmodeluiandroidarchitecturestate-management

6 Dec 2023

Zsolt Kocsi 4 min read

Bumble Inc.’s booth engagement project Intro Having a London office with lots of local colleagues and many more visiting from Barcelona, Droidcon London is always a fantastic opportunity for us at Bumble to meet the Android developer community as well as each other: Bumble Tech team at Droidcon London 2023 We usually have a booth presence too. Instead of coding…

compose-multiplatformopen-sourceandroiddevjetpack-composeandroid

6 Sept 2023

Zac Sweers 5 min read

Embarking on a journey Stepping out of SFO with the familiarity of the fogginess of the city, my story at Slack unfolds once again. As a return intern, I found myself prepped for another exciting summer, and this opportunity encompassed a renewed sense of anticipation — a mix between known pathways and new adventures. Returning…

uncategorizedandroiddevtoolsinternshipskotlin

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

8 Nov 2022

Aleksei Bingham 17 min read

First and foremost, thanks for visiting my little slice of the internet! I hope the following is both insightful and comedic as I plan to @inject well constructed jokes throughout this post. Introduction Hello! My name is Aleksei and at the time of writing this I’m a rising Senior perusing a Bachelors of Science in Computer Science at the Rochester…

androidinternshipskotlinstravadependency-injection

4 May 2022

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

10 Nov 2021

Zac Sweers 2 min read

We use plenty of open source tools at Slack and we’ve benefited immensely from the wider Android, Kotlin, and Gradle communities. We also try to be good citizens by giving back. This includes things like sponsoring the Kotlin Lang Slack, contributions to projects we use like Anvil and Insetter, sharing projects of our own like…

uncategorizedandroidkotlinmobileopen-source

20 Jul 2021

Zac Sweers 6 min read

Note: This article assumes some familiarity with Dagger, Anvil, and Kotlin. We use Dagger heavily in the Slack Android app for compile-time dependency injection. It’s powerful, flexible, supports basic Kotlin idioms, and allows for advanced dependency injection patterns with less boilerplate. It’s not without its sharp edges though. It slows down our builds with kapt,…

uncategorizedandroidkotlin

28 Oct 2020

srinivas.tamada@gmail.com (Srinivas Tamada) 1 min read

Ionic is a great component framework that can build both iOS and Android apps from the same source code using Capacitor. In this video I have explained how to generate a signed Android release APK version using Ionic application and publishing on Google play store. For this process you need a Google play console subscription that costs $25 for life…

androidangularapkgoogleionic

15 Nov 2019

Ben Boral 3 min read

Background At RetailMeNot, we are excited by the promise of automating visual regression tests with Applitools . In this post, I’ll show how to make writing Applitools tests for Android a cinch. We’ll start with the official integration guide recommendations and then use JUnit and Kotlin features to make our tests concise and maintainable. This post assumes the reader is…

junitkotlinapplitoolsandroid

1 Nov 2019

srinivas.tamada@gmail.com (Srinivas Tamada) 1 min read

This post is about displaying the API records with delete and update actions using new Ionic and Angular reactive programming. This is a continuation of Ionic Angular series and it explains to you how to distribute the data between the components using RxJS method like BehaviorSubject. All of the feed API responses/records storing in a reactive object, This help the…

androidangularapiionicios

11 Sept 2019

srinivas.tamada@gmail.com (Srinivas Tamada) 1 min read

This is a continuation of my previous article creating an Ionic Angular project with welcome and tabs home page. Today’s post explains how to implement login authentication system for your Ionic Angular application with guards and resolvers. It will show you how to log in with a user and store the user data and protect the routes, so it deals…

androidangularapiionicios

19 Aug 2019

srinivas.tamada@gmail.com (Srinivas Tamada) 1 min read

I received lots of tutorial requests from my readers in that most of them asked me, how to use Ionic 5 to create a welcome page with login and signup pages. Ionic updated there code base with latest Angular 8 features. Now we can implement the routes and guards pretty easy way. Ionic is recommending to use Capacitor to generate…

androidangularcapacitorionicios

24 Jul 2018

24 Nov 2016

Matthew Green 10 min read

Over the past few years we’ve heard more about smartphone encryption than, quite frankly, most of us expected to hear in a lifetime. We learned that proper encryption can slow down even sophisticated decryption attempts if done correctly. We’ve also learned that incorrect implementations can undo most of that security. In other words, phone encryption is an … Continue reading…

androidappledisk encryption

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

19 Jan 2016

Matt Cutts 2 min read

I solved a problem today and figured that I’d document it for the rest of the world. Every time someone left me a voicemail on Verizon, I would get a cryptic text from Verizon at 900080006202 that looked like “//VZWVVM:SYNC:ev=NM;id=1;c=1;t=v;s=1XXXXXXXXXX;dt=18/01/2016 13:40-0900;l=13;dev_t=5” or “//VZWVVM:SYNC:ev=MBU;dev_t=5”. Here’s what happened. It turns out that Verizon has three kinds of […]

androidhow to

18 Aug 2015

Ramon 3 min read

Hi there. This is the last post in the series of a local AOSP gerrit server setup. In this post, We’ll finalize the configuration of Gerrit, add new branches for development and see how to maintain the setup. In the last post, we’ve finished creating the project in Gerrit. When we develop locally, we should […]

androidgerritetc init.daosprepo mirror

29 Jun 2015

22 May 2015

Ramon 1 min read

In this tutorial I’ll explain how to set a local gerrit server that hosts Android source code. After completing the tutorial you’ll have a fully runnable local AOSP mirror with local Gerrit server. First thing first. we need a Linux server. if you don’t have one available, you can use a pre-installed Ubuntu 15.04 Server I […]

androidaospgerritreporepo mirror

10 Feb 2015

26 Sept 2013

Matt Cutts 2 min read

Someone recently asked me how I manage my to-do list, so I thought I’d write up the software that I use. Fundamentally I use Google Tasks as the backend, but with extensions and apps that improve on the basic functionality in Google Tasks. Chrome I use a couple different extensions for Chrome: – Better Google […]

androidchromeproductivity

22 Jul 2013

Schakko 1 min read

Yesterday I read the article written by Christoph and thought about updating my current installed CyanogenMod 9 with the current version. Here are the instructions (assuming, you have already CM installed): wget http://108.166.171.36/goodata/50d9ef8310a7cba36225d98a0a37ea26/51ec1e7a/devs/milaq/tenderloin/cm10.1/cm-10.1-20130721-UNOFFICIAL-tenderloin.zip wget http://108.166.171.36/goodata/5dc90f8102df2b869507ff02a7642a07/51ec1e4a/gapps/gapps-jb-20130301-signed.zip Restart the HP TouchPad and sele

linuxwebos4.2androidcyanogen mod