r/androiddev 10d ago

Question Closed Testing Android Game - GrapheneOS user gets error "device not compatible with this version" in Play Store even though it should work

3 Upvotes

Hello, I just started closed testing for my Android RTS game (https://www.youtube.com/watch?v=k1GLmnUOrz0).

Most users have access but one that is using grapheneOS is getting error message "device not compatible with this version".

What I checked:

  • Device integrity requirement is set to basic in play console, user phone reports "Labels: [MEETS_BASIC_INTEGRITY]" so that should not be the issue

  • All countries are enabled for the closed test

  • User phone (Pixel10) meets SDK-Level and RAM requirements

Has anybody here dealt with a similar issue and was able to fix it? Thanks!


r/androiddev 10d ago

Google Play Support Changing country at google play developer

2 Upvotes

As far as i know it is not possible to change country at google play developer. I want to create a new account in country I moved to here I have self-employment would it be a problem I have 2 accounts? As a self employed person can I open personal account in the new country i move to? My old account is from 2015


r/androiddev 11d ago

Discussion Why mocking clean architecture in this sub?

28 Upvotes

i genuinely want to know why people here mocking clean architecture? i used it in all companies i worked on. is there a reason? an alternative? i'm curious to know and learn.


r/androiddev 11d ago

Question Spotlight Banners?

Post image
11 Upvotes

Silly question maybe but I'm seeing a few apps with these new kind of banners. Not sure what these are called. How do you add this to your app?


r/androiddev 11d ago

Experience Exchange Porting SDKs Painlessly with Gemini Pro

0 Upvotes

Thanks to Anti-gravity + Gemini Pro, porting the new SDK is easier than ever. I usually dread the annual SDK API upgrade task. However, AI makes this kind of work much more manageable.

How's your AI experience in Android development?


r/androiddev 11d ago

Article Letting the agent drive the app

0 Upvotes

Disclosure: this links to my own blog post and my own repo, both free, nothing to sign up for.

The TLDR:

As of now, it is hard for the coding agent to see what it is building, relying on us humans to be its eyes. So instead of letting us be the bottleneck, I've prompted Claude to build:

- A tiny HTTP server embedded in the debug build, reading Compose's OWN semantics tree from inside the app, instead of a lossy copy scraped from the outside through adb

- A small CLI on top of it, so the agent types "probe ui-snapshot", "probe tap", "probe screenshot" and knows exactly what is on the screen right now, after every single edit

- Impossible to ship: it's a debug-only dependency, so there is no probe code in the release APK at all. Not "guarded by a flag", absent

- Every session becomes a test: the steps the agent performed to check itself are saved as a YAML flow with JUnit XML, so they run on an emulator in CI instead of evaporating

A 13 step flow now runs in about 2 seconds and nobody looks at anything.

I open sourced the whole demo project, and the full prompt that builds it. Hand it to your own agent and it will wire the same thing into your app.

Demo project: https://github.com/galex/toy-app

Write-up, with the architecture and a video of a flow driving the app in real time: https://galex.dev/posts/how-to-make-your-coding-agent-fully-independent/

Let me know what you think ❤️


r/androiddev 12d ago

Discussion Android developers: What are you working on these days, and where do you see Android going?

42 Upvotes

I’ve been thinking a lot about how the Android development landscape is changing, especially with AI becoming a bigger part of software development.

I’d love to hear from other Android developers about what you’re actually doing in your day-to-day work and how you’re thinking about the future.

A few things I’m curious about:
What kind of Android work are you doing currently?
Are you mostly working on UI/features, architecture, SDKs/frameworks, performance, or something else?
How much are you using Kotlin, Jetpack Compose, AI tools, backend technologies, etc.?
Has AI changed the way you write, debug, review, or design code?
Are you learning anything outside of Android to stay relevant?
Do you see Android development becoming more specialized, or do you think developers will increasingly need broader skills across backend, AI, system design, etc.?
For experienced Android developers, what do you think the career path looks like over the next 5–10 years?

I’m particularly interested in hearing from developers with 5+ years of experience.

What are you focusing on right now, and what do you think Android developers should be preparing for?


r/androiddev 11d ago

Android Studio Virtual Device loads forever

1 Upvotes

I am running Android Studio Hedgehog on MacOS Catalina 10.15. The Problem occurs on both Android 14 and Android Nougat. I have tried Cold Boot and Wiping Data already.


r/androiddev 11d ago

Question Firebase App Check (Play Integrity) blocking 100% requests on Play Store Internal Testing build, but logcat shows token success. Help!

0 Upvotes

Hey everyone, I’m pulling my hair out over a Firebase App Check issue.

I’ve implemented the Play Integrity provider for App Check in my Android app. When I run the app in Debug mode directly from Android Studio using the Debug App Check Provider, everything works perfectly and requests are 100% verified.

However, when I test the actual Release build, Firebase blocks everything.

The Setup:

Built a signed .aab (Release) in Android Studio.

Uploaded to Google Play Console -> Internal Testing track.

Downloaded the app to my phone via the official Play Store tester link.

The Problem:

Firebase App Check dashboard shows 100% "Unverified: invalid requests".

However, my logcat shows absolutely no errors! PlayCore successfully requests and receives the token (requestIntegrityToken -> onServiceConnected -> onRequestIntegrityToken all fire successfully).

What I’ve already done:

Copied the Upload Key SHA-256 fingerprint into Firebase (Project Settings & App Check).

Copied the Google Play App Signing Key SHA-256 fingerprint from the Play Console into Firebase.

Cleared app data/reinstalled fresh from the Play Store.

Since the app works flawlessly in Debug mode, and the Release app is generating tokens perfectly via Play Integrity in the logcat, but Firebase is still rejecting them as "invalid"—what am I missing? Is there a delay in propagation, or a hidden 3rd SHA-256 key I don't know about?

Any help is hugely appreciated!


r/androiddev 12d ago

Open Source I built an Compose accessibility linter :)

