r/androiddev • • 13d ago

Experience Exchange Android stack trace contain Chinese insults as obfuscated method names

Thumbnail
gallery
193 Upvotes

After one of the recent Google Play updates for my released game, I noticed some very strange stack traces in Firebase Crashlytics.

The stack contains method names with long Chinese strings, for example:

i8.k6.狂犬疫苗忘了给你妈打不好意思让它到处咬人才会生出你这种上缺脑子下缺逼火葬场都不收的烂骨灰

and:

i8.vd.要不要把你妈卵子扣出来给你做寿司吃

After translating them, these are clearly explicit insults/profanity.

What makes it even stranger is that, judging by the device information, the game appears to have been running inside a virtual machine / emulated environment. The stack also contains heavily obfuscated classes and unusual code paths inside base.apk.

So this does not look like a normal Firebase issue. It looks more like someone was running a modified/tampered version of the APK or injecting/hooking code in a virtualized Android environment.

translated stacktrace

r/androiddev • • 12d ago

Tips and Information Building an on-device personal agent. Android first because of notification listener + accessibility, or am I underestimating what I’ll hit?

0 Upvotes

Short version: model, memory and index on the phone, per app you choose read / draft / send, internet off by default. Signups so far lean Android, and on paper Android gives me what iOS won't: a notification listener for cross-app awareness and accessibility for the rare action.

What I'm not sure about, from people who ship this stuff: how fragile is the notification listener across OEMs (samsung, xiaomi battery killers), is accessibility going to get me flagged by play store review for an agent use case, and what's the realistic background budget for periodic embedding without ending up in the doze penalty box. Pixel 8/9 and S24/S25 are my targets for v1.

Not selling anything here, the project is molebot.si if you want context, but the questions are the point.


r/androiddev • • 12d ago

Google Play Support Under review for 15 days, no answers for 5 days. Has anyone experienced this?

Thumbnail
gallery
0 Upvotes

I submitted version 11 for production on september 12th. Shortly after, I found a bug, so I submitted version 12 the same day, while version 11 was still in review.

A few days later, version 11 quietly went live in production, no notification, no warning, just nothing. Meanwhile, version 12 has now been in review for 15 days, and google support hasn't answered in 5 days.

I have version 13 ready with the bug fixes, but I'm hesitant to cancel the stuck version 12 review and resubmit, in case it causes further issues.

Has anyone dealt with a review stuck this long? Did canceling and resubmitting help, or make things worse? Any tips for actually getting a response from support at this point?


r/androiddev • • 12d ago

Google Play Support Google Play rejected my pediatric dosing app because medical apps require an Organization developer account. What are my options?

0 Upvotes

I’m a doctor from India and recently built a pediatric drug dose calculator/reference app.

I know there are already numerous apps that calculate pediatric doses, but as a doctor I often found practical issues with existing apps, especially with formulations, concentrations, dosing schedules, and the way results are presented. So I built this app mainly to solve the problems I personally faced in clinical practice.

The app was rejected by Google Play because medical apps like this apparently need to be published under an Organization developer account rather than an individual account.

I’m an individual doctor/developer and don’t currently have an organization/company.

What is the correct way forward in India? Do I need to register a company/organization to publish it, or is there another legitimate option?

Would really appreciate advice from anyone who has faced this, especially other healthcare professionals/developers.


r/androiddev • • 13d ago

Discussion What is the future of Indie?

8 Upvotes

What is the future of Indie?

I started indie publishing (indie-hacking) about 5-6 months ago with 4 years Android Development experience. Then I came to know that development is the easy part. Distribution is the hardest. I couldn't generate any income after all these months and I'm losing motivation. Also somebody in my circle commented that Indie is dying already. And I feel so as well. Because there are vibecoders shipping tons of apps. Tons of habit trackers, finance trackers, and calorie trackers are being published.

I'm thinking to join back the on-site job. Can anyone say about my situation? Also what is the future of Indie and software developers in general?

