How we moved 1,500 Android screenshot tests to Roborazzi.IntroductionIf you’re a mobile developer you’re probably no stranger to screenshot tests. Making sure that layouts remain consistent as time goes on and code changes is important for ensuring functionality and accessibility. Since Thumbtack uses Kotlin and Jetpack Compose for its Android apps, we had historically been using Firebase Test Lab to capture and compare layouts. However, using Firebase can be slow, tedious, and error-prone, so we decided it was time for a change. Instead of Firebase, we decided to migrate to using Roborazzi,…
engineering:Coming soon to the mobile apps: Inbox tab in Activity Ever wondered where to find your blog’s received asks and submissions on the mobile app? They’re in settings, which takes a lot of taps to get to, especially if you have multiple blogs. We heard some feedback on our recent update to settings on Android that you wanted easier access to your Inbox. So, we’re working on moving the Inbox to your Activity screen. This was something we worked on during Hack Days in March, so while we put the finishing touches on it, tell us what you think of this change! This is now rolling out on…
androidinboxexcerpt only · body stays at the source
engineering:Now in Labs on Android: Settings redesignTumblr has tons of settings, and in the app, most of them are in a single list under “General Settings”. We cleaned up the layout and reorganized to make browsing preferences and notifications easier to find, put all your blog and communities settings in one place, and added a few options that were previously web-only.If you use an Android device, make sure you’re using version 45.2 of the Tumblr app, and you can switch on the new settings area in Labs -> Redesigned Settings. You might need to restart the app to see changes. Got feedback?…
Tumblr has tons of settings, and in the app, most of them are in a single list under “General Settings”. We cleaned up the layout and reorganized to make browsing preferences and notifications easier to find, put all your blog and communities settings in one place, and added a few options that were previously web-only.If you use an Android device, make sure you’re using version 45.2 of the Tumblr app, and you can switch on the new settings area in Labs -> Redesigned Settings. You might need to restart the app to see changes. Got feedback? Leave it on this post!
Introduction Our Android team uses Gradle as our build tool of choice. Gradle offers lots of options for tuning its resource consumption, giving engineers an opportunity to optimize performance for running tasks on well-known hardware. In this post, we’ll explore how the team tuned our Gradle setup for Amazon’s m7i.8xlarge EC2 instances. General concepts Before... Read more
How We Made a 15X15 Game Surface Feel at Home on AndriodIllustration by Lehel KovácsBy Shafik QuoraisheeWhat Is Crossplay?The New York Times Games team has been building daily puzzles for quite a while: Wordle, Spelling Bee, Connections, The Mini. These are solo games. The player opens them, solves them, and then closes them. This leads to a simple, satisfying experience which delights millions of players a day.Crossplay is an altogether different endeavor. It’s the first multiplayer game from NYT Games, and it brings a friend (or a stranger) into the experience with them. So two players, one…
Posted by Jiacheng Lu, Software Engineer, Google Pixel Team Google is continuously advancing the security of Pixel devices. We have been focusing on hardening the cellular baseband modem against exploitation. Recognizing the risks associated within the complex modem firmware, Pixel 9 shipped with mitigations against a range of memory-safety vulnerabilities. For Pixel 10, Google is advancing its proactive security measures further. Following our previous discussion on "Deploying Rust in Existing Firmware Codebases", this post shares a concrete application: integrating a memory-safe Rust…
IntroductionIn the dynamic landscape of e-commerce, data is the bedrock of decision-making, and app stability is the foundation of user experience. At Myntra, where millions of users engage with our platform daily, ensuring the reliability of both is paramount. This necessity drove us to re-architect a critical piece of our infrastructure: the persistence layer of the Myntra app’s analytics SDK. This post details our journey of augmenting our legacy analytics SDK with a robust new persistence engine backed by SQLite[1], achieving significant gains in app stability and data…
Posted by Eric Lynch, Product Manager, Android and Dom Elliott, Group Product Manager, Google Play Modern digital security is at a turning point. We are on the threshold of using quantum computers to solve "impossible" problems in drug discovery, materials science, and energy—tasks that even the most powerful classical supercomputers cannot handle. However, the same unique ability to consider different options simultaneously also allows these machines to bypass our current digital locks. This puts the public-key cryptography we’ve relied on for decades at risk, potentially compromising…
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…
Generated by DALL-ETurning 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 opinions about how code should be structured: where ViewModels get their data, how analytics events flow, how feature flags are checked, what a "new screen" looks like from Fragment to preview function.The…
Posted by Lyubov Farafonova, Product Manager, Phone by Google; Alberto Pastor Nieto, Sr. Product Manager Google Messages and RCS Spam and Abuse We’ve shared how Android’s proactive, multi-layered scam defenses utilize Google AI to protect users around the world from over 10 billion suspected malicious calls and messages every month1. While that scale is significant, the true impact of these protections is best understood through the stories of the individuals they help keep safe every day. This includes people like Majik B., an IT professional in Sunnyvale, California. Despite his technical…
Posted by Vijaya Kaza, VP and GM, App & Ecosystem Trust The Android ecosystem is a thriving global community built on trust, giving billions of users the confidence to download the latest apps. In order to maintain that trust, we’re focused on ensuring that apps do not cause real-world harm, such as malware, financial fraud, hidden subscriptions, and privacy invasions. As bad actors leverage AI to change their tactics and launch increasingly sophisticated attacks, we’ve deepened our investments in AI and real-time defenses over the last year to maintain the upper hand and stop these threats…
Posted by Nataliya Stanetsky, Fabricio Ferracioli, Elliot Sisteron, Irene Ang of the Android Security Team Phone theft is more than just losing a device; it's a form of financial fraud that can leave you suddenly vulnerable to personal data and financial theft. That’s why we're committed to providing multi-layered defenses that help protect you before, during, and after a theft attempt. Today, we're announcing a powerful set of theft protection feature updates that build on our existing protections, designed to give you greater peace of mind by making your device a much harder target for…
Posted by Liz Prucka, Hamzeh Zawawy, Rishika Hooda, Android Security and Privacy Team Last year, Google's Android Red Team partnered with Arm to conduct an in-depth security analysis of the Mali GPU, a component used in billions of Android devices worldwide. This collaboration was a significant step in proactively identifying and fixing vulnerabilities in the GPU software and firmware stack. While finding and fixing individual bugs is crucial, and progress continues on eliminating them entirely, making them unreachable by restricting attack surface is another effective and often faster way to…
Posted by Aden Haussmann, Associate Product Manager and Sumeet Sharma, Play Partnerships Trust & Safety Lead Android uses the best of Google AI and our advanced security expertise to tackle mobile scams from every angle. Over the last few years, we’ve launched industry-leading features to detect scams and protect users across phone calls, text messages and messaging app chat notifications. These efforts are making a real difference in the lives of Android users. According to a recent YouGov survey1 commissioned by Google, Android users were 58% more likely than iOS users to report they had…
Posted by Dave Kleidermacher, VP, Platforms Security & Privacy, Google Technology should bring people closer together, not create walls. Being able to communicate and connect with friends and family should be easy regardless of the phone they use. That’s why Android has been building experiences that help you stay connected across platforms. As part of our efforts to continue to make cross-platform communication more seamless for users, we've made Quick Share interoperable with AirDrop, allowing for two-way file sharing between Android and iOS devices, starting with the Pixel 10 Family. This…
We take code correctness and code quality seriously at Wealthfront. One of the most effective ways we ensure that our code is correct is through rigorous unit testing and strong typing. In Kotlin, sealed classes and sealed interfaces offer a powerful tool to model restricted class hierarchies. They provide strong guarantees about the types in... Read more
Posted by Jeff Vander Stoep, Android Last year, we wrote about why a memory safety strategy that focuses on vulnerability prevention in new code quickly yields durable and compounding gains. This year we look at how this approach isn’t just fixing things, but helping us move faster. The 2025 data continues to validate the approach, with memory safety vulnerabilities falling below 20% of total vulnerabilities for the first time. Updated data for 2025. This data covers first-party and third-party (open source) code changes to the Android platform across C, C++, Java, Kotlin, and Rust. This post…
Posted by Lyubov Farafonova, Product Manager, Phone by Google; Alberto Pastor Nieto, Sr. Product Manager Google Messages and RCS Spam and Abuse; Vijay Pareek, Manager, Android Messaging Trust and Safety As Cybersecurity Awareness Month wraps up, we’re focusing on one of today's most pervasive digital threats: mobile scams. In the last 12 months, fraudsters have used advanced AI tools to create more convincing schemes, resulting in over $400 billion in stolen funds globally.¹ For years, Android has been on the frontlines in the battle against scammers, using the best of Google AI to build…
Photo by Mario Verduzco on UnsplashMedium Android App — Migrating from Apollo Kotlin 3 to 4: Lessons LearnedIn 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 ImplementationBefore diving into the migration, it’s important to understand how we use Apollo’s cache in the Medium Android app. Our app relies heavily on Apollo’s normalized cache for several critical purposes:Performance Optimization: We use…
IntroductionIn the fast-paced world of e-commerce, every millisecond and every pixel counts. At Myntra, where visual content drives discovery and engagement, we embarked on a critical mission: to revolutionise how animations are delivered in our Android and iOS apps. This journey led us to transition from the ubiquitous GIF format to more efficient video formats, unlocking significant performance gains and a superior user experience.Background on GIFsThe Graphics Interchange Format (GIF) has been a widely-used format for looping animations since its introduction in 1987. Its simplicity and…
Posted by Dave Kleidermacher, VP Engineering, Android Security & Privacy Today marks a watershed moment and new benchmark for open-source security and the future of consumer electronics. Google is proud to announce that protected KVM (pKVM), the hypervisor that powers the Android Virtualization Framework, has officially achieved SESIP Level 5 certification. This makes pKVM the first software security system designed for large-scale deployment in consumer electronics to meet this assurance bar. Supporting Next-Gen Android Features The implications for the future of secure mobile technology are…
How Blinkit Cracked Android's Performance Puzzle with Droid DexAdaptive real-time performance tuning — fewer ANRs, smoother UX, and smarter device-specific optimizationPicture 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?Welcome to Android development in 2025, where device fragmentation is one of the biggest challenges.This is the story of how Blinkit solved Android’s most notorious problem: intelligent, real-time performance adaptation.📱…
Learn how to have runtime control of all parts of an animation or image, the color, opacity, scale, rotation .. any property within your SVG animation using Lottie Dynamic Properties. This tutorial is going to explain Lottie Dynamic Properties. Dynamic Properties are a way of controlling at runtime, the different parts of your animation. You […] The post Android Dynamic Animated SVGs (with Lottie Dynamic Properties) first appeared on Blundell.
This artical is a quick introduction into setting up the Gemini API client SDK on Android to perform Optical Character Recognition (OCR) on images. Let’s jump straight in: The Gemini API gives you access to the latest generative AI models from Google. Gemini is a series of multimodal generative AI models developed by Google. Gemini […] The post OCR with Gemini LLM on Android first appeared on Blundell.
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 components both easy to use, enforce design system guidelines and extendable on demand. Let’s get started!Design System and ComposeA design system is a comprehensive set of guidelines, components, and rules that help to…
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 obfuscate your app? Have you used an APK analyzer or a diffuse tool to understand how the code is compiled? Are you confident that debug code hasn’t leaked into production?There’s another potential pitfall: libraries may provide obfuscation…
Crash Course on the Android UI Layer | Part 2State Holders and Saving StateThis 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 understanding of what happens on the UI layer and how to best handle state and logic within it, the various APIs involved, and how to use them. Additionally, we’ll provide decision trees to assist you when you’re in doubt.In part 1, we covered the UI and the UI state. You…
Crash Course on the Android UI Layer | Part 1The UI and UI StateThis 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 understanding of what happens on the UI layer and how to best handle state and logic within it, the various APIs involved, and how to use them. Additionally, we’ll provide decision trees to assist you when you’re in doubt.This is part 1, where we’re covering the UI and the UI state.…
viewmodeluiexcerpt only · body stays at the source
Bumble Inc.’s booth engagement projectIntroHaving 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 2023We usually have a booth presence too. Instead of coding challenges we did in the past, this year we tried something new — We brought a big screen that attracted quite a crowd:Bumble booth at Droidcon London 2023We were running a collaborative message board, live mosaics, and lots of custom…
Quick blog posting showing you the build.gradle.kts version of the default build.gradle file from the “empty activity” Android Studio template. This post will go stale fast, get it whilst its hot. 🙂 The original templates come from the New Project, other templates are explained here: https://developer.android.com/studio/projects/templates Google has an explainer of converting build configuration scripts […] The post build.gradle.kts conversion for Android Studio Empty Activity first appeared on Blundell.
Learn the steps needed in a typical Android take home test. Giving you the tools and knowledge you need to ace this part of any Android interview process. The post Android Job Interview – Take-Home Test Cheat Sheet first appeared on Blundell.
This post aims to demystify some of the steps in a typical Android interview process. We’ll discuss steps, strategies, targets and solutions. Getting you better prepared to get your next Android role. This blog is from personal experience, caveat up front that your experience could be completely different, but I’ve been through A LOT of […] The post Proven Prepping for Easy Android Interviews in 2023 first appeared on Blundell.
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.IntroductionHello! 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 Institute of Technology. Specifically, I’m focusing on Programming Languages and Tools, a cluster of courses offered by the Golisano College of Computing and Information Sciences at RIT. Clusters are courses that supplement the core Computer Science…
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 […]
androidgerritexcerpt only · body stays at the source
Hi. This is part 2 of the “How to set local AOSP Gerrit server”, you might want to start with part 1 here. In part 1 we’ve downloaded all the necessary stuff and in this post we’re going to set it all up. First thing, let’s bootstrap Gerrit. Let’s create a Gerrit user: $ sudo […]
androidgerritexcerpt only · body stays at the source
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 […]
androidaospexcerpt only · body stays at the source
From the web
42 shown
Your visit, your choice.
Optional Google Analytics helps us understand visits. Microsoft Clarity records masked interactions to improve the site. Optional tools stay off unless you choose them. Privacy details.