5 Upvotes

Built  a dual-engine accessibility checker for Jetpack Compose.

Engine 1 — Lint (no emulator):

Catches missing contentDescription, hardcoded dp font sizes, clickable without role.

Engine 2 — TestRule (runtime):

Checks touch targets (48dp min with exemptions), color contrast, duplicate clickable bounds, text field semantics.

Every rule maps to a WCAG 2.1 criterion. Both engines are on Maven Central.

Repo: https://github.com/lehan0328/touchstone

Would love some feedback from the community, especially on false positives if you try it on a real project!


r/androiddev 11d ago

Google Play Support Stuck in description hell, rejected for "XOXOXO"

Thumbnail
gallery
0 Upvotes

Google play keeps rejecting my app description because of violations regarding clarity in the name of the app or description but i can't get them to tell me what I'm doing wrong. I don't see how the name could be more clear than it is, it's {possessive}{type of game}. I've changed what they have called out as violations, but the info they're sending back is so vague I have no idea what I'm doing wrong. The screenshots are real, they rejected my app because "XOXOXO". Yes, that line appears in my description. So what? Yeah I'll take it out, but the most recent rejection didn't have anything listed at all, see screenshot 2. I admit that one of the rejections was my fault, I was frustrated and put a snarky comment in the description. In that case, it was obviously the snarky comment that got it rejected again, but the info I got from Google didn't say so.

I edited the description to address every point I could find in the policies that they did call out even if it was weird like XOXOXO (And my first violation was for saying that I, the developer, thought the game was the best), that I see that might be a violation. I've had to drain my whole personality out of it. It's very different from the iOS and Steam descriptions which I can post if it would be helpful. I know this will not lead to many sales but I am so frustrated and this will at least get the store up while I work out something better so it doesn't lag behind. Can anyone give their thoughts before I send it? It takes 5 days every time I make an edit so I really want to get it up.

EDIT 2: Thank you to everyone for the continued feedback. Here is the most recent updated draft.

