r/androiddev 3d ago

Open Source I wrote down every mistake from 3 years of building my Compose Multiplatform app. All 224 of them.

55 Upvotes

Hey all — I'm maxrave-dev.

Three years ago I started SimpMusic — a FOSS music client in Kotlin and Compose Multiplatform — because the app I wanted didn't exist and I figured I could learn by building it.

Today it runs on Android, Windows, macOS and Linux, and it's sitting at almost 11k stars with real users on F-Droid and GitHub releases. I'm saying that not to flex: I'm 23, for most of those three years I had no senior to ask and nobody reviewing my code, and I learned almost everything the hard way — Media3 internals, Room migrations at real-user scale, Glance widgets, a native media engine bound over JNA, desktop packaging and code-signing. There's plenty in the codebase I'm still not proud of. Some bugs cost me whole days. A couple are honestly embarrassing.

But I kept notes. Every time something burned me — a Media3 quirk, a migration gone wrong, a Compose trap — it went into my personal notes: messy, half-finished, scattered all over the repo.

Recently I turned those hand-written notes into something more useful: a skills pack for coding agents. 224 short markdown docs in the agent-skills format, so Claude Code / Cursor / Codex can pull the right doc exactly when you hit the same problem (`npx skills add maxrave-dev/kotlin-footguns`) — but it's all plain markdown, and it reads fine as a human reference too.

To be clear, this isn't an AI dump with my name on it. Every doc follows one structure — what breaks, the mechanism behind it, and commands you can run to check whether your own codebase has the same problem — and every claim was verified against the real tree before shipping. The notes and the scars are mine; the agents just helped me make three years of mess consistent.

https://github.com/maxrave-dev/kotlin-footguns

GPL, plain markdown, free. I'm sure some docs still have mistakes — I'm still learning. If you spot one, tell me. That's the whole spirit of the thing.


r/androiddev 3d ago

Anyone here registered for the Android Developer Console with a previously terminated Play account?

6 Upvotes

Our Play developer account got terminated about a year and a half ago for "prior violations." Never got a straight answer on what that actually meant, best guess is it got linked to some other account somewhere. The app is boring internal stuff, a delivery fleet app our own drivers and partner shops use. We've just been handing out the APK from our own site since then and honestly it's been fine.

That obviously stops working once developer verification goes global. So the plan was to register with the Android Developer Console instead, since that's supposed to be the path for people distributing outside Play.

Except I can't find anywhere that says whether that's even allowed if you've been terminated from Play. The verification docs don't mention it, the ADC help pages don't mention it, and every time I search it just turns into results about Play Console bans, which isn't the same thing.

So has anyone actually tried this? Terminated on Play, then registered ADC. Did it go through, get rejected, or go through and then get pulled later?


r/androiddev 3d ago

Discussion New ‘Unverified developer apps’ setting appeared in Developer Options on my Redmi Note 11 — is Google’s APK policy already rolling out?

Post image
14 Upvotes

r/androiddev 3d ago

Question How to test "Widgets on lock screen" on Android Studio?

1 Upvotes

I want to implement the "widget on lock screen" feature for my app. and I don't have a physical Android device that supports that feature. So I'm hoping to test it on the virtual device emulator in Android Studio (Android Studio Quail 1 | 2026.1.1 Patch 2). But I have tried installing system image Android 16, Android 17 and Android 17.1, but I still can't find the "Widgets on lock screen" in the Setting screen. I have tried setup lock screen, and tried find in the 'Wallpaper & style" -> "More lock screen settings" screen but it's not there. What am i missing?


r/androiddev 3d ago

Study partner

10 Upvotes

Hi everyone! I am looking for one dedicated 1-on-1 study partner to go through the Android Basics with Jetpack Compose course together. I want someone to pair up with for weekly code reviews, troubleshooting, and keeping each other accountable. Let me know your time zone if you are interested in pairing up!"


r/androiddev 3d ago

