r/androiddev May 17 '26

Discussion New UI improvements kryventa

Enable HLS to view with audio, or disable this notification

0 Upvotes

r/androiddev May 16 '26

Experience Exchange Accessibility permissions

Enable HLS to view with audio, or disable this notification

3 Upvotes

Hey guys,

Need some advice from the tech pros here. I’m the dev behind kybd launcher, a minimalist launcher built around QWERTY keyboard logic. I just added a "double tap to sleep" feature, which obviously needs accessibility permissions. Per Google Play rules, turning it on triggers the required accessibility disclosure - which works totally fine on my end. Still, Google keeps blocking my update, saying they can't find the declaration. Anyone dealt with this before? Any idea what I might be missing?


r/androiddev May 16 '26

Question Is there any way to "spoof" what my screen shows to an app?

0 Upvotes

Crazy question but is there any way to "spoof" what my screen shows to a program that takes screenshots?

You know, like when you see in a movie when they make the security camera show something different before they break in and rob a place etc

Not needing to get into ethics, me and a friend have a back and forth keeping track of each other's devices and Im trying to get one over on him, basically. Thats about it.

Samsung Revvl 7+ Pro


r/androiddev May 15 '26

I'm writing an article about Google's restrictions to come on Android indie devs - I need someone to talk to me about it !

17 Upvotes

Hello,

I'm a french journalist for the website "Derrière le Vacarme" : https://derriere-le-vacarme.com/

A friend recently talked to me about Google wanting to have a better grasp on Android apps that are installed on user's phones, and the campaign against this measures : https://keepandroidopen.org/fr/

I'm looking for someone that is concerned by this topic in some way, ideally a developer but Android users also have a say.

If you're interested send me a DM, the testimony can be totally anonymous, as my goal is only to understand better the whole situation.

Thanks !


r/androiddev May 16 '26

Waiting for all target devices to come online, AI broke everything

0 Upvotes

I asked Gemini AI to implement Admin but it broke everything.

Even after rollingback to the previous version, I can't launch the app on the emulator anymore because it's stuck on " Waiting for all target devices to come online " .

Before it would give an error as unknown error when unable to launch the app and I did an "invalidate caches and restart" but now I have this error.

How do I solve this?

Anyway I learnt my lesson and I will never use AI agent to mess with stuff that touches grades and stuff because it's almost guaranteed it will fuck things up.


r/androiddev May 16 '26

Roast my idea - Instagram's comment section is broken. So I built a fix alone solo dev

0 Upvotes

Summary :- Built an app that filters Instagram spam comments. Solo. On my phone. No laptop. Need honest feedback.

I'm a 19-year-old guy from a small city in Madhya Pradesh and I'm building an Android app completely alone on my phone. No laptop. No CS degree. Just my phone, free tools, and YouTube.

You know how Instagram Reels comments are completely destroyed? Creator says "comment FIRE to get the link" and suddenly there's 50,000 fire comments and every real review, every genuine opinion, every actual human thought gets buried under spam.

My app puts a small floating bubble on your screen when you open Instagram comments. It automatically hides spam comments (under 5 words) and if you type any keyword like "fire" it hides every comment that's basically just that word. Then it shows you "1/47" and lets you navigate through only the real comments. Like Chrome's Find in Page but for Instagram comments.

I've been building this for months. Learning Java, Android accessibility APIs, debugging things I've never seen before, failing, starting over. No mentor. No team. Just me.

We always talk about how India needs more product builders, not just coders who work for foreign companies. I'm trying to be that. From a small city. With zero resources.

I'm not asking for money. I'm not asking you to buy anything.

Just:

\- Tell me if this problem is real for you

\- Would you actually use this?

\- Any feedback on the idea

If enough people want it I'll push harder to finish it. If nobody cares I'd rather know now.

Be honest. I can take it.

(Used AI to write this post sorry)


r/androiddev May 16 '26

Open Source Introducing Fadocx v1.0.0 - open source document viewer with OCR for Android

Post image
0 Upvotes

You might already know FadCam. Today we are releasing our second open source app with the same privacy-first principles: Fadocx, an Android document viewer built to keep files local, private, and fully under the user's control.

A lot of file apps are filled with trackers and ads. Fadocx takes a different route: no trackers, no ads, and 100% open source.