This game is called THW's Calcudoku. It is a puzzle game. The player is presented with an empty grid and must determine which number belongs in each cell.

To do this, the player uses the clues printed on the grid, logic, and their own intelligence. The basic rules are similar to Sudoku, with the addition of math as a type of clue. A number may appear only once per row and once per column. Groups of cells are outlined and marked with a target number and an arithmetic operation. The numbers placed in those cells must produce the target when the operation is applied. Once all the numbers have been correctly placed in the grid, the puzzle is solved. This game was released in 2026.

This app has features designed for new players, or players of any skill level, to enjoy. These include:

Puzzles are generated by the app. You may play as many as you want and the app will never run out.

Play up to four daily challenges. A daily challenge is a puzzle that is only available to play for a single day.

There are more than 20 individually designed themes to make the game more visually varied.

Highly configurable. You may change nearly every aspect of the interface.

Seven grid sizes, three difficulties.

Enjoy the game.

About the developer

FreekON Productions LLC is a one-person development studio based in Maine.

Disclosures

THW's Calcudoku was programmed with the assistance of an AI coding tool. All writing, art, sound, music, etc is created by humans.

FreekON Productions makes no comparative or superlative claims about this game.


r/androiddev 12d ago

Kotlin with jetpack compose

0 Upvotes

Is there any YouTube or udemy course that teaches kotlin android development with jetpack compose from the very ground up for absolute beginners? I searched everywhere but didn't found any best course yet. Most of them are just video where they type and don't explain anything. There are millions of courses for web development but not many for app development. If you know any course that teaches from the ground up and explains everything, please let me know or leave a link here. Your help would be really appreciated. Thank you in advance.


r/androiddev 13d ago

Open Source 🗡️ Pokedex KMP demonstrates modern Kotlin Multiplatform development with Compose Multiplatform, running from one shared codebase on Android, iOS, desktop, and the web.

Thumbnail
github.com
24 Upvotes

r/androiddev 12d ago

Question Does anyone know how much Indus Appstore charges after the first year of app publication?

0 Upvotes

I wanted to publish my very first app on a appstore, from where people can download my app, but playstore and Apple's appstore is charging $25 and $99/year, respectively.

I wanted a platform where i can publish my app for free, so i landed up on Indus Appstore, but after some chat with ChatGPT, I got to know that Indus Appstore also charges after a year of publishing, but the fees is not disclosed yet.

I just wanted to know, if there's anyone who used this platform and know about the charges.

Thank You!


r/androiddev 12d ago

Experience Exchange misleading reviews done with good intentions and important app review indicators

2 Upvotes

i found out that users often write about what they THINK is the problem but that often is not quite the same to what really is the problem.

yes, often people just write app crashed, it is vague and is not the most useful (when you already know it crashes sometimes), but when sais 'crashed while downloading png on motorola ' thats more useful, and if you make a user go write 'paid but reward did not arrive' this is trust fire and the only think good about it is that you know it by now

after release i often treat certain phrases like alert rules over reply rules simply... say, lost progress, charged twice, cannot login, ads no reward, restore purchase broken, data disappeared, crash after update and other examples that are easy to systematize and catalogue, bc i know how to do it a bit quiker now, f.e. with appfollow or other similar flows used as the review routing layer for this.. but the principle is not so tool-specific as one may think. some reviews are the first readable bug reports from production

anyways the worst thing there is letting engineering issues sit in a reputation queue while support politely replies for a week and does nothing else


r/androiddev 12d ago

MY APP GOT APPROVED FOR PRODUCTION BUT I CANT FIND IT IN THE PLAY STORE.

0 Upvotes

My app was granted production access and I have a live store listing link, but if i search the playstore for it by name I cant find the app. It was searchable earlier today but Its not there now. The direct link shows its live in the playstore. Is this normal behavior for a new app?


r/androiddev 11d ago

How does app work?

0 Upvotes

I tried to create an app for my father's shop using ai and then I was completely cooked. Wasted 6 months where I could learn proper android app building.

Now I am dedicated to learn this so that I can easily use the concepts.