Question Do you have experience with Install Referrer? It is driving me crazy.

5 Upvotes

I'm using the Google Play Install Referrer API (com.android.installreferrer:installreferrer) to track player referrals in my Android game.

It works on some devices and on others I get (not%20set) for utm_source.

The strange part is that it works reliably on my phone:

Android 14

Play Store 52.8.55

But on two other phones (friends and many other clients) it returns an empty referrer:

Android 16 + Play Store 52.8.55

Android 17 + Play Store 52.8.55

I initially suspected the Play Store version, but I updated my own phone from 52.7.55 to 52.8.55 and the referrer still works. Same app version, same link, same code.

The API connection itself returns OK; it's the actual referrer string that is empty.

Has anyone experienced Install Referrer behaving differently on Android 16/17?

Is there a known requirement, bug, or additional quirk I'm missing?

I found some very old posts about this behavior pointg to this behavior when on the device the user is logged into a managed account. But I don't think this is my case.

Any ideas on how to diagnose or work around this would be appreciated.

UPDATE: I have possible answer to why referrer information is lost most of the time. It's not confirmed, but it could be that the readon is: the app is targeting children. I believe that because most accounts are children accounts, referrer information is removed. I made the connection with another problem I have. I am unable to create an app type advertising campaing (google ads) for my game because they cannot track conversions. You are unable to create 'Conversion Actions' for apps/games that target children. It's not confirmed but this is my best guess so I leave this update maybe it helps others too.


r/androiddev 3d ago

Question When do I show permission rationale

3 Upvotes

There's a QR code scanner in my app. Should I show the rationale before navigating to the scanner when the "Scan QR code" button is tapped? Or should I open the scanner and show the rationale there, with a red line over the black background (the scanner layout is basically invisible because the permission hasn't been granted yet)?


r/androiddev 3d ago

Google Maps vs Mapbox for Android navigation?

1 Upvotes

Hey guys, I’m building an Android app that needs map + navigation, custom map icons, and support for multiple transportation modes (car, bike, walking, etc.).

Would you recommend Google Maps, Mapbox, or something else? Any experience with these would be appreciated!


r/androiddev 3d ago

Question Can I use my AdMob/Google Play earnings to advertise my own game?

0 Upvotes

I have some money accumulated from AdMob ads and IAP purchases on Google Play.

Instead of withdrawing the money to my bank account, I was wondering if there’s a way to use that balance directly to run Google Ads campaigns for my own game.

Basically, I’d like to reinvest the revenue I make from my game into advertising it, without transferring the money to my bank first.

Is this possible, or are AdMob/Google Play earnings completely separate from Google Ads billing?


r/androiddev 4d ago

Open Source A compose web storybook/showcase

Enable HLS to view with audio, or disable this notification

45 Upvotes

I always wanted a component gallery I could open from the repo, without building and running the app. So I made one. Arkive.

Add the Gradle plugin, run a task, and you get a web catalogue of every component in your app. No emulator, no test code to write.

Repo: github.com/infinum/arkive
Live sample: infinum.github.io/arkive

Still early, would love your feedback.


r/androiddev 3d ago

Question Is MediaStyle genuinely this constrained??

0 Upvotes

I'm making a music app, and I'm making a notification player, and all I want is six buttons (play/pause, previous, next, stop, loop mode, shuffle mode) with their icons being normal boring text characters. This can be easily achieved in a normal notification, however those lack one functionality: a seek bar. I can make a progress bar easily, but not one where I can drag it to change which part of the song is playing. So I look at the MediaStyle - the android intended class for a music player, and apparently it's limited to five buttons, and their icons can't be boring ol' text? How is this advanced API21 feature more limited than a boring ol' API3 notification? I'm genuinely thinking I just don't need a seeker bar.


r/androiddev 4d ago

Open Source A more advanced Android Studio emulator?

Thumbnail
gallery
3 Upvotes