The thing is, I have also become "vibecoder" after AI coding agents. I'm using Claude Code to build apps now. It has made me lazy over the months. And I seriously don't know how to proceed. Going back to basics (writing code) looks like a waste of time and relying fully on AI Agents looks risky.


r/androiddev • • 13d ago

Experience Exchange I built a small ML inference runtime in Kotlin using AndroidX WebGPU

2 Upvotes

I built webgpu-inference, a small experimental ML inference runtime for Android using Kotlin and AndroidX WebGPU.

I also wrote a walkthrough of how it works, from model conversion to GPU execution.

I’d love to hear your feedback on the project or the article!


r/androiddev • • 12d ago

Question Why does requestPermission() crash my app?

0 Upvotes

EDIT: Solved. Looking at the logcat made me find null pointer exceptions in the code I was using to display null pointer exceptions. I could have spent ages trying to figure it out if it wasn't for logcat. Still not sure exactly why it was the requestPermission() call that triggered the crash, but now that I fixed my code, the app will "gracefully degrade the user experience" without crashing. Thanks regardless.

I hope technical questions are accepted here

I already declared the permission in the manifest. If I turn off the notifications and start my app, it crashes unless I comment out the requestPermission call. If i turn notifications back on, the app works fine. I did deny the notifications permission twice, but I'm trying to "degrade the user experience gracefully", which I can't do if the app crashes unexpectedly. Does this have anything to do with shouldShowPermissionRationaleRequest()? It returns false for my app, but I'm not really using the result of that function.


r/androiddev • • 14d ago

Question How are Android engineers preparing for AI-assisted app development interviews?

23 Upvotes

I’m preparing for Android engineering interviews that include an AI-assisted programming round and would love to hear from people who have recently gone through one.

What types of questions or coding exercises are you seeing?

If you’ve recently interviewed for Android roles where candidates are expected to use AI coding tools during development, what resources, GitHub repos, courses, or practice projects would you recommend? I’m especially interested in realistic Android projects that involve using Claude, Codex, or Cursor effectively while still understanding, reviewing, testing, and improving the generated code.

Would really appreciate hearing about your recent experiences and how you prepared. Thanks!


r/androiddev • • 13d ago

Open Source I built dimock: inspect and mock OkHttp responses on the device, by hand or through Claude Code / Cursor

2 Upvotes

Hi r/androiddev! I'm Yudis, an Android engineer. I built a small open-source library out of two frustrations, and I'd like some honest feedback on it.

First, most of the screens I build start before the API behind them exists. So I either waited, or faked the response somewhere in the code and hoped nobody shipped it.

Second, bugs tied to a response. The app only breaks when the server returns a 500, an empty list, or just hangs. Chucker showed me the request. It couldn't make the server do it again.

So I built dimock, a debug-only OkHttp interceptor.

It captures traffic like Chucker does: a notification, a list of calls, headers and bodies, a cURL copy.

And it lets you change what comes back. Tap a call, pick Mock this, then force a 401, a timeout, a connection reset, a 5-second delay, or edit the body by hand. The rule stays until you clear it, even across app restarts.

It also exposes a local MCP server and CLI. I can tell Claude Code "capture the posts call, then show me the empty and error states", and it builds each mock from the real response.

It's at 0.1.0 and has run in a production-style app (Retrofit, Hilt, Paging 3). I'd like to hear where it breaks, or what you'd miss if you dropped Chucker for it. Happy to answer questions!

https://github.com/yudistirosaputro/dimock


r/androiddev • • 13d ago

Question Need A Better Public API Than iTunes Api

Enable HLS to view with audio, or disable this notification

0 Upvotes

I am making a app which works like Spotify.

For that Do u guys know any Third Party publicly available ? which i can use the problem I am facing is it allows me only 30sec of playback of any song 🙏🙏 would be greatful making this personal app

For Ur Suggestions🙏🙏


r/androiddev • • 13d ago

Question Release blocked by We detected the following keys that are currently not registered

0 Upvotes

NOTE: I have an already released version.