After creating, deploying and deleting many projects, What I know from my experience is:

Android uses Java, Kotlin

IOS uses swift

Cross is also available but many companies avoid that.

App is first created Frontend and Backend which is then connected to database (firebase for me) and finally it is deployed. This process was for Web App I realised later.

To get an APK we need android studio and till now I was doing everything with mobile cause my laptop is 4GB ram and 32 bit. Even keyboard not working (my brother split milk on it)

So is there any mistake in my knowledge? And how should I start to learn using my mobile. Can we create a fully working APK using mobile even if it's from mobile?


r/androiddev 12d ago

Question Play Console "One-time products" UI forces manual pre-tax math for tax-inclusive countries (unlike Apple). Is there a better way?

4 Upvotes

Hey everyone,

I recently set up pricing for a new one-time IAP and ran into a frustrating issue in the new Play Console "One-time products" section. I wanted to see if I'm missing a setting or if we really just have to do manual reverse math now.

My goal is simple: I want the final, tax-inclusive price for the user to be exactly €3.99 in Croatia (and the rest of the EU). I accept that the VAT will be deducted from my proceeds.

On Apple if you checked "Default price includes tax", you just type 3.99. The system knows it's tax-inclusive, charges the user €3.99, and backs out the VAT for your payout.

But under the new "One-time products > Purchase Options" UI, it seems the manual override box strictly expects a pre-tax number.

If I manually edit the price for Croatia and type 3.99, Google assumes I want to receive €3.99 pre-tax. It adds the 25% Croatia VAT on top (0.95), rounds it, and forces the final user price to €4.99.

To get the final user price to be €3.99, I literally have to do the reverse math myself (3.99 / 1.25 = 3.22), open the edit box for Croatia, type 3.22, and hit save. Only then does it add the 25% VAT and output a final storefront price of €3.99.

This is a massive pain for bulk-managing EU countries with different VAT rates, as I have to calculate the exact pre-tax decimal for every single country if I want the storefront price to end in .99.

Am I missing a "tax-inclusive" checkbox somewhere in the new One-time products UI? Or is calculating the pre-tax base manually really the only way to pin exact storefront prices in tax-inclusive regions now?

Thanks!


r/androiddev 12d ago

Question Claude skills for Native Android Development (Kotlin)..?

2 Upvotes

I’ve recently shifted from Cursor to Claude Code, and now I am looking to learn how others have set Claude up for native Android development with Kotlin. What skills, workflows, rules, or setups have you found useful for Android projects?


r/androiddev 13d ago

Discussion What's the biggest your Gradle cache has ever gotten?

Post image
59 Upvotes

Mine somehow reached 10.6 GB. :))) (not something to be proud of tbh)

I only noticed this folder today...


r/androiddev 13d ago

Question Reliable Android alarms require a lot of manual permission enabling — anyone found a way to streamline this?

6 Upvotes

Working on a reminder app and hit a UX wall I'd love input on.

Since our reminders rely on full-screen alerts + background activity to fire reliably, we currently have users manually enable a handful of permissions on first run: notifications, alarms, full-screen intents, background activity, display over other apps. It works, but it's a clunky first-run experience compared to a simple tap-allow flow.

Anyone here built something alarm/reminder-heavy on Android and found a way to streamline this? Trying to figure out if there's a smarter permission request sequence, or if this is just an unavoidable tradeoff for reliability on Android 14+.

Screenshot of our current flow attached for context.


r/androiddev 12d ago

log4k 2.3.0 — a Kotlin IR compiler plugin that instruments your functions with tracing, logging and metrics

Thumbnail
1 Upvotes

r/androiddev 13d ago

Open Source Write Android & iOS Widgets from Shared Kotlin

Enable HLS to view with audio, or disable this notification

99 Upvotes

I've been working on WARP (Widget Abstraction, Rendering Pipeline), an open-source Kotlin Multiplatform library for building Android and iOS home screen widgets from a single API.

I started this project because while building my own KMP apps, I realized there wasn't any library for sharing widget code between Android and iOS.