I was thinking about what to do with Unity 3D and decided to do something I've often wanted to do: I was going to connect Android Studio to Unity using scrappy and assign the image to the phone model. I did that. Also, if hardware emulation (eMMC, processor, battery, etc.) is captured while the system is running, it will seriously cause a kernel panic. In this case, the emulator will become useless. I also installed a great EDL mod for bootloop situations. It can be fixed using Android Studio images! I also added a bootloader lock system. If you type `fastboot oem unlock` while locked, the device will then start in writable mode. I also added a recovery for realism :=) and adb extensions too. I need your feedback on this. Maybe you'll take a look, or whatever. I'm leaving the link here :)


r/androiddev 4d ago

News 4 new ways Android is protecting your network connections

Thumbnail
blog.google
13 Upvotes

r/androiddev 4d ago

Scheduled wallpaper updates losing sync after reboot/Doze — best practice for timers that must survive device restart?

1 Upvotes

I have a live wallpaper feature that needs to change on a schedule — think "rotate every N minutes" and "switch at set times of day." Currently I'm scheduling these with AlarmManager, and it mostly works, but I've confirmed a real problem:

  • If the device reboots, or sits in Doze for an extended period, the schedule loses track of its state.
  • When the device comes back on, the next trigger fires at the wrong time (or not at all until the next natural check-in), so the whole rotation is out of sync from what the user configured.

What I'm currently doing:

  • Plain AlarmManager.set() calls scheduled ahead of time for each transition.
  • No BOOT_COMPLETED receiver yet, so nothing gets rescheduled after a restart.

What I'm considering:

  • Adding a BOOT_COMPLETED broadcast receiver that recomputes and reschedules all pending alarms based on stored next-trigger timestamps.
  • Switching from plain set() to setExactAndAllowWhileIdle() so alarms actually fire during Doze instead of being deferred.
  • Alternatively, moving this to WorkManager with periodic/one-off work and persisted constraints instead of managing raw alarms myself.

Questions for anyone who's solved this:

  1. Is BOOT_COMPLETED + recompute-on-restart still the standard approach, or is there something more robust now?
  2. For something that needs to fire at a fairly precise time (not just "eventually, within a window"), is WorkManager actually reliable enough, or does AlarmManager with setExactAndAllowWhileIdle() remain the better fit?
  3. Any gotchas with OEM-specific battery optimization (Samsung, Xiaomi, etc.) beyond the standard Doze/App Standby behavior that I should be defending against?

Appreciate any pointers — this is the one part of an otherwise-working feature set that's giving me trouble.


r/androiddev 4d ago

Something about app quality requirements

0 Upvotes

Android Studio Quail 3 | 2026.1.3 Patch

Mac mini m2 pro 32gb\512gb

and IDE Max heap size is set to 6144mb

To be fair, Android Studio and JetBrains products do seem a little snappier lately. Still, situations like this aren’t uncommon, and I can’t look at this without smiling hysterically.

Meanwhile, Android Studio while I was literally doing nothing:

Actually, those are literally all the desktop apps I have installed on my mac mini, yet temporary IDE and build files fill up the drive so quickly that 512Gb is nowhere near enough.


r/androiddev 4d ago

Discussion Android Studio crashes a lot on Linux

2 Upvotes

I'm taking programming class for mobile devices, and we use Android Studio, the IDE on my teacher's machine crashes and closes, he uses Linux.

We were discussing about it, he said he is sure that the developers are very busy and need to deliver the code on time, and that's why they use AI, which makes the code not reviewed


r/androiddev 4d ago

Question How do you monitor Play Store Reviews?

0 Upvotes

I have a dozen of app and I want to read and respond to all user reviews of all my apps. Any tips monitoring them? I don't like the email because it's spammy, and also hate play console because that's like 4 clicks per app.

I want something like a dashboard where I just check once in a while and it list all new reviews


r/androiddev 4d ago