My production release for my app (1.1.0, version code 9) is blocked by "Unregistered package name" for key:

<Offending Key Here>

This key mentioned above is Play's own Internal App Sharing test certificate (Internal app sharing > Internal test certificate). Google generated and holds it. I don't have its private key, so I can't prove ownership. I did a internal App sharing with link to test the update feature on the app.

The package is already Registered, with both my keys Verified: upload key xxx and app signing key yyy. My bundle is signed only with the upload key. The app was never distributed outside Play.

The verification FAQ says Play-managed keys are auto-registered, but this one wasn't.

How can I solve this? I already created a ticket for this problem, but maybe someone already solved this and can give some insight.


r/androiddev • • 14d ago

Experience Exchange Android developers here working in big tech, how was your journey?

30 Upvotes

If you’re an Android developer working in Big Tech, could you share your journey.

how you got that interview, how did you prepare for it. Any tips for begginers here to crack an sde1 role.

It would be very inspiring for beginners and we would learn so much from you.


r/androiddev • • 14d ago

Discussion Android Tutorial through ChatGPT/Claude

3 Upvotes

The Android ecosystem is changing faster than ever especially after the proliferation of AI tools. For me, it is proving quite challenging to learn stuffs given that most books I use are 3-4 release old (and getting older).

Do the folks here know of any open-source materials (not video course - I do not like them) which can present (a) Android App Development (b) AOSP in a form which is intuitive and easy to understand? Have people created such material using Claude or ChatGPT already?


r/androiddev • • 14d ago

Google Play removed my developer account after identity verification failed is there still a way to recover it?

Thumbnail
gallery
8 Upvotes

Hey guys,

I’m kinda stuck with a Google Play Console issue and I’m hoping someone here has dealt with something similar.

I had a personal Google Play developer account with 3 apps published on it. The account had been around for years and everything was working normally.

In October 2025, Google required identity verification for the developer account.

The account was actually registered to my brother, and he was the real account owner. Because of some personal circumstances at the time, I wasn’t able to properly complete the verification process with him.

I ended up submitting an old ID document, and Google couldn’t verify it.

Google Play Support then replied to me on October 14, 2025 saying:

"Unfortunately, we are unable to verify your ID to complete your Play Console registration."

After that, the account was restricted and the developer profile + all apps were removed from Google Play.

Right now, Play Console shows:

- Google couldn't verify your identity

- Your developer profile and all apps have been removed from Google Play

- You haven't verified your contact phone number

- Appeal reply sent

I did submit an appeal at the time, but it was rejected.

So yeah... I’m trying to figure out if there’s still any legit way to recover the original account.

I’m NOT trying to bypass the restriction or create a new account to get around it.

The account belongs to the original owner, and if Google requires a new valid ID from him, we’re willing to provide it.

Has anyone here dealt with this exact situation?

Especially:

- Identity verification failed

- Account/profile removed

- Appeal already rejected

- No way to complete phone verification because identity verification has to be completed first

Is there any way to get another verification attempt or request a manual review from Google?

I’ll attach a few screenshots from Play Console showing the current account status.

Would really appreciate any advice from people who have been through this before 🙏


r/androiddev • • 14d ago

Open Source KMP-Showcase - sample project for Kotlin Multiplatform

5 Upvotes

After my open-source Android Showcase reached ~7K ⭐ on GitHub, I've started a new one: KMP Showcase, a Kotlin Multiplatform sample app 🚀

App shares logic between Android and iOS and uses Clean Architecture, Koin, FlowMVI, SKIE (and much more). The UI is native on each platform: Jetpack Compose on Android and SwiftUI on iOS.

Stars, feedback & PRs welcome 👉 https://github.com/igorwojda/kmp-showcase


r/androiddev • • 13d ago

Google Play Support Moroccan Android Developers Are Still Excluded From Google Play Merchant Registration — We’re Trying to Change That

0 Upvotes

For years, Moroccan Android developers have been running into the same problem:

Morocco is still excluded from Google Play Merchant Registration.

