CoreCLR is now the only runtime for .NET MAUI mobile apps in .NET 11 Preview 6. Here is where we are, and why we need you to test today. The post CoreCLR Progress and the Mono Timeline for .NET MAUI appeared first on .NET Blog.
#android
64 posts
14 Jul
10 Jul
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…
Scaling Android CI: From 44 → 10 minutes — A Deep Dive into Build Time Optimization and Best…
Swiggy BytesScaling 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…
22 Jun
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…
15 Jun
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…
26 May
Material 3 (a.k.a. Material You) support is now available for .NET MAUI apps on Android. Here is how to enable it, what changes today, and what is still on the way. The post Give Your .NET MAUI Android Apps a Material 3 Makeover appeared first on .NET Blog.
null Stop Building Dumb AI Wrappers: Getting Real with LLM Function Calling on SitePoint.
23 May
null From a Shattered Screen to the Cloud: Building an AI Future with Termux in Nigeria on SitePoint.
13 May
.NET MAUI apps on Android, iOS, and Mac Catalyst now run on CoreCLR by default in .NET 11, unifying the runtime across all of .NET. The post .NET MAUI Moves to CoreCLR in .NET 11 appeared first on .NET Blog.
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…
11 May
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…
19 Mar
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…
17 Mar
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…
13 Mar
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…
12 Jan
Build interactive Android widgets with .NET MAUI using RemoteViews, intents, and shared data. The post How to Build Android Widgets with .NET MAUI appeared first on .NET Blog.
15 Dec 2025
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…
19 Nov 2025
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…
6 Oct 2025
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…
1 Oct 2025
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…
28 Jul 2025
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…
30 Jun 2025
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…
26 Jun 2025
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?…
25 Feb 2025
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...…
24 Jan 2025
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…
16 May 2024
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…
2 May 2024
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…
21 Feb 2024
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…
9 Feb 2024
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…
19 Dec 2023
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…
13 Dec 2023
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…
6 Dec 2023
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…
6 Sept 2023
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…
31 Jul 2023
Large Screen Devices - The New Frontier SoundCloud large screen optimized Recently, the Android team at SoundCloud took on a project to…
18 May 2023
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,…
1 Feb 2023
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…
11 Nov 2022
We recently made updates to our SoundCloud iOS and Android apps to address key user experience (UX) fixes according to user feedback. We’ll…
8 Nov 2022
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…
17 Oct 2022
We recently made updates to our SoundCloud iOS and Android apps to address key user experience (UX) fixes according to user feedback. We’ll…
13 Oct 2022
The SoundCloud Android app recently got a significant makeover: a “new year, new me” type of thing. Our remarkable design team and…
4 May 2022
In the first two posts about the Duplo initiative, we described why we decided to revamp our mobile codebases, the initial phase to clean up tech debt, and our efforts to modularize our iOS and Android codebases (post 1, post 2). In this final post, we will discuss the last theme of the Duplo initiative,…
12 Jan 2022
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…
10 Nov 2021
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…
20 Jul 2021
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,…
28 Oct 2020
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…
30 Jan 2020
A large portion of an Android app’s build time can consist of Dagger annotation processing, and most developers agree that productivity is…
1 Nov 2019
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…
1 Oct 2019
This is part two in a series about solving Gradle remote build cache misses. Solving build cache misses is important to both avoid work that…
11 Sept 2019
Ionic 5 and Angular 8: Restful API User Authentication Login and Signup using Guard and Resolver
Srinivas TamadaThis 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…
30 Aug 2019
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…
19 Aug 2019
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…
21 Jun 2019
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…
3 Apr 2019
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…
4 May 2018
Testing mobile applications is not always an easy feat. In addition to defining what to test and determining how to write those tests, actually running tests can also be problematic — in particular, UI test suites running on real mobile devices or emulators sometimes run for an extensive amount of time.
24 Nov 2016
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…
21 Mar 2016
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…
19 Jan 2016
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 […]
6 Oct 2015
Congratulations, you have a lot of code!"Congratulations, you have a lot of code!" Remedying Android’s method limit - Part 2
SoundcloudIn part one we described how running into Android’s method limit may leave you unable to build, and offered strategies you can employ to make your app fit into a single DEX file. In this part we share an alternative option: using multiple DEX files.
21 Sept 2015
Congratulations, you have a lot of code!"Congratulations, you have a lot of code!" Remedying Android’s method limit - Part 1
SoundcloudAt 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…
23 Oct 2013
Both our Android and iOS teams use the reactive programming paradigm to simplify asynchronous, concurrent code in our native mobile apps…
26 Sept 2013
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 […]
12 Aug 2013
A common problem in Android development is that you need to jump off the main UI thread to retrieve data from an IO-based source. At…
22 Jul 2013
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
7 Sept 2011
Are you an Android developer and want to integrate SoundCloud in your own app? With the new Android Sharing Kit this has become very easy.
19 May 2011
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.