How are you getting AI agents to accurately translate designs into Android UI?

0 Upvotes

I've been experimenting with using AI agents to go from a design → Android UI, and I'm curious how others are solving the design-to-code fidelity problem.

Figma + MCP seems to be one obvious approach, but I'm wondering what other approaches people are using to give an agent enough context about the intricate details of a design — spacing, typography, component dimensions, colors, corner radii, shadows, alignment, responsive behavior, etc.

For example, are people:

  • Giving agents screenshots and letting them infer the UI?
  • Exporting Figma/design metadata through MCP?
  • Using some kind of design tokens/spec files as an intermediate format?
  • Maintaining a component/design-system library that the agent can reference?
  • Using image/PDF/vector exports alongside textual instructions?
  • Building custom MCP servers or other tooling around their design system?
  • Using any free/open-source alternatives to Figma + MCP?

I'm particularly interested in workflows that can get reasonably close to pixel-level fidelity, rather than just generating something that looks vaguely similar.

Would love to hear what workflows/tools you're using, especially for Jetpack Compose. What has actually worked well for you in practice?


r/androiddev 4d ago

the android terminal

Thumbnail
gallery
0 Upvotes

is the experimental terminal on android dev options just a debian vm


r/androiddev 5d ago

Question How to learn Android development?

0 Upvotes

Hi everyone!
I don't just mean learning how to write programs and master a modern stack. I want to understand how everything works from the inside. The problem is, I can't find a good course that meets my needs: either the courses are too superficial and just teach me how to build apps in Composite without understanding what's going on, or they delve too deeply into the hardware and design of Android itself. I already know how to use a basic modern stack, but I have no idea how everything works. I could just read the documentation, but it wouldn't provide any structure, and it would be difficult to understand what's important and what can be omitted.


r/androiddev 5d ago

Open Source Composed 0.5.0: a compose helper lib

11 Upvotes

It's been more than 2 years since I posted here about the release of Composed, my compose helper lib. As opposed to back then, it's now hosted on maven, built for multiplatform (android, JVM, iOS, wasm) & its API has expanded and waaaay matured. Hence, I thought I'd give y'all a heads up, in case someone may find it useful and might not want to strong skip this one.

Broadly speaking it contains convenience, UX behavioural and animation APIs, that I felt the lack of in my daily development, and once written got tired of copying from project to project. PRs / issues are welcome. Cheers ✌️


r/androiddev 6d ago

How far can you push a Jetpack Compose UI before it stops feeling intuitive?

Enable HLS to view with audio, or disable this notification

458 Upvotes

I built this subscription tracker as a UI/UX experiment in Jetpack Compose.

The data is mocked for now, but the app has multiple sections, navigation, subscription lists, a renewal calendar, analytics and an add flow.

I wanted to avoid the usual Material look and push Compose a bit further with:

  • asymmetric layouts
  • angled elements and custom shapes
  • section-based colors
  • oversized typography
  • animated transitions
  • a navigation system that doesn’t use the usual bottom bar

The idea was to keep the interactions fairly familiar, while making the visual language much less conventional.

One thing I find interesting is that unfamiliar visuals and unfamiliar interactions aren't necessarily the same thing.

Does this still feel usable, or did I push the layout too far?


r/androiddev 5d ago

News Android Studio Rabbit 1 Canary 3 now available

Thumbnail androidstudio.googleblog.com
3 Upvotes

r/androiddev 6d ago

Discussion [OFFICIAL] Elevating app quality: Reducing memory usage and improving device migration

26 Upvotes

Source: https://android-developers.googleblog.com/2026/08/app-quality-memory-optimization-secure-onboarding.html?utm_source=email&utm_medium=msa&utm_campaign=elevating-app-quality-q3-2026

TLTR:
Get your apps and games below these memory limits or get Kicked off the Android Playstore in February 2027:

Apps