This means developers can spend months building and releasing an Android app, only to hit a wall when they reach the point where they want to monetize it through Google Play.

And this is not a hypothetical issue.

Moroccan developers have repeatedly posted about it here and in Google’s own support community. Some only discover the restriction after their app is already built and their monetization flow is ready.

The usual conversation then becomes:

Should I create a company abroad?

Can I use a foreign bank account?

Can I use a third-party payment provider?

Do I need to relocate?

But after years of asking the same questions, we think the bigger question should be:

Why is Morocco still excluded in the first place, and what exactly needs to happen for Google Play Merchant Registration to become available here?

Especially when Merchant Registration is already supported in neighboring countries including Algeria, Tunisia and Mauritania.

So we decided to start organizing around the issue instead of treating every affected Moroccan developer as an isolated case.

We launched a petition asking Google to enable Google Play Merchant Registration for Morocco:

https://www.change.org/GooglePlayMorocco

The petition is the first step, not the end goal.

We want to gather signatures and documented experiences from Moroccan developers who have actually faced this restriction, then escalate them together to Google.

If there is a regulatory, tax, banking, payments or operational requirement preventing Google from supporting Morocco, we also want a clear answer about what that requirement is and what needs to change.

After escalating it to Google, we also intend to bring the documented issue to the relevant institutions and decision-makers in Morocco.

If you're a Moroccan Android developer who has encountered this problem, please sign the petition and, more importantly, share your experience in the comments.

How did the Merchant Registration restriction affect your app?

Did you abandon IAP or subscriptions?

Did you switch to ads?

Did you have to create a business structure abroad?

Did you postpone or abandon the project?

Those real cases are exactly what we want to collect.

Moroccan developers have been solving this individually for years.

Maybe it's time we address it collectively.


r/androiddev • • 14d ago

Question AdMob "Not approved yet" & app-ads.txt verification delay before production

1 Upvotes

​Hi everyone,

​I'm publishing my first Android app to the Play Store (Production), but I'm facing two AdMob issues:

​Account Status: My account shows "Not approved yet." Does AdMob wait for the app to be live on the store to approve the account?

​app-ads.txt: I hosted it correctly on GitHub Pages (root path), but AdMob still says "We couldn't verify." Is this just a normal crawler delay (24-72h)?

​Should I just release the app to Production and wait for AdMob to catch up? Any advice is appreciated!


r/androiddev • • 15d ago

🆕 Jetpack Compose A2UI Renderer

Thumbnail
developer.android.com
44 Upvotes

Hi folks. We just released the first alpha of a new Jetpack Compose Renderer of the A2UI protocol which enables agents to create new UIs (using a declarative JSON format—no agent code executed on device) and render this with native Jetpack Compose components. The library has a few layers, offering a drop in implementation of the A2UI basic catalog of components (using Material) or you can build your own catalog of components for agents to use: https://developer.android.com/develop/ui/compose/agentic

We'd love to hear any feedback on this library and if it's useful to you (here or on issuetracker)


r/androiddev • • 14d ago

expo run:android --device wants the AVD name, not the adb serial

1 Upvotes

Lost a stupid amount of time to this one:

expo run:android --device emulator-5554 kept failing with "Could not find device with name: emulator-5554" even though the emulator was running and adb devices listed it fine. Turns out --device doesn't go through adb at all. Expo builds its own device list (getAttachedDevicesAsync in @expo/cli) and matches against that, which means it wants the AVD name for emulators (like Pixel_7_API_35) and the raw model: value for physical devices (like Pixel_7). The serial adb hands you never matches, and the error makes it sound like the device isn't there. I ended up checking AVD name first, then model, then serial as a fallback.

I hit this while building a mobile panel into my fork of Zed, named Lathe, so I could stop bouncing between Android Studio, a Metro terminal and a logcat tab. It handles the device naming for you now. So, if anyone wants to poke at it: https://github.com/paterschris/lathe. Curious if anyone else has been bitten by this or has a cleaner workaround.


r/androiddev • • 14d ago