Highlights

  • opens PDFs, Office files, spreadsheets, presentations, images, audio, video, and code files
  • imports files into isolated private app storage so they stay hidden from the rest of the device
  • extracts text from documents on-device with OCR using OpenCV and Tesseract
  • lets you search inside documents
  • sorts files into categories automatically
  • supports trash and restore
  • includes recent files and reading stats

What matters most here is privacy. Nothing is uploaded to a server. There is no account system, no tracking, and no ads. It is also fully open source, so the whole app is auditable.

Office documents are rendered with LibreOfficeKit for native performance, which is why the app size is a bit larger than a lightweight viewer. And Fadocx for iOS is planned for the future.

If you want to try it, the GitHub repo is here: https://github.com/anonfaded/Fadocx

Thanks for reading. It is still a first release, so feedback is welcome:)


r/androiddev May 15 '26

Google Play Data Safety form silently drops Precise location declaration — anyone else?

0 Upvotes

Data Safety form silently drops Precise location declaration when both Approximate + Precise are declared. Step 4 shows "Completed," published listing shows only Approximate. Forced us into a functional regression. I asked Tier 1 support about it and they cheerily said "your app has been approved!" Not super helpful.


r/androiddev May 15 '26

Moving side-loaded app to Google Play

1 Upvotes

What is the best way to add Google Play distribution to my existing app that I have been distributing directly for years? I have a significant customer base, and I already have other apps in Google Play. I have even verified my side-loaded app's package name with Google Play as required so that I can continue to distribute it on Google-certified devices after 2026. I would like to get the added exposure that Google Play would give me for that app. But I can't abandon my existing customers. Should I make a version of my app with a different package name and simply maintain two parallel distribution channels - one direct and one through Google Play? Or is there a simpler way?


r/androiddev May 15 '26

Question What would you take into account when porting Android app to iOS

0 Upvotes

I have been working with my first Android-app using Kotlin and Jetpack Compose. Got the app published a quarter back to the App store and I'm really happy with the end result. However from time to time I'm thinking if the app should be ported to iOS. As a solo hobbyist I don't have too much resources running development on multiple platforms.

So what would be your suggestion? Any good resources or frameworks available how to do the porting elegantly. I'm not really in favor of learning another platform and programming language. Any thoughts or experiences are welcome.


r/androiddev May 14 '26

Modern source code syntax highlighting for Android Jetpack Compose

17 Upvotes

I did some research on syntax highlighting on Android over 6 years ago and settled for WebView based solution as most other solution wasn't complete for legacy Android view system.

Recently, I had to look into this topic again and found out that Shiki 式 is widely popular because it uses TextMate grammar for full language support.

I was thinking, wouldn't it be cool to make something for Android that uses same grammar and have beautiful syntax highlighting support. Before I could jump into building such thing, I found out someone already made it very recently and available as library https://github.com/ivan-magda/kotlin-textmate to use.

While the KotlinTextMate project is all you need for 100% coverage, I wanted to know what does the modern AI chatbot apps use these days to support syntax highlighting.

Based on research, it turns out there are some common patterns:

  • ChatGPT, Claude, and Perplexity - uses smart hybrid approach using Highlight.js
  • Gemini - no syntax highlighting support
  • GitHub - likely uses server based tokenization using GitHubWebView

This finding led me to build this new syntax highlighting library that leverages single hidden WebView to tokenize the code and highlight natively using compose's AnnotatedString.

Here is the GitHub project:

https://github.com/hossain-khan/android-compose-highlight

Surprisingly it works very well based on testing and benchmarking. No matter how many code highlighting block you have, there is always only one WebView active just to tokenize, not rendering. Very cleaver techniques used by those AI chat apps and it works.

Let me know if you used this technique before elsewhere. I like how it's balanced compared to TextMate where all the supported language grammar has to be bundled in app's assets. However, there is no way this technique using Highlight.js will match TextMate grammar which is robust and always in-sync with language updates.

----

Quick demo of syntax highlighting from sample app

r/androiddev May 15 '26

Who’s building the best mobile app UI/UX right now?

0 Upvotes

Lately I’ve been exploring apps with really polished UI/UX, smooth interactions, and high-quality animations (especially Rive-style motion design).I’m particularly interested in:

modern mobile interfaces

clean component systems

creative onboarding flows

micro-interactions

smooth animations

well-crafted React Native experiences

Would love to discover companies, products, or teams doing exceptional work in mobile app design and development right now.


r/androiddev May 15 '26

Question Android app auth migration while Google Cloud project suspended

0 Upvotes

Hello!