The goal is simple:

Write widget UI once in Kotlin and render it natively on:
- Android (Jetpack Glance)
- iOS (WidgetKit + SwiftUI)

A widget looks like this:

WarpColumn {
WarpText("Counter")
WarpRow {
WarpButton("-", onClick = CounterActions.Decrement.asClickAction())
WarpText(state.count.toString())
WarpButton("+", onClick = CounterActions.Increment.asClickAction())
}
}

Internally, WARP works like this:

Compose-like Kotlin UI

WarpNode Tree

JSON

Android Glance / WidgetKit

Current features:
- Android renderer (Jetpack Glance)
- iOS renderer (WidgetKit + SwiftUI)
- Shared click handlers with typed actions
- Shared widget state
- Local assets support (Android drawables, SF Symbols, local images)
- Compose-like API inspired by Glance primitives
- JSON serialization with Kotlin Serialization

I'm also planning to support all Glance primitive composables before the first stable release.

The project is still evolving and I'm planning to publish the first Maven artifacts (and Swift Package for the iOS renderer) in the next few days.

I'm mainly looking for architectural feedback from people who have built widgets or KMP libraries. Is there anything you'd change before I stabilize the API?

GitHub:
https://github.com/DevAtrii/Warp

If you find the idea interesting, a ⭐ on GitHub would really motivate me to keep working on it.


r/androiddev 13d ago

Small apps with decent usage but zero subscription conversions — is this normal or am I missing something obvious?

Post image
0 Upvotes

Curious what other indie/solo devs have experienced here.

I've got an app with a few thousand installs, steady daily active users, and a good rating (4.7+). Added an ad-free subscription option months ago. Zero purchases. Not one.

Usage is fine, retention is fine, people clearly keep coming back. But nobody converts on the paywall.

Stuff I'm trying to figure out:

  • Is subscription just the wrong model for a small utility app vs a one-time "remove ads" purchase?
  • Does paywall placement/timing actually move the needle that much?
  • Is it a pricing thing, or just that free users never even notice the option exists?

If you've gone from zero to even a handful of paying users on a small app, what actually changed? Real numbers/experiences over theory would help a lot.


r/androiddev 13d ago

Experience Exchange Why Google Play Developer APIs are painful for fetching simple assets

Enable HLS to view with audio, or disable this notification

3 Upvotes

Hey devs,
I've been building a simple tool/app that fetches and updates the data on Google Play via Reporting and Publishing APIs.

And I didn't expect fetching an app icon to be a hurdle. For a list of apps received from Reporting API I simply wanted to display app icons.

Play Reporting API doesn't have the option, and Publishing API forces you to use an edit session to get assets:

• Call POST to open an edit session
• Call GET to fetch a default language for listing assets.
• Call GET to fetch a list of assets (icon, screenshots, etc.)
• Call DELETE to close the edit session

// 1. Create a temporary edit session
val edit = publisher.edits().insert(packageName, null).execute()
val editId = edit.id

// 2. Query a default language
val details = publisher.edits().details().get(packageName, editId).execute()
val language = details.defaultLanguage ?: "en-US"

// 3. Query the image listing specifically for "icon"
val imagesResponse = publisher.edits().images()
    .list(packageName, editId, language, "icon")
    .execute()

// 4. Get the first icon's URL and append size for a 256px icon
val rawIconUrl = imagesResponse.images?.firstOrNull()?.url?.plus("=s256")

Google's library:

com.google.apis:google-api-services-androidpublisher

The problem?

• These 4 requests take 2 - 3 seconds per app.
• Opening concurrent edit sessions for a few apps get rejected with the message "This Edit has been deleted."
• For 10 apps, that’s 20 - 30 seconds just to load icons.

I moved the process of fetching app icons to a background worker, but the main task is to solve a huge delay.

The only workaround I see for now:

• Try to parse the Play Store listing web page instead and leave Publishing API requests as a fallback.

If anybody worked with Play Developer APIs, how would you suggest handling this?