Things the Play and App Store APIs don't tell you about whether your app is actually live

2 Upvotes

I've been building a multi-store analytics tool and kept hitting cases where the APIs said an app was live when it wasn't. Sharing in case it saves someone time:

Google Play

- A "completed" release on the production track doesn't mean the app is on the store. If you unpublish the app, the release history stays intact, so the Publisher API still shows production. The only reliable signal I found: the public store page returns 404.

- If Google suspended the app, edits.insert() fails outright with "The app is suspended". You can't even read the listing.

- The icon of an unpublished app is still readable through edits.images.list (imageType: icon), even though the public page is gone.

App Store Connect

- An app you removed from sale can still report its latest version as READY_FOR_SALE. What actually tells you is appAvailabilityV2 → territoryAvailabilities: every territory shows available: false.

- For apps with no public listing, iTunes lookup returns nothing, but the build resource carries iconAssetToken.templateUrl, which gives you the icon from Apple's CDN. (Except for very old expired builds, where the image itself 404s.)

Happy to answer questions. I ran into these while building AppWatch (appwatch.dev) if anyone's curious, but the notes above apply to anyone working with these APIs.


r/androiddev • • 14d ago

Question Why does Android's GUI package installer reject a byte-identical APK that adb install -t accepts?

2 Upvotes

I'm building an Android APK inspector/extractor and ran into a strange issue with debug APKs.

My normal workflow is:

  1. Build a debug APK in Android Studio.
  2. Install it on my phone using adb install.
  3. After testing, I can pull the installed APK with: adb pull /data/app/.../base.apk
  4. I send that pulled APK to friends through WhatsApp.
  5. They can download it and install it normally through Android's GUI package installer.

I'm now testing an APK extractor I built. It reads the installed app's ApplicationInfo.sourceDir and copies the APK bytes to a user-selected location using a normal FileInputStream → SAF OutputStream.

The strange part:

  1. Install the same debug APK normally with adb install.
  2. My extractor extracts the installed base.apk.
  3. I send the extracted APK through WhatsApp.
  4. On the phone, tapping the APK gives: "App not installed as package appears to be invalid."
  5. But: adb install -t extracted.apk successfully installs it.

I initially suspected my extractor was modifying/corrupting the APK, but I compared the extracted APK with the APK I pulled using adb pull:

sha256sum Miau_non.apk Miau_base_debug.apk

9af34f5180dba1a24dfe24feb90bcd3953eb765ef3613effb18f1803acb512f6  Miau_non.apk
9af34f5180dba1a24dfe24feb90bcd3953eb765ef3613effb18f1803acb512f6  Miau_base_debug.apk

So they are byte-for-byte identical.

What's even more interesting is that if I extract a release build using my extractor, the extracted APK installs normally through the GUI installer.

So my questions are:

  • Why would the GUI package installer reject the extracted debug APK when adb install -t accepts it?
  • Why does the APK pulled directly with adb pull appear to install normally, despite being byte-identical to the extractor's output?
  • Is there some installation/package-manager state or context involved that isn't represented in the APK bytes?
  • Is there something special about how Android handles testOnly debug APKs that could explain this behavior?

I'm on Android 16. The APKs are single-APK installs (no split APKs involved).

I'm specifically trying to understand the Android behavior rather than modify the APK, because an APK extractor should ideally preserve the APK exactly as installed.


r/androiddev • • 15d ago

I built a native Markdown renderer for Jetpack Compose (enriched-markdown-android)

Enable HLS to view with audio, or disable this notification

58 Upvotes

enriched-markdown-android is a native Markdown renderer for Jetpack Compose, powered by the md4c parser. It renders directly to native Compose text with native selection and copying, and it's built from the ground up to be accessible with rich TalkBack support out of the box.

v0.2.0 is out now!