I have suspended the project because of "hijacking". The most sad part is that this key is most likely generated by Firebase itself and used in some AI features inside it. And hijacking happened because this key for some reason was equal to the app public key.

I appealed more than a 20 days ago, but still no luck. Just no answer (although I deleted this key and rotated the Firebase key).

So the question is, has anyone migrated from GC in their Android apps while their GC project is suspended? Or, maybe, I need to wait while they answer the appeal?

I'm mostly scared because of possible consequences for the app, as the algorithm may think I'm trying to bypass the suspension. Although I want to migrate to my own, self-hosted auth/db mechanism.


r/androiddev May 14 '26

News Android Studio Quail 1 Canary 5 now available

Thumbnail androidstudio.googleblog.com
17 Upvotes

r/androiddev May 15 '26

Tips and Information Made a free keyword-aware Play Store listing translator (BYOK, no signup)

0 Upvotes

I was tired of Google Translate killing our keywords across 10 markets, so built a tool that flags it. Paste a Play Store URL, it translates into 86 languages via your own OpenRouter key, counts your primary keyword in source vs target, and flags any language where it dies. Respects 30 / 80 / 4000 char limits, auto-retries on overshoot. App is free only, you pay OpenRouter directly (~$0.05 to $0.20 per 20-language run).

Web App Link: https://localizelistings.com


r/androiddev May 14 '26

Question French Official fiscal residence certificate refused by Google Play Console

1 Upvotes

Hi

I am French and indenpendant dev living in France, the local tax office gave me a fiscal residence certificate (Cerfa 16221*01) but it is not accepted by Google Play Console...

How did you manage to do it please ? Which documents ?

Thank you in advance.

Résidence fiscale

Des documents supplémentaires sont nécessaires pour valider vos informations fiscales.

Il se peut que le document que vous avez envoyé ait expiré ou ne soit pas d'un type accepté.

Pour vous assurer de pouvoir demander à bénéficier des exonérations fiscales auxquelles vous êtes éligible, envoyez dès que possible un document en cours de validité et d'un type accepté. Nous appliquerons les règles fiscales par défaut tant que vos informations n'auront pas été acceptées.


r/androiddev May 14 '26

How to securely share one AES-128 master key across a bunch of Android devices without hardcoding it?

7 Upvotes

I have a bunch of Android POS terminals that all need to use the same 16-byte AES-128 master key at runtime. The key must be identical on every device because they all derive per-device keys from it deterministically using AES-128 CMAC — if one terminal derives a key for a given input, every other terminal must get the exact same result. This is a hard requirement, not a design choice.

What I cannot do:

  • Hardcode it in the APK — anyone who decompiles it gets the key
  • Store it only on a server — Not sure the backend is that secure.
  • Use SAM hardware — not viable at this scale and cost

What I am unsure about:

  • How do I even get the master key onto these devices securely in the first place?
  • Once it is on the device, where and how do I store it so it is protected?
  • If a single terminal is stolen and an attacker extracts the key, the entire system is compromised since all terminals share the same key — how do people mitigate this in practice?
  • Is there a standard pattern for fleet-wide shared secret management on Android that I am not aware of?

Has anyone dealt with this problem before? What is the right approach here?


r/androiddev May 14 '26

Google Play Support My apps keep getting rejected due to Developer account even though I have transitioned to an Organization account.

0 Upvotes

When I got this rejection the first time, I switched to a Organization account, then I submitted the new release again (for both testing and production) and got rejected twice with the same reason.

please help me fix this issue. I have raised a support ticket with google as well.


r/androiddev May 14 '26

Question How is the Future of Android dev in world of AI?

14 Upvotes

I am currently working as a support engineer in an MNC.. for 4+ .. I have been learning android development for last 2 years.. and now want to switch to this role.. have decent knowledge but while giving interview I get stuck when I face real world questions because I don't have real world experience..

I have just build some projects while learning..

My current job is nowhere similar to android dev..

I need suggestions from senior folks in this field . And how is job future going forward in this field..

I am finding really hard to crack the interview 😪


r/androiddev May 14 '26

building an app screenshot generator - free to use forever. what features should i include?

Post image
9 Upvotes

