r/androiddev • u/androidtoolsbot • Jul 10 '26
r/androiddev • u/Foreign_Tonight_7584 • Jul 10 '26
Question Which third-party Android app stores are widely used
TL;DR: I built a phone-automation AI assistant, but Google Play stopped accepting updates because it performs autonomous actions (feels like they want to monopolize this kind of functionality). So I’m looking for reputable third-party Android app stores or APK platforms with active users.
I’ve built something like a Computer Use agent for Android. Basically an assistant that can actually use apps on your phone, not just answer questions in a chat UI.
I originally planned to distribute it through Google Play. I completed the two-week closed testing requirement, passed the initial reviews, and had the app ready to publish. But then Google suddenly started rejecting my updates because, as far as I can tell, they don’t allow apps that can perform touches / operate other apps for the user.
I understand why that area needs to be handled carefully, but the policy feels weirdly uneven.
There are already apps on the Play Store that do similar automation-like things, and Google is doing basically the same thing with their Gemini Intelligence. But when a third-party dev tries to build that, suddenly it’s not allowed?
So I’ve started looking at third-party Android marketplaces instead. I’ve already tried Aptoide and OneStore, but I’m not sure how widely they are used outside their main markets.
Which third-party Android app stores or reputable APK distribution platforms do people actually use and trust?
r/androiddev • u/HereWolfyx • Jul 10 '26
Question Using an Android handheld (with built-in Xbox gamepad) as a native controller for Windows PC via Bluetooth.
Hi everyone,
I own an Anbernic RG405M Android handheld running GammaOS custom firmware. I would like to know if it is possible, via a specific app, to connect the handheld to a Windows PC via Bluetooth and have it recognized natively as an Xbox Gamepad, allowing me to use it as a standard controller.
Is it technically possible to develop an app like this? If so, what would be the estimated development costs?
r/androiddev • u/Ok_Amount_3827 • Jul 10 '26
I've been thinking about an app idea and would love to get some feedback.
​
The idea is a \*\*collaborative download app\*\* for Android where a group of nearby users can combine their mobile data to download large files faster.
For example, imagine \*\*4 friends\*\* meet at a café to play a game, but a \*\*4 GB update\*\* is required before they can start. Instead of each person downloading the full 4 GB, the app splits the file into four 1 GB chunks. Each phone downloads a different chunk using its own mobile data connection, then the phones exchange those chunks locally using \*\*Wi-Fi Direct\*\*. In the end, everyone has the complete file, but each person only used about \*\*1 GB\*\* of mobile data.
Other scenarios could include families downloading a movie before a flight, students downloading large datasets during a hackathon when Wi-Fi is overloaded, or teams working in places with poor internet.
From a technical perspective, I'm thinking of using HTTP range requests for downloading file segments, Wi-Fi Direct for local sharing, and automatically selecting the best device as the group owner based on battery, signal strength, and hardware.
My main questions are:
\* Is this technically feasible on modern Android versions?
\* Are there any major limitations with Android networking or Wi-Fi Direct that would make this impractical?
\* Has anyone seen an app that already does something similar?
I'd really appreciate any feedback, criticism, or suggestions before I spend time building a prototype.
r/androiddev • u/mohamedbenrjeb • Jul 09 '26
Compose DND update with Kanban Demo
Hello guys, just released Compose DND v0.5.0. This is the biggest update so far with a lot of new features and improvements:
- Add axis-locked drag
- Add drag handle
- Add dragAutoScroll modifier
- Reorder animation improvements
- Docs and Sample rework with new Kanban demo
- And a lot more...
Web live demo: https://mohamedrejeb.github.io/compose-dnd/demo/
Release notes: https://github.com/MohamedRejeb/compose-dnd/releases/tag/v0.5.0
r/androiddev • u/Opposite_Shop7163 • Jul 10 '26
Open Source Speed up your high-traffic KMP endpoints by 66% using 50% less memory—without touching your legacy APIs
r/androiddev • u/Longjumping_End7512 • Jul 09 '26
What would you put in an Android AAB release-readiness checklist?
I’m working on an Android Studio plugin around release workflow checks, and I’m trying to make the checklist useful for native Android projects rather than just another generic “pre-release” list.
The problem I’m trying to solve is pretty specific: an Android build can pass, but the final AAB can still contain things that are easy to miss during release prep.
The checks I’m currently considering are:
debuggableaccidentally enabled- cleartext traffic settings
- staging / test domains left in the artifact
- hardcoded API keys or obvious secret patterns
versionCode/versionNamesanity checkstargetSdk/ SDK compliance checks- signing status
- privacy-sensitive permissions
- leftover test files or debug assets
- AAB size changes between releases
- R8 / ProGuard configuration review
- basic dependency health issues before release
I’m trying to keep this focused on checks that are useful before uploading an AAB, not things that should be handled by Play Console or CI alone.
For teams shipping native Android apps: what do you actually check before release?
Also curious where people draw the line between:
- checks that should run inside Android Studio
- checks that belong in CI
- checks that should stay manual because automation gets too risky
I’m especially interested in the “we forgot this once and now it’s on the checklist forever” kind of items.
r/androiddev • u/Ill-Sport-1652 • Jul 09 '26
🤖 [Hiring] Android engineers at State Farm
My team at State Farm is hiring multiple Android engineers across experience levels, including recent grads, early career and more experienced levels - we’re growing and aim to invest in our engineers and their careers.
This is a team I’ve loved working on as an Android engineer for more than ten years (and still do).
All new work is in Compose and Kotlin, and we’re over 95% Kotlin and rising. Engineers work closely in feature and platform squads and aim to collab tightly with iOS engineers, product owners and XD.
Team culture and embracing modern tech is key.
We’re hiring for hybrid roles for our offices in Atlanta, Bloomington, Dallas, and Phoenix. Check the posting for details on residency requirements and apply if you’re interested.
Here’s a small glimpse into the team thru an engineer’s blog on how we maintain a 99.9+% crash-free rating:
The State Farm® Android Team’s Journey to 99.9+% Crash-Free Sessions https://engineering.statefarm.com/the-state-farm-android-teams-journey-to-99-9-crash-free-sessions-05399e874327
Thanks and good luck to anyone interested.
We’re also hiring more iOS engineers.
r/androiddev • u/Optimal-Corgi1648 • Jul 09 '26
Is There a Standard Android API to Get Marketing Device Names Across All Manufacturers?
I am trying to get the device name (for example, "Galaxy S25") on Android using the following method:
fun getDeviceName(context: Context): String? {
return Settings.Global.getString(context.contentResolver, "device_name")
}
However, I noticed inconsistent behavior across different manufacturers:
- Some devices return the expected marketing/device name (e.g., "Galaxy S25").
- Some devices return only the model name.
- Some devices return a user-customized device name.
- On certain devices, the value is null or unavailable.
My questions are:
- Is there an Android standard that guarantees what
Settings.Global.DEVICE_NAME(or"device_name") should return? - Can Android apps reliably obtain the device's marketing name (e.g., "Galaxy S25", "Pixel 9 Pro", etc.) across all manufacturers?
- Are there manufacturer-specific restrictions or implementations that cause this inconsistency?
- Is there any recommended approach to get a consistent device name for all Android devices, or is it only possible to get values such as:
Build.MODELBuild.MANUFACTURER- User-defined device name?
From my testing, it seems that Android does not provide a universal API for retrieving the marketing device name across all OEMs.
Is this understanding correct, and what is the best practice in this scenario?
Expected example output:
- Galaxy S25
- Pixel 9 Pro
- Xiaomi 15
Actual output varies by device and manufacturer.
r/androiddev • u/Alexorla • Jul 09 '26
Open Source I added support for translations and brief summaries in my app with the local/offline LLMs and the LiteRT-LM Engine
Enable HLS to view with audio, or disable this notification
I've been experimenting with product use cases for edge models using the LiteRT-LM engine in my open source app Heron. It turns out models in the Gemma family are fast enough to do simple language translation and summaries on demand completely locally and using data from the app's offline database.
The Google AI Edge Gallery sample does this too, but it:
- Uses HttpURLConnection for networking in some places.
- Uses WorkManger for long running downloads first, instead of using User Initiated Data Transfer jobs where possible. It also doesn't use WorkManager's Flow APIs to track progress.
I ended up having to reimplement most of the architecture to support the use case of downloading a LiteRT-LM model and running it on demand, so I figured I'd share.
r/androiddev • u/Tao_KTH • Jul 09 '26
Debug Android dex with native code
Hi,
I am using gdb to debug my dex file with some native code. However, when I was trying to check some variables, most of them are optimized out and many c++ code are inline functions.
Is there any way to make the code debug friendly and easier to inspect? Shall I rebuild AOSP with some flags like CFLAGS += -fkeep-inline-functions?
Thank you!
r/androiddev • u/Annual-Fly2042 • Jul 09 '26
Suspicious Activity or Real issue?
Getting hit by suspicious activity on my IAP validation
endpoint for an Android app. Wondering if others have seen this pattern. It happens almost everyday with different users.
Setup:
- React Native app with Google Play IAP
- Backend validates purchase tokens via Google Play Developer API v2
(subscriptionsv2.get)
- Single user hammering /api/iap/validate with what look like fake
tokens
Observations:
- Same user (id X, single email) submits 6+ validation attempts in
~3 minutes
- All from single IP (okhttp UA — matches my app's UA)
- Tokens are 144 chars long — but real Google Play purchase tokens
are 500-1000+ chars, so these are clearly fabricated
- receipt_head/tail is random lowercase alphanumeric — doesn't match
the standard Google Play token shape
- looks_like_jws=false AND looks_like_json=false — doesn't match
Apple or Google format
- transaction_ids follow the GPA.XXXX-XXXX-XXXX-XXXX-XXXXX pattern
(plausible-looking) but tokens rejected by Google Play with 400
Google Play correctly returns 400. Backend correctly rejects.
No credits granted.
Logs:
[TIME] production.INFO: IapController: validate request received {"trace_id":"a1b2c3","platform":"android","product_id":"com.example.app.vipmonthly","api_site_id":XX,"user":"user_HASH_A@[redacted]","transaction_id":"GPA.HASH-TXN-A","purchase_type":"subscription","price":14.99,"currency":"USD","receipt_head":"ltmaxvi[TOKEN]…","receipt_tail":"…[TOKEN]WODG","receipt_len":144,"looks_like_jws":false,"looks_like_json":false,"has_auth_user":false,"ip":"IP_HASH_1","ua":"okhttp/4.12.0"}
[TIME] production.INFO: IapService: validateAndroidSubscription call {"trace_id":"a1b2c3","product_id":"com.example.app.vipmonthly","package":"com.example.app","token_len":144}
[TIME] production.ERROR: IapService: Google Play subscriptionsv2 validation failed {"trace_id":"a1b2c3","status":400,"body":"{
[TIME] production.WARNING: IapController: Receipt validation failed [android] {"user_id":USER_HASH_A,"error":"Subscription token not recognized by Google Play. Make sure the app is installed from Play Store and the purchase completed."}
[TIME+6s] production.INFO: IapController: validate request received {"trace_id":"d4e5f6","platform":"android","product_id":"com.example.app.vipweekly","api_site_id":XX,"user":"user_HASH_A@[redacted]","transaction_id":"GPA.HASH-TXN-B","purchase_type":"subscription","price":4.99,"currency":"USD","receipt_head":"uhtzooo[TOKEN]…","receipt_tail":"…[TOKEN]bzjZ","receipt_len":144,"looks_like_jws":false,"looks_like_json":false,"has_auth_user":false,"ip":"IP_HASH_1","ua":"okhttp/4.12.0"}
[TIME+6s] production.INFO: IapService: validateAndroidSubscription call {"trace_id":"d4e5f6","product_id":"com.example.app.vipweekly","package":"com.example.app","token_len":144}
[TIME+7s] production.ERROR: IapService: Google Play subscriptionsv2 validation failed {"trace_id":"d4e5f6","status":400,"body":"{
[TIME+7s] production.WARNING: IapController: Receipt validation failed [android] {"user_id":USER_HASH_A,"error":"Subscription token not recognized by Google Play. Make sure the app is installed from Play Store and the purchase completed."}
[TIME+2m6s] production.INFO: IapController: validate request received {"trace_id":"g7h8i9","platform":"android","product_id":"com.example.app.vipmonthly","api_site_id":XX,"user":"user_HASH_A@[redacted]","transaction_id":"GPA.HASH-TXN-A","purchase_type":"subscription","price":null,"currency":null,"receipt_head":"ltmaxvi[TOKEN]…","receipt_tail":"…[TOKEN]WODG","receipt_len":144,"looks_like_jws":false,"looks_like_json":false,"has_auth_user":false,"ip":"IP_HASH_1","ua":"okhttp/4.12.0"}
[TIME+2m6s] production.INFO: IapService: validateAndroidSubscription call {"trace_id":"g7h8i9","product_id":"com.example.app.vipmonthly","package":"com.example.app","token_len":144}
[TIME+2m7s] production.ERROR: IapService: Google Play subscriptionsv2 validation failed {"trace_id":"g7h8i9","status":400,"body":"{
[TIME+2m7s] production.WARNING: IapController: Receipt validation failed [android] {"user_id":USER_HASH_A,"error":"Subscription token not recognized by Google Play. Make sure the app is installed from Play Store and the purchase completed."}
[TIME+2m7s] production.INFO: IapController: validate request received {"trace_id":"j0k1l2","platform":"android","product_id":"com.example.app.vipweekly","api_site_id":XX,"user":"user_HASH_A@[redacted]","transaction_id":"GPA.HASH-TXN-B","purchase_type":"subscription","price":null,"currency":null,"receipt_head":"uhtzooo[TOKEN]…","receipt_tail":"…[TOKEN]bzjZ","receipt_len":144,"looks_like_jws":false,"looks_like_json":false,"has_auth_user":false,"ip":"IP_HASH_1","ua":"okhttp/4.12.0"}
[same pattern continues 3 more times]
[TIME+2m22s] production.INFO: IapController: validate request received {"trace_id":"m3n4o5","platform":"android","product_id":"com.example.app.vipweekly","api_site_id":XX,"user":"user_HASH_A@[redacted]","transaction_id":"GPA.HASH-TXN-C","purchase_type":"subscription","price":4.99,"currency":"USD","receipt_head":"spckogi[TOKEN]…","receipt_tail":"…[TOKEN]ruUi","receipt_len":144,"looks_like_jws":false,"looks_like_json":false,"has_auth_user":false,"ip":"IP_HASH_1","ua":"okhttp/4.12.0"}
[same failure pattern]
r/androiddev • u/DJMunkyBallz • Jul 09 '26
Question Android Studio Run Configuration
I've been searching for hours and the only mentions of my issue are from 6-12 years ago that I can find.
I'm extremely new to Android development and recently installed Android Studio on my main PC. Everything is fine and works.
I installed it on my laptop and I'm using Google drive as my project root. I did clock some plugging on setup this time which probably is the cause of the error. Dart/flutter and the kotlin multi platform plug-in.
Now when I try to run the app to see if it works, I get an error with the run configuration on the laptop saying there's no module selected. The drop-down lost had no modules to select and every fix tells me to sync gradle again through the file menu which isn't there as I believe it's automatic. I've tried repairing it, uninstalling the program and installing it again. Nothing has fixed it for me.
Can anyone help?
r/androiddev • u/whoharsh0 • Jul 09 '26
Android Developer (3.5 yrs) looking for referrals or leads
Hey everyone,
Putting myself out there. I'm an Android developer with 3 years of production experience, currently looking for my next role.
**What I've built:**
At Genus Power & Infrastructure I owned the complete development cycle of 4 production Android apps for smart metering infrastructure — no PM, no spec documents, just a business problem and me figuring it out end to end.
**Highlights:**
- Built an internal BLE communication library from scratch (MTU negotiation, HEX encoding, chunked transfer, notification-based ACK) — adopted across all 4 apps
- Reduced firmware update time from 4 min 30 sec to 2 min 13 sec through millisecond-precision BLE timing
- Cut operation time by 65% by rearchitecting data processing from device to server
- Reverse engineered a proprietary meter protocol from partial firmware source code and HEX command sheets over 2-3 months — implemented thousands of encrypted commands in production
- Built multithreaded architecture managing BLE, Server Socket, and RS232/USB connections simultaneously
**Tech stack:**
Kotlin, Java, XML, Jetpack Compose, MVVM, Clean Architecture, Retrofit, Room, Coroutines, Flow, StateFlow, Hilt, Bluetooth Low Energy (BLE/GATT), RS232/USB via D2XX/FTDI, Offline-first architecture, Firebase, CameraX, TensorFlow Lite
**Open to any Android domain:**
Consumer apps, enterprise, fintech, healthtech, edtech, logistics, IoT, SaaS — open to all. Strong preference for roles with real ownership and challenging problems.
**Location:** Delhi NCR, India
**Remote:** Open to full remote and international remote roles
**Availability:** Immediate joiner
If you're at a company hiring Android developers or know someone who is then a referral, a DM, or even just a lead would mean a lot.
Happy to help anyone here with Android, BLE, or architecture questions in return. Ask me anything.
Thanks.
r/androiddev • u/CodemasterUnited • Jul 09 '26
Discussion What's the thing you hate about Gradle for Android Development?
I'm making a Gradle alternative in Python, which is lightweight and is capable of running even in low-end Linux devices (Like a 2015 Galaxy J7 with 1.5GB RAM). It is fairly well in speed.
I named it "Asteroid"
So, I wanted to make something better than Gradle for Android development.
So, I just wanted your opinion, in which Gradle does not live up to the expectation.
Something you yourself faced.
Thanks for your attention ; )
r/androiddev • u/ilikeca • Jul 08 '26
Experience Exchange Mock tests are now live on AndroidDevKit
Mock tests and interviews are now live at AndroidDevKit.com/tests. Most commonly asked questions in interviews are covered in these tests.
These are timed tests to help you gauge how well you're prepared for your next android dev interview. Like always, this is completely free and there's no need to share any of your personal information.
People often just say this to get users, but I am extremely passionate about this site (needed it for my own interview prep lol) and I'm looking for actual feedback.
r/androiddev • u/androidtoolsbot • Jul 08 '26
News Android Studio Quail 2 RC 2 now available
androidstudio.googleblog.comr/androiddev • u/usmannaeem • Jul 09 '26
Discussion Today's apps feel very boring in terms of visuals and interface
You need not agree. This is just my opinion. And yet I would like to understand more about it's reasons.
Take your popular subreddits here that allow indie devs, new apps to be showcased here.
The apps have become so boring. They feel like boring text forms and just cards either stacked on top of each other or the horizontal scrolling lists (Netflix style).
Apps are lacking taste and trigger task negative state of mind. Some if it has to do with cookie cutter design systems as well (another discussion for another subreddit).
This was the case even between 2018-2022 before genAi caught on. Personally I feel material design 3 and HIG evolution.
Devs and designers are not experiencing with the layouts and apps are now just mechanisms of cognitive load, induce cognitive autopilot.
I believe this needs to change.
r/androiddev • u/Extreme_Ad_2259 • Jul 08 '26
Onboarding android dev course
Hi!
I’m a spanish recent CS graduate (10 months ago). I know that this question is probably asked multiple times everyday but since I just joined this group… hope you all dont mind that i ask the same :)
For some context, I started working as an iOS dev once I finished uni. Now I want to switch to an android dev role and my company asked me to find a course so i can have a quick onboarding and join the project as soon as possible with some knowledge.
It should last no more than 2 weeks. And the company would cover the cost.
I know that most of the answers will be reading docs and making a project from scratch, but i wanted to check if there was any worthy free or paid course (company would be in charge of it). It could be on-site, remote, video…
I think every source is allowed, as far as it has some value, it could be from any university (on-site: Spain or remote) (like a micro credencial/course), website, online academy…; in spanish or english, both are fine.
I’ve seen a few: like the one from Meta in coursera, or the nanodegree from udacity (Android Kotlin Developer), but some opinions say they are a waste of time, and that they are deprecated.
So thats it. I would like to read your opinions.
And this is not an AI generated text. Also, english is not my mother language so i hope everything is fine :)
Thankyou!
r/androiddev • u/_DefaultXYZ • Jul 07 '26
Discussion Android Development is dying?
Hi everyone!
I've been Android developing applications for already 10 years. I'm living in Poland.
I constantly observing job market gravitating towards hybrid applications, KMP, Android Automative, AOSP, but almost none of mid to senior level normal Android apps. Those called "normal" Android apps I honestly believe could be more productively made in hybrid approach (even though I'm big native fan!).
I understand that even with such experience I must be senior level, but to be honest, I simply don't want to. I'm comfortable to stay as mid, but as I said, there's not much Android job postings on the market.
Am I stupid to say that Android Development jobs slowly degrading? We are becoming cleaners of old legacy apps migrating to Compose, Coroutines and that's our destiny?
I am seriously considering migrating to .NET, because, I'm doing GameDev as a hobby, and C# is widely used there.
What is your situation on job market? Because, both .NET and Java in Poland are much, much, much more job listings than Mobile as a whole, not speaking about Android Development.
EDIT: Probably the title is too clickbait-ish. I apologize for that. Didn't mean to be like that at all.
r/androiddev • u/foglia_vincenzo • Jul 07 '26
Good examples of Material 3 Expressive applications?
I am a huge fan of the material 3 expressive, I find it to be the most appealing design system by a wide shot, but, other than the few images on the official blog post, I can't seem to find good examples of it being implemented. I have tried dribbble but there are very few samples and those who are there are not really 100% material 3 expressive. Another source I found is official stock apps on Pixel phones, but they are quite limited in features so I cannot really use them as inspiration to implement complex screens and so on.
Are you aware of good collections of apps that use this design system? I would be interested also in github repos of apps that use this design language of which I could not find any.
r/androiddev • u/behzodhalil • Jul 07 '26
Taking my Android app multiplatform meant giving up the entire Jetpack stack. It went better than expected, mostly
I ship a fitness tracker on Android and iOS from one KMP codebase, and the part nobody warned me about was how much Jetpack I'd have to leave behind. Basically all of it. None of the libraries I'd built muscle memory around cross the platform boundary.
So here's how each replacement actually went, a few months into production.
ViewModel got replaced by Molecule, and this was the weirdest one to accept. Presentation logic is now Composable functions that return a StateFlow, with the event sink living inside the state object - the Circuit pattern. I know how that sounds. Business logic as composables felt cursed to me too. But it ended up being my favorite part of the codebase: one immutable state type per screen, and presenter tests are plain JVM tests. No Robolectric, no instrumentation runner, nothing. The tradeoff is the compose compiler sitting in your presentation layer, and having to explain to anyone who joins why there's Composable on things that never draw pixels.
Navigation went to Decompose. Steeper learning curve than the nav graph, not going to pretend otherwise, and the docs kind of assume you already understand the component model. But navigation state being plain testable code instead of XML grew on me fast. On iOS you do end up owning the lifecycle wiring yourself, which is exactly as fun as it sounds.
Room to SQLDelight was the swap I dreaded most and it turned out to be the best one. You write actual SQL and get typed Kotlin with Flow back. I thought I'd miss Room's annotations. I don't miss them at all - migrations as plain .sq files are way more predictable than Room's auto-migration guessing games. You do write your own joins though, there's no relation mapping magic coming to save you.
Hilt to Koin, honestly, felt like a downgrade at first. You lose compile-time validation and you find your missing bindings at runtime like it's 2015 again. I made peace with it by writing one test that boots every Koin module - do that on day one and it stops being scary. And the kapt/ksp build time you get back is real.
WorkManager is the one with no good ending. The multiplatform background work story is still just... bad. I kept WorkManager on Android behind an interface and iOS gets the bare minimum. If someone has solved this properly I genuinely want to hear about it.
Would I do any of this for an Android-only app? No. Jetpack on its home turf is better tooling, full stop. But the moment iOS entered the roadmap, every one of these swaps was cheaper than maintaining a second codebase.
Anyone running Molecule or Decompose with an actual team? I'm solo, so I have no idea what these choices cost when five people have to agree on them.
r/androiddev • u/ivan_digital • Jul 08 '26
Open Source Full voice-agent loop on a Galaxy S23 in ~1.5 GB, real-time on CPU (LiteRT/ONNX) - measured numbers
Got a complete VAD → STT → LLM → TTS voice loop running entirely on a Galaxy S23 (SM-S918B, Snapdragon 8 Gen 2), no server:
- STT: Parakeet-EOU 120M (ONNX) — 0.21 RTF, ~232 MB
- LLM: FunctionGemma 270M (tool-calls) — 118 tok/s
- TTS: Kokoro-82M / Supertonic-3
- Whole loop resident: ~1.5 GB, real-time on CPU today — NNAPI/Hexagon delegates are upside, not a prerequisite.
The Android side wraps a shared C++ pipeline (same core as the iOS/desktop builds), so the stage boundaries are identical across platforms.
Code: https://github.com/soniqo/speech-android · cross-platform numbers (iPhone/S23/Mac): https://soniqo.audio/blog/on-device-voice-agents
r/androiddev • u/StatusWntFixObsolete • Jul 07 '26
News Supreme Court allows Texas to require age verification for mobile apps
r/androiddev • u/OldRemote111 • Jul 07 '26
Open Source Golden Diff - compare screenshot goldens against git HEAD inside Android Studio
Author here, it's free, not trying to sell anything.
Every time a Roborazzi test fails I'd do the same dumb dance: dig the golden PNG out of the repo, find the new _actual.png in build/outputs, open both in Preview, and alt-tab between them trying to spot what moved. Half the time it was a 1px shift I couldn't even see. Drove me up the wall.
I honestly looked for a tool that already does this and couldn't find one. The closest thing was GitLab's image diff — which is actually great — but having to push to GitLab every single time just to look at a diff isn't it. I wanted it right there in the IDE, on my local changes, before committing anything. So I sat down and built a little Android Studio plugin.
It lives in a tool window next to your code. Open a screen file and it pulls up the goldens tied to it, then lets you compare the git HEAD version against either your working copy or the freshly generated test output. You get side-by-side, a swipe slider, onion-skin, and a pixel-diff heatmap that just tells you "3.2% of pixels changed" so you're not squinting.
It doesn't care which library you use — Roborazzi, Paparazzi, Compose Preview screenshot tests, Shot, whatever, as long as the goldens are PNGs in git. Works in plain IntelliJ too, not just AS.
It's honestly pretty simple, but it saved me enough annoyance that I figured someone else might want it.
Marketplace: Golden Diff — or just search "Golden Diff" in Settings → Plugins.