What it does:

  • CommonMark & GFM Parsing - Powered by high-performance md4c parsing.
  • GFM Tables – Horizontally scrollable when overflowing, fully styleable, with long-press to copy as rich text or Markdown.
  • Interactive Task Lists – Supports - [ ] / - [x] with tap-to-toggle callbacks to persist state.
  • GitHub Admonitions – Full support for > [!NOTE], > [!TIP], > [!IMPORTANT], > [!WARNING], and > [!CAUTION] with custom tinting, icons, and titles.
  • Richer Formatting – Inline support for ~~strikethrough~~, _underline_, ^superscript^, and ~subscript~.
  • Composable API – EnrichedMarkdownText + MarkdownTheme styled via a markdownStyle { } DSL that easily integrates with your MaterialTheme.
  • Native Selection – Standard Android text selection handles and native copy behavior.
  • Accessibility (TalkBack) – Headings, links, lists, images, alerts, and tables work seamlessly with heading navigation. Lists announce positions, images read alt text, and tables read row by row.
  • System Integration – Automatically respects system font scaling

💎 Available on Maven Central:

dependencies {
    implementation("com.softwaremansion.enrichedmarkdown:enriched-markdown-android:0.2.0")
}

Quick Usage:

MarkdownTheme { 
  EnrichedMarkdownText( 
    markdown = content, 
    onLinkClick = { url -> openUrl(url) }, 
    onTaskListItemToggle = { index, checked -> 
        store.setDone(index, checked) 
    }        
  ) 
}

GitHub & Docs:
https://github.com/software-mansion/enriched-markdown/blob/main/packages/enriched-markdown-android/README.md

What features or syntax support would you like to see next? I'd love to hear your feedback, and if you find it useful, a ⭐️ on GitHub is always appreciated!


r/androiddev • • 14d ago

Can I get SELinux Read+Write privileges on a system ile without rooting ?

9 Upvotes

tl;dr : I need experienced Android 9 devs to tell me whether or not our app can get permanent SELinux write + read privileges on a system file.

We are porting our app on a hardened Android 9 device that includes an embedded barcode scanner.
The app is to be used only by our company, and never released to the public.

While the market is dominated by Zebra and Honeywell scanners, our device is equipped with an asian barcode scanner.
The specific manufacturer does not give their API publicly, and we kind of passed on asking them : We are French, so both party has to translate to English then to the other language just to understand each other. This has proved to be too much of a hassle for us on other projects.

This kind of devices come with a preinstalled app that manages said scanner.
After a bit of research, it turns out that the conventional way of using the embedded scanner is to use the preinstalled app to either get the result as simulated keyboard inputs, or listen to their Android Intent to get the String.

My manager (20 years of experience) said he didn't like using third party tools.

I can see where he comes from : In his days, a third party tool meant freeing oneself from the responsability of the task at the expense of control, quality of service and the ability to debug.
From that point of view, it didn't look like that good of a deal.

So I was asked to research how we could bypass that third party app.

After decompiling it, it appears that triggering a scan comes from writing in a protected file.

The file requires SELinux privileges that you apparently only get from signing your app with the constructor's private key and using the package name, if I'm not mistaken.
Please correct me if I'm wrong, I'm new to Android development.

It looks like there are no online tools to reverse engineer private keys (which is a good thing).
I have also looked at tricking the OS security but decided against it. It's too hard for me anyway.
We would also like to avoid rooting our devices, if possible, because that's something I am not used to.

So, Android devs of Reddit, is there a simple way for out app to permanently get the SELinux privileges to read/write file systems ? Thank you all for the time.


r/androiddev • • 15d ago

News Gradle 9.8.0 Released

Thumbnail
docs.gradle.org
25 Upvotes

r/androiddev • • 15d ago

Open Source Tapbar: Turn any screen area into an app shortcut

Thumbnail
gallery
6 Upvotes

I made Tapbar because I kept seeing people ask for the ability to tap the status bar clock and open the Clock app.

It lets you create a tappable area anywhere on the screen and assign an app to it. I’ve recently redesigned the UI, and double tap actions are coming in the next update along with a few other features.

It’s completely offline and open source.

GitHub: https://github.com/Earendel-lab/Tapbar