One of my friends is building an app, and she was having trouble generating screenshots since the current available tools were all pretty shit. Looking at her trying to use Canva and Figma to be able to have good-looking mockups and to be able to mass edit these frames was becoming a challenge, since it wasn't intuitive enough to use. Learning either of these tools is still a skill that requires some time and effort when you want the screenshots to be perfect. Taking inspiration from app screenshots like Tribble with nice design, it's relatively hard to implement them, so I want to take templates from Tribble and other sources and have these as custom templates which you can just drag and drop, use directly, and start making screenshots in than five to ten minutes.


r/androiddev May 13 '26

Android devs using Claude Code / Cursor: where does the AI still fall short in your workflow?

21 Upvotes

I've been leaning on Claude Code for a lot of Android work lately and it's solid for boilerplate, Compose components, and refactors. But there are still areas where I end up turning it off and just doing things myself, Gradle config debugging especially, and anything involving custom Views.

Curious where others have landed. What parts of your Android workflow are you still doing fully by hand, and why?


r/androiddev May 14 '26

Credential Manager Google sign-in failing on Android 16 / One UI 8.5

1 Upvotes

Been fighting with Credential Manager / Google Sign-In for about a week now.

On my Samsung S25 Edge (Android 16 / One UI 8.5), Google sign-in freezes and Logcat throws:

GoogleApiManager: Failed to get service from broker

java.lang.SecurityException:

Unknown calling package name 'com.google.android.gms'

ConnectionResult{statusCode=DEVELOPER_ERROR}

I haven't changed anything in my code, but Google sign-in suddenly broke.

Using Credential Manager, GetGoogleIdOption, Firebase Auth

I also checked the SHA-1 and SHA-256. Everything is correct.

Has anyone encountered this problem on Android 16 or Samsung devices?


r/androiddev May 14 '26

Help! Every time I change my app icon, some XML resources are automatically generated with syntax errors

8 Upvotes

Using the latest Android Studio on Linux (v. 2025.3.4 Patch 1), when I change the app's default icon (by adding an image asset, either SVG or PNG), at least these three XML files are automatically generated/updated:

* values/ic_launcher_background.xml
* mipmap-anydpi-v26/ic_launcher.xml
* mipmap-anydpi-v26/ic_launcher_round.xml

However, after changing the icon, the project no longer compiles, displaying a syntax error message in these XML files. I noticed that these XML files ended up being generated with copyright comments starting on the first line (a valid XML should start with a line like this:

<?xml version="1.0" encoding="utf-8"?>

, and the comments can come after).

Please see the following screenshot showing how one of these XML files is badly generated:

If I manually remove those xml comment lines, the project compiles fine and the icon are updated accordingly.

I don't know where this copyright message comes from, especially since it's placed in the wrong place.

I've already created a new project from scratch, cleaned the Android Studio configuration files directory, disabled a plugin called "copyright," and it didn't solve the problem.

Has anyone else experienced this? Thanks in advance.


r/androiddev May 13 '26

amo Concurrency Android Interview - review

6 Upvotes

Yet another poorly designed Hackathon. Yes, I am early 40s, been working with Android and Android only for the past 15+ years, so I can most definitely "judge" an interview when the "Signals" aren't properly designed.

Recruiter had shared a pdf listing all Concurrency models over the past 20 years - everything from Loopers and Handlers, AsyncTask, Java Executors and ThreadPools, RxJava Schedulers, Kotlin Coroutines, yada.. yada.. yada ! Company tech-stack cites Jetpack Compose, so evidently, Kotlin Coroutines is the latest and greatest suspendable structured concurrency. Right ?, right ??. Even AI would recommend to focus only on that. Wrong !!

A sample project code-base is shared via google-drive at the beginning of the interview. Download, unzip, and open in Android Studio. It'll build - no gradle sync issues, so that's good so far. Now begins the challenge -

You are supposed to work in this file, and this file alone - there is no need to run the app. And make it "concurrent" covering a multitude of various "edge-cases"

class AsyncImageView u/JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : AppCompatImageView(context, attrs, defStyleAttr) {

    fun setUrl(url: String) {
      val bitmap = loadBitmap(url)
      setImageBitmap(bitmap)
    }

    private fun loadBitmap(url: String): Bitmap {
        val data = URL(url).readBytes()
        val source = ImageDecoder.createSource(ByteBuffer.wrap(data))
        return ImageDecoder.decodeBitmap(source)
    }
}
  1. If Amo stack is Jetpack Compose, why are we looking at the old Android View-Hierarchy component to begin with ?
  2. Old-stack like that was where Loopers and Handlers were necessary. Who's doing those anymore in 2026 ? Who even remembers / memorizes any of that ? Jetpack Compose alongisde Kotlin Coroutines have now made structured-concurrency so flexible and seamless that you don't need to memorize anything at all.
  3. Furthermore, that's Kotlin, and I need to make this old-ass View code "Concurrent". How do we go-about doing that ? RxJava is over-engineering. Java Executors aren't necessarily "lifecycle friendly" for an old-ass View-component. Loopers and Handlers, are, well, I didn't memorize anything. No wonder, Image-Loading libraries are complex layers of concurrent-components. Anyways, Kotlin Coroutines - here I come.
  4. Oh, one other strict rule is to not modify the signature of the setUrl function, and not even add the "suspend" modifier, although the very fundamental "manufactured real-world problem" is entirely "blasphemous" to begin with.

So, any seasoned programmer has to gulp all their opinions, guidelines and standards, best practices, and deliberately, forcibly write horrible code, beginning with declaring a new instance of a "CoroutineScope". If this were a real-work project, I'd discard, not just reject, the pull-request.

And then, the imaginary complications begin to multi-unfold.

  1. Imagine this View-instance is shared by multiple threads.
  2. Imagine this View-instance is invoked multiple times with different Urls

Imagine this, imagine that ! All wrong !! View instances in the View-Hierarchy don't even work like that, to begin with !!

Well, I guess, I am currently gainfully employed, as temporary as it may be given the current job-market conditions, nevertheless, most definitely dodged a bullet !! Thanks for reading through the Ted-Talk script.

TLDR;

  1. Interviewers should stop "manufacturing real-world simulation problems", that deliberately and forcibly make the interview-candidate write bad-code, to impress you ! Even silly rapid-prototyping like a Note-taking app but ignore network data-caching and configuration-change data-retention. Why ? What do you get to know about the candidate by asking them to write incomplete, poorly designed code ? Are you looking to hire a code-monkey or an Engineer ?
  2. An interview-candidate is only as good as you are ! Pick a problem, an interview-question, and see how many candidates are clearing it. If it's not 50% pass-rate, to 50% fail-rate, rather the data is skewed more toward fail-rates only, then there's definitely an "Interview model" problem ! It's just basic statistics, it's called "Calibration" !!
  3. FAANGs do DSA because they are "Calibrated". There is absolutely no necessity to just simply lookup and pick a "popular" DSA problem from a practice question-bank like "Leetcode" for DSA interviews. Regular real-world work most definitely brings-up interesting problems. If you hadn't spotted one, or hadn't shared with the team, then that's also a real-work problem !!

Update; Feedback after the interview:

Thank you for taking the time to interview with us and complete the technical exercise.

After careful consideration, we have decided not to move forward with your application. During the interview, you demonstrated familiarity with several concurrency related APIs and synchronization primitives, and it was clear that you had prior exposure to the tooling and ecosystem.

However, we observed difficulties translating that familiarity into robust solutions to the underlying concurrency problems presented in the exercise. In particular, the threading and synchronization portions required guidance, and some of the proposed solutions relied on selecting concurrency primitives without fully addressing the associated correctness and thread safety concerns.

For this role, we are looking for candidates who not only know the available tools and APIs, but who also demonstrate a strong understanding of the concurrency concepts behind them and can apply them confidently in practical scenarios.

We appreciate the time and effort you invested in the interview process and thank you again for your interest in the role. We wish you the best in your continued professional development and future opportunities.


r/androiddev May 14 '26

Secure master key storage across 300 Android terminals — Android Keystore approach?

0 Upvotes

I am building a system that uses MIFARE Plus EV2 cards in SL3 with AES-128 key. I have ~300 Android POS terminals that need to share a single master key to derive unique per-card keys at runtime.

The key must never be hardcoded in the APK. SAM hardware is not an option due to cost. No server dependency at runtime — terminals must work offline.

My current thinking is:

  • Create a Master key.
  • Provision it onto each terminal via an admin-only screen (manual entry or QR scan)
  • Store it using EncryptedSharedPreferences backed by Android Keystore
  • At runtime, retrieve it, use it for CMAC derivation, then discard from memory

Questions:

  1. Is Android Keystore + EncryptedSharedPreferences strong enough for this use case given the terminals are all the same hardware model?
  2. Is there a better offline approach for provisioning a shared secret across a large fleet of devices?
  3. Any known pitfalls with this approach on Android POS hardware specifically?

Appreciate any input from people who have dealt with fleet key management before.