~/devreads

#android

64 posts

14 Jul

10 Jul

Balvinder Gambhir 7 min read

At Swiggy, we use Protocol Buffers everywhere. Nearly every message exchanged between our backend services and our mobile apps is a protobuf. On Android, the default and most widely adopted way to work with those schemas was protobuf-java, Google’s official Java runtime, with Java classes generated by protoc. It worked. But when we started profiling our app size, we found…

performancekotlinsquare-wireprotobufandroid

Pratik Sahu 5 min read

Scaling Android CI: From 44 → 10 minutes — A Deep Dive into Build Time Optimization and Best Practices Android monorepos get expensive and slow as they scale. We re-architected CI/CD caching, trimmed the Gradle graph, tuned the JVM, modernized the toolchain, and finally moved to Apple Silicon — plus specific configs and numbers you can replicate. Context and Baseline…

gradlecicdkotlinandroidcache

22 Jun

18 min read

Adopting AV1 for real-time communication at Meta has been a multi-year effort spanning codec selection, device eligibility, rate control, and error resilience. We’re sharing the technical and operational challenges while deploying AV1 and expanding coverage, and how we addressed them for real-time communication. We’re presenting several technologies for improving AV1 call quality, including rate control [...] Read More... The post…

androidiosvideo engineering

15 Jun

Viviana Rosas 5 min read

Agentic Android development works best when agents can build, install, run, test, and validate features against real devices or emulators without relying on Android Studio as the manual control center. In this article, “skills” means reusable agent instructions for a specific task, and “workflows” means separate working copies or environments where an agent can safely […] The post How to…

ai for developersandroidai agent

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

16 May 2024

Sachin Malik 3 min read

Introduction: In Kotlin, data classes are widely used for modeling data in applications due to their concise syntax and built-in functionalities. However, ensuring data integrity and validity within these classes can be challenging, especially when it comes to validating field values against specific criteria such as regular expressions. Manually validating each field upon assignment or object initialization can lead to…

automationannotationsandroidvalidationclean-code

2 May 2024

Siddharth Gupta 7 min read

Navigating Android’s video playback functionality is an accomplishment that significantly enhances user interaction. In our context, it’s integral to building smoother user experiences. Multi-video playback forms an essential part of enhancing user experience. This blog offers an insight into the intricacies we encountered, solutions we devised, and the improvements we saw. The blog is divided into 3 parts: Need for…

techuser-experiencevidoexoplayerandroid

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

31 Jul 2023

18 May 2023

GOVIND DIXIT 3 min read

an explainer on Soundpool framework in Android -its features, limitations. The challanges we faced and the framework we built on the top of it to make it more efficient. Sound plays an important role in enhancing our members’ experience on our app. As a multi-product platform, our members engage with the app for various purposes such as payments, rewards, e-commerce,…

soundpoolsounduser-experiencekotlinandroid

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

11 Nov 2022

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

17 Oct 2022

13 Oct 2022

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

30 Jan 2020

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

1 Oct 2019

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

30 Aug 2019

5 min read

Until recently, one of the top technical risks facing SoundCloud’s Android team was increasing build times. Our engineering leadership was well aware of the problem, and it was highlighted in our company’s quarterly goals and objectives as modularization. Faster build times means more productive developers. More productive developers are happier and can iterate on products more quickly. Modularization is key…

androidgradleproductivityengineeringmobile

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

21 Jun 2019

4 min read

Media and playback are at the core of SoundCloud’s experience. For that reason, we have established and grown an engineering team that is specialized in providing the best possible streaming experience to our users across multiple platforms. To do this, we combine the industry’s best-fitting solutions with our own custom technologies, libraries, and tools. In this article, let’s dive into…

androidmobileplaybackmedia

3 Apr 2019

5 min read

Once every two weeks, we prepare new versions of our mobile apps to be published to the app stores. Being confident about releasing software at that scale — with as many features and code contributions as we have and while targeting a wide range of devices like we do at SoundCloud — is no easy task. So, over the last…

androidmobilereleasetestingengineering

4 May 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

21 Mar 2016

1 min read

Last week, we open-sourced LightCycle, an Android library that helps break logic out of and classes into small, self-contained components called LightCycles. Components that typically need to be aware of and lifecycle events include presenters, UI tracking code, input processors and more. We’ve been using LightCycle extensively in the SoundCloud Music & Audio and SoundCloud Pulse apps over the last…

androidmobile

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

6 Oct 2015

21 Sept 2015

6 min read

At SoundCloud we have been building for the Android platform since 2010. Much has changed since then: the team has grown, the list of features has grown, and our audience has grown. Today, eight engineers are working full time on the official SoundCloud app, across various areas, with contributions pouring in from other parts of the organization. Due to the…

androidmobile

23 Oct 2013

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

12 Aug 2013

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

7 Sept 2011

19 May 2011

1 min read

Alongside with the SoundCloud Android app we’ve created a new Java Wrapper for the SoundCloud API and today we can finally release it to the public! It is simple to use, supports OAuth2 and requires a minimum of external dependencies so it should be easily embeddable in both desktop and mobile applications.

announcementssdksandroid