App State Foreground User-perceived services Background Cached
Physical RAM 90th Percentile 90th Percentile 90th Percentile 90th Percentile
0 - 4 GB (0 MB - 3200 MB Total Memory) - - - -
4 GB (3200 MB - 4800 MB Total Memory) 2 GB 1 GB 1 GB -
6 GB (4800 MB - 6800 MB Total Memory) 2.25 GB 1.25 GB 1.25 GB -
8 GB (6800 MB - 9216 MB Total Memory) 2.25 GB 1.5 GB 1.5 GB -
12 GB (9216 MB - 14336 MB Total Memory) 3.25 GB 1.75 GB 1.75 GB -
16 GB (14336 MB - 18432 MB Total Memory) 4.25 GB 2 GB 2 GB -
16 GB + (Above 18432 MB Total Memory) - - - -

Note: Each RAM tier range includes its lowest value. Total Memory can be lower than a device’s advertised Physical RAM.

Games

App State Foreground User-perceived services Background Cached
Physical RAM 90th Percentile 90th Percentile 90th Percentile 90th Percentile
0 - 4 GB (0 MB - 3200 MB Total Memory) - - - -
4 GB (3200 MB - 4800 MB Total Memory) 2.25 GB 2.0 GB 2.0 GB -
6 GB (4800 MB - 6800 MB Total Memory) 2.75 GB 2.5 GB 2.5 GB -
8 GB (6800 MB - 9216 MB Total Memory) 3.5 GB 2.75 GB 2.75 GB -
12 GB (9216 MB - 14336 MB Total Memory) 4 GB 3.2 GB 3.2 GB -
16 GB (14336 MB - 18432 MB Total Memory) 5 GB 3.5 GB 3.5 GB -
16 GB + (Above 18432 MB Total Memory) - - - -

Note: Each RAM tier range includes its lowest value. Total Memory can be lower than a device’s advertised Physical RAM. 

Bitmap memory usage

Holding onto bitmaps for long periods of time in app states other than the Foreground can consume excessive memory - it’s not possible to render bitmaps unless the UI is visible. You typically shouldn’t hold onto bitmaps for long periods of time in these states, but your app might be sampled shortly after a state change where you are actively responding to onTrimMemory and releasing memory held for bitmaps, so these thresholds are higher than zero to account for this.

App State 90th Percentile
Foreground  
User-perceived services > 200 MB
Background > 200 MB
Cached > 400 MB

Sources and links:
https://android-developers.googleblog.com/2026/08/app-quality-memory-optimization-secure-onboarding.html?utm_source=email&utm_medium=msa&utm_campaign=elevating-app-quality-q3-2026

https://support.google.com/googleplay/android-developer/answer/17492799#zippy=%2Ccore-vitals-and-stability%2Creduced-memory-usage


r/androiddev 6d ago

Google Play Support Over 300 deploys with ~25 min review times, now suddenly stuck in review for 30 hours

10 Upvotes

I have an app published on the Play Store for over 2 years, with more than 300 deploys in total.

My workflow has always been: deploy to internal testing > test > all good? > promote to production.

It has always worked really well, with production deploys staying in review for 25 minutes max.

The day before yesterday was exactly like that. I deployed a minor update with a new screen and some CRUD features—nothing major. In 20 minutes, it was live on the Play Store for users.

Yesterday, I just changed the size of three buttons on that new screen. A silly change that I've done similarly countless times in the past. I pushed it to internal testing and then promoted the release to production.

I thought it would be live in 20 minutes, but it's been 30 hours and the update is still stuck in review... I don't get it. Things just went off the rails overnight.

I couldn't even remember the last time one of my deploys spent more than half an hour in review before being published.

Do you guys know what might be happening? Is anyone else in a similar situation right now? Were there any sudden changes to Google Play Store policies overnight?

[edit]

Solved! Just cancelled the build stucked in review and redeploy. The new build was in production in just 20 minutes! Thanks u/Slodin.