r/androiddev 13d ago

:shipaton: Shipaton [AMA] I'm Jaewoong Eum (skydoves). Ask me anything!

113 Upvotes

That’s a wrap for the AMA!

Thank you so much to everyone who joined and asked such thoughtful questions. There were way more than I expected, and honestly, I feel like I learned a lot from the conversations too.

There are still a few questions I didn’t get a chance to answer during the session, but I’ll try to come back and go through them one by one when I have some time.

Thanks again for all the great questions, kind words, and conversations today. I really enjoyed it.

And wherever you are in your journey, I genuinely hope the things you’re working on go well and take you somewhere meaningful.

Thanks everyone! 🙌

Hey everyone!

First, a huge thanks to the mods for organizing this AMA and for the teaser posts over the last couple of days.

I'm Jaewoong Eum, probably better known here as skydoves. I've been sharing open-source projects, articles, books, experiments, and whatever I've been learning along the way on r/androiddev for many years.

These days, I spend time working on open-source libraries(Compose Stability Analyzer, Balloon, Landscapist, Compose Nav Graph, etc), writing some books, and building developer plugins (Compose Hot Reload for Android). I also work at RevenueCat, so I'm happy to talk about monetization, subscriptions, or Shipaton 2026 as well.

But this is an AMA, so it definitely doesn't have to be limited to technical questions.

Feel free to ask me anything about:

  • Open-source and maintaining libraries
  • Developer tools and some of the plugins I've been building
  • Career, community, writing, or developer relations
  • RevenueCat or Shipaton
  • Or honestly, anything you're curious about

You can start leaving questions now, and I'll begin answering at the scheduled AMA time and stick around for the session.

Really looking forward to chatting with everyone. Ask me anything! 🙌

AMA time: Wednesday, 19 August, 11:00–13:00 UTC. That’s 13:00–15:00 Berlin, 12:00–14:00 London, 07:00–09:00 New York, 04:00–06:00 San Francisco, 16:30–18:30 Delhi, 20:00–22:00 Seoul, and 21:00–23:00 Sydney, or here it is in your own timezone.


r/androiddev 28d ago

:shipaton: Shipaton Shipaton Megathread #1: What are you building?

11 Upvotes

Shipaton 2026 - Megathread #1: Ideas, Progress & Peer Feedback

Shipaton is officially underway and will run through September 30.

This pinned megathread is the central spot to share your concept, test out early ideas, and help each other along the way. Building solo can be tough, so keep coming back to this thread throughout the month to post updates, collaborate, ask questions, and exchange opinions on UI, architecture, or monetization strategies.

Registration & Ship Kit

Registration remains open throughout the entire event (August 1 - September 30). You can start building before registering as long as your app is published for the first time within the event window.

If you want to use the sponsor perks, discounts, and credits in the Ship Kit, it's worth registering early. Several perks unlock immediately upon sign-up, with more unlocking as you hit build milestones.

Joining the Conversation

Whether you are competing, building casually, or just lurking:

  • Haven't registered yet? You can jump in at any time or just follow along.
  • Not competing or missed early prep? You're still completely welcome to join the discussion, give feedback to fellow devs, or share what you're working on.

To introduce your project, drop a comment using this structure:

  • Concept: (Short summary of the app and who it's for)
  • Payment Model: (Freemium, subscription tiers, hard paywall, one-time purchase, etc.)
  • August Goal: (What do you plan to complete by the end of the month?)
  • Where you need help or feedback: (UI/UX, paywall strategy, feature scope, stack choices, etc.)

Quick Reminders for r/androiddev

  • Native & KMP focus: On this subreddit, project updates and technical discussions should focus on native Android or Kotlin Multiplatform.
  • Give and get feedback: If you share your project, take a few minutes to look through other comments. Answer questions, offer constructive critiques, or help someone refine their idea.

Drop a comment below, jump in on other projects, and let's build great Android (and iOS) apps!


r/androiddev 7h ago

Question how to become a good software engineer? Android case at least.

16 Upvotes

i know you should know how to use framework/libraries apis, architectural patterns, system design, design patterns, solid principles. but how you become a true engineer like the ones who author frameworks and libraries and solve real engineering problems? is there something like software engineering concepts to learn or something?


r/androiddev 55m ago

Question Returning to JVM + Android after years in .NET, is Java the right starting point?

Upvotes

I’m a senior SWE finishing a BSCS and planning to publish a small Android project as a portfolio piece. My mobile development course still teaches Android development in Java only, and when I asked about using Kotlin because the language choice is ambiguous in the description, the reactions were mixed and leaned heavily toward Java.

Since I’ve been in .NET land for years, I want to sanity‑check my assumptions with those actively working with Android today. My understanding was that Kotlin has become the de facto choice for modern Android development, especially for new projects, and hiring requirements.

For someone returning to the JVM ecosystem and aiming to use a published course project as a portfolio piece that signals current industry alignment (make HR checkboxes happy despite .NET), is starting in Java still reasonable or is Kotlin the better choice?

My long‑term goal is to move toward JVM/GraalVM‑based mobile or embedded Android work alongside any JVM‑flavored backend (I’m guessing Spring Boot or Quarkas). I’d appreciate insight on where Kotlin and Java sits in the landscape today and in the near future from this sub’s perspective.


r/androiddev 6h ago

Question Android 17, keyboard close event not being registered by the app?

Enable HLS to view with audio, or disable this notification

7 Upvotes

Hello, I have encountered this issue while developing this markdown editor.

The issue is that when i type something in the editor and do some edits, and then try to close hide the keyboard with the gesture back button git hides only the keyboard, but the app it self doesnt recognize it. The toolbar is still there and the whole editor is still shifted up like there would be still keyboard visible.

On all other devices with Android lower then 17 it works well.

I have tried to solve this issue for a long time now, I though that it might be my code issue (which it still might be), or there is something handled differently in Android 17.

If you know what might cause this error, your advice would be very helpful!

(you can see the code here: https://github.com/jotalac/git-writer )


r/androiddev 8h ago

News Android Studio Quail 4 now available

Thumbnail androidstudio.googleblog.com
3 Upvotes

r/androiddev 2h ago

BIT.TRIP BEAT Android - Modernized up to Android 10!!!

1 Upvotes

I really miss playing BIT.TRIP BEAT. Gaijin Games stopped maintaining this after Gingerbread. I've been playing on an old Samsung Galaxy Captivate, but the experience is sub-par. What I've done is reverse engineer the old .apk made for Gingerbread into working on Android 10! It plays perfectly into the second level (That's as far as I can get right now)

I chose Android 10 because that's the highest version I have on a device. It plays great on my Galaxy S9+! I'd love to know if anyone successfully plays on newer versions of Android, please post the version and device if you do.

Known Issues:

  1. This WILL NOT run on pretty much any phone released after 2021! It contains C++ code compiled for 32-bit processors and Qualcomm stopped including 32-bit cores around 2021.
  2. The menu and completion screens are left aligned. This means to register a tap (especially on the "continue" between levels) you will have to tap a bit to the right and below it to activate it. The closer your phone is to a 16:9 aspect ratio, the more aligned your touches will be.
  3. During the game, the text at the top and bottom is misaligned, it doesn't affect gameplay, but you can't see everything at the top all the time.

These alignment issues are very difficult to fix, no guarantees it will ever be fixed.

Download Link: https://gitlab.com/nevarDeath/bittripbeat-fixed/-/blob/main/bittripbeat_android10_patched_v1.0.2.apk?ref_type=heads

Installation Instructions:

  1. Download apk here
  2. Launch on device. You will get a Google Play protect Warning.
  3. Tap "More Info"
  4. Tap "Install Anyway"
  5. Wait a few seconds
  6. A dialog will appear asking for storage permissions.
  7. Click "Continue" in the lower right hand corner.

VirusTotal Report: https://www.virustotal.com/gui/file/0fa0790bb6ffecf4a134342c3ab354e1145d5b8a4107a8598ef8e626b975b0e7?nocache=1
I didn't do any network traces, but I did patch out the crash logger calls to a non-existent server.


r/androiddev 3h ago

Laptop recommendations plz 🥀

0 Upvotes

So my budget is around 80k to 90k and I need a laptop for coding, entry level video editing, and multitasking, I was thinking of buying an asus s16 with oled but it's not in stock and I want to buy it offline. And non oled is 97k after discount and please suggest that buying from offline is good or online because don't trust online that much, moreover I'm right now in greater Noida and planning to buy here only or you can suggest me to check out some places nearby4

If you can find a oled one that would be great and for the processor ultra 5 would be good,ram 16 or Expandable, storage 512 gb or Expandable

Thank you


r/androiddev 9h ago

Question TWA (Trusted Web Activity) verification failing on a specific Android tablet - despite correct assetlinks.json

Thumbnail
gallery
2 Upvotes

I've spent hours debugging a TWA verification issue and
have ruled out all server-side causes. Looking for
insights from anyone who's hit something similar.

Setup:
- Django backend, TWA app built with Bubblewrap
- Published on Google Play (correctly installed,
latest version)
- assetlinks.json is correctly configured
(verified with Google's official Digital Asset
Links tool - "Success")
- SHA-256 fingerprint matches exactly between
Play Console and assetlinks.json
- App itself launches fine, no crashes

Symptom:
- X-Requested-With header is NEVER sent
(confirmed via server logs, 0/575+ requests
over 42 minutes)
- This means Chrome is treating the TWA as a
regular Custom Tab instead of a verified TWA

What I've ruled out:
- assetlinks.json content/history (clean, verified)
- Code logic (is_twa detection works correctly
when the header IS present)
- App signing (matches Play Console exactly)

The device in question is a budget/no-name Android
tablet (not Play Protect certified, possibly).
Has anyone confirmed that TWA verification can fail
specifically due to incomplete/non-certified Google
Play Services on certain devices? Any way to
diagnose this further without a second physical
device?


r/androiddev 16h ago

MeshGradientPainter.

Post image
6 Upvotes

I saw this post :
https://www.reddit.com/r/androiddev/s/bNFqQ3TqOC

I thought I'd share this new Compose API with you.

In compose 1.12.0 introduce new GradientPainter you can implement complex gradients very easily.
It is called MeshGradientPainter.
You can define the count of column and row.

For example rows = 1 and columns = 1.

The screen is divided into 4 sections and points.

This points show two things:
1.postion. Where is it? For example : 0,0 — top left.
2.color. What color is it? for example this section color is Red

And then these colors are spread very smoothly on the screen.

✅ Example:

@Composable
fun MeshGradientBackground() {
   val meshPainter = remember {
       MeshGradientPainter(
           rows = 1,
           columns = 1,
           hasBicubicColor = true
       ) {
           setVertex(0, 0, Offset(0f, 0f), Color.Red)
           setVertex(0, 1, Offset(1f, 0f), Color.Blue)
           setVertex(1, 0, Offset(0f, 1f), Color.Green)
           setVertex(1, 1, Offset(1f, 1f), Color.Yellow)
}
   }

   Box(
       modifier = Modifier
           .fillMaxSize()
           .paint(meshPainter)
   )
}

r/androiddev 12h ago

Question Why can only Samsung's own apps (Notes, Reminder, Weather...) get smaller-than-4x4 cover screen widgets? (Z Flip 6, One UI 8)

2 Upvotes

Hey all — I've been building a small personal app that shows step count on the Z Flip cover screen, and I've hit a wall that I think is actually a platform limitation, not something wrong with my app. Posting here because I'd love to be proven wrong, and because I suspect other cover-screen widget devs have hit the exact same thing.

The setup: My widget is a normal AppWidgetProvider/Jetpack Glance widget, registered with both the standard android.appwidget.provider metadata and the com.samsung.android.appwidget.provider metadata pointing at a <samsung-appwidget-provider display="sub_screen"> resource — which is exactly the pattern Samsung Notes uses for its own smaller cover widgets (I checked by decompiling the public Samsung Notes APK). Small minWidth/minHeight, targetCellWidth/targetCellHeight set to 2x2 and 4x2, the works.

The result: it only ever shows up as a single full 4x4 tile in the cover-screen widget picker. Never smaller.

What made me suspicious it's not my manifest: I checked Outlook and Spotify's cover-screen widgets too — both are big apps that would absolutely want a nicer cover-screen presence, and both are also stuck at 4x4-only. Meanwhile Samsung's own apps (Notes, Reminder, Weather, the phone dialer's recent-calls widget) get 2x2/4x2/tiny sizes just fine.

What I found digging into it on-device (connected via adb, compared dumpsys appwidget output for both my app and Notes, and pulled/inspected SystemUI.apk):

  • The cover-screen grid is actually built on AOSP's own "Communal Hub" (Glanceable Hub) framework — the same multi-size widget grid Google built for Pixel Tablet's Hub Mode — running inside SystemUI on the cover display.
  • The OS parses my widget's small size attributes correctlydumpsys appwidget shows it registering at exactly the dp values I declared, same as Notes' widgets. So it's not a manifest/XML mistake.
  • I even matched Notes' widgetCategory value bit-for-bit (both end up keyguard-only at runtime) as a live A/B test on my own device. No change — still 4x4 only.

That combination (correct registration + still forced to one size, only for non-Samsung apps) makes me think there's a package-identity allowlist gating which apps' widgets get offered at non-default sizes in the cover picker, separate from anything in the widget's own manifest.

Question for the sub: has anyone actually gotten a genuinely third-party (not Samsung-signed) widget to show up smaller than 4x4 in the native cover-screen picker, on any One UI version? I know apps like CoverWidgets and CoverScreen OS exist and can put arbitrary widgets on the cover screen — but as far as I can tell they do it by taking over the whole cover display themselves (their own widget host + presentation), not by getting Samsung's native picker to offer a smaller slot for someone else's widget. If anyone's actually cracked the native-picker case, or knows for a fact this is a partner-program/allowlist thing, I'd love to know — trying to decide whether to keep chasing this or just build my own host like those apps do.

Device/version for reference: Z Flip 6 (SM-F741B), Android 16, One UI 8.


r/androiddev 1d ago

Experience Exchange My first Android App project LocationApp

Enable HLS to view with audio, or disable this notification

31 Upvotes

Hey everyone, beginner Android dev here. I just finished building a LocationApp tutorial (live tracking and geocoding). I didn't just blindly follow it; I actually get what's happening under the hood and even built a custom Jetpack Compose UI instead of using the instructor's layout.

I’m feeling super comfortable with Compose and the UI side of things. But when it comes to the logic side—like setting up Retrofit or Coil for the first time in a project—my mind just goes blank. I can never write it from scratch and always end up copying from my previous projects to get it wired up.

  • Is this normal? Do you actually memorize all this setup code, or is referencing old projects just part of the job?
  • What are your best tips for speeding up my learning progress when it comes to the logic and architecture side of Android?

r/androiddev 1d ago

News ComposeGradients.com – Gradients for Android developers

Post image
61 Upvotes

Hi folks. I made a new site called ComposeGradients.com

There was no place to browse beautiful gradients for Compose apps so I decided to build one.

The site has a plethora of beautiful looking gradients (linear and mesh), plus a small tool to create gradients straight from the browser.

✅ Browse beautiful gradients and copy their code

✅ Create your own gradients

✅ (Optionally) Submit your gradient to the site

You can Like your favorites by pressing the heart button. No account required.

Try it out at ComposeGradients.com

If you find the site useful, share the site with your friends :)


r/androiddev 3h ago

Discussion Anyone looking for 1-on-1 Android mentorship?

0 Upvotes

I’m an Android developer with 8+ years of experience and currently work full-time as a Technical Lead.

I’m thinking of taking on a few people for 1-on-1 Android mentoring — students, entry-level engineers, or anyone trying to transition into Android.

We can talk through Kotlin, Android, architecture, real-world projects, debugging, code reviews, interviews, or whatever you’re currently struggling with.

I’d like to share what I’ve learned from working in the industry and hopefully help you progress a little faster.

Being completely upfront: I’m also looking to make some extra income on the side, so it’s a win-win; you get practical guidance, and I get to share my experience and work with people from different backgrounds.

If you’re interested, drop me a DM with a bit about yourself and what you’re currently working on.


r/androiddev 7h ago

How do you decide when an Android app should enter maintenance mode?

0 Upvotes

I maintain 14 Android apps on Google Play Store, built with Codex.

The apps have approximately 5 daily users or installs, and I’m trying to decide when an app should move from active development to maintenance mode.

App count alone does not seem to reflect the real workload. I currently track daily users, but I’m unsure how to weigh support requests, crash-free sessions, release regressions, OS/device fragmentation, and release frequency.

For developers maintaining multiple apps:

- Which metrics best predict maintenance time?

- How do you set thresholds for hotfixes versus scheduled releases?

- How do you centralize crash, version, device, and support data?

- How do you keep low-traffic apps safe without spending equal time on each?

I’m interested in production experience and practical processes rather than generic tool recommendations.


r/androiddev 13h ago

Question How should I handle real-time matchmaking in an Android fitness app?

0 Upvotes

I’m working on an Android app that needs to match users into real-time 60-second workout sessions.

I’m currently considering WebSockets for matchmaking and live session updates, with a backend handling the matching logic.

For those who have built real-time Android apps, what architecture would you recommend for handling matchmaking, connection drops, and syncing session state reliably?

I’d especially appreciate advice on patterns or libraries worth researching.


r/androiddev 14h ago

Question Any video explaining Figma to Compose implementation?

1 Upvotes

i'm struggling a bit with Figma when i want to implement the designs, i know few things but in general i'm still behind, is there any video explaining the implementation of Figma design in Compose, like cover everything: design system, typograpgy, colors, sizes, paddings, shadows, and also custom components with their own properties.


r/androiddev 18h ago

I built a wallpaper app

Enable HLS to view with audio, or disable this notification

1 Upvotes

I'm currently looking for feedback to improve it. What do you guys think of the UI and the overall look? Any features you'd like to see added?


r/androiddev 10h ago

Question SPAM

0 Upvotes

Hi guys, we have built an app and its runnig great. Now we got in touch with some customers who asked if it would be possible to have said app as a whitelable version for their businesses which would not be a problem to us, but after checking this through with AI we are now concerned as we were warned that uploading the app with a few adjustments for customers this will be marked as "Spam". BUT it also told us if we create separate accounts for each customer, it will NOT be marked as spam.

Seems a bit nonsensical to me as its still on the same platform. Anyone who has experience with that? Whats the best practice in reality? Thanks for any help!!


r/androiddev 1d ago

Discussion Client-side root/tamper detection — is server-side attestation actually standard now, or is everyone still just checking Build.TAGS?

3 Upvotes

Been going through our app's integrity checks and realized most of what we have is still the old client-side stuff — checking `Build.TAGS` for test-keys, looking for `su` binaries, checking known root package names. All of which Frida can hook around in about five minutes if someone actually wants to bypass it.

Curious what people are actually running in production in 2026. Anyone fully moved to Play Integrity API with server-side verdict checking? What was the migration pain — I'm mostly worried about false positives on rooted-but-legitimate power users, and how much complexity nonce binding adds to a normal auth flow.

Not looking for a lecture on "client-side checks are theater" — I know. Looking for what people actually shipped and what broke.


r/androiddev 15h ago

Android app: capturing the other party's voice during a cellular call

0 Upvotes

I'm developing a small Android automation app for a very specific workflow and I'm currently stuck on the audio side.

The app runs on a Samsung Galaxy Z Fold5 (of course it should work for different phones at the end of the day) and automatically calls a cinema's phone number. The cinema has an IVR/answering machine where I can navigate using DTMF tones.

The current workflow already works:

App
 ↓
Call fixed phone number
 ↓
Wait using Android post-dial ","
 ↓
Send DTMF: * → * → * → *
 ↓
Reach the cinema's voicemail menu

The next step is to automatically understand the spoken announcement, for example:

I want the app to detect the number of new messages and later transcribe the individual messages. Ultimately, the messages contain a first name, phone number, movie, date/time, etc., which I want to extract into an Excel file.

The problem

I can record the phone's normal microphone using:

MediaRecorder.AudioSource.MIC

and I can see the microphone level changing normally.

However, this only captures the phone's microphone. It does not give me the audio coming from the other party in the cellular call.

I also tried enabling the speakerphone programmatically using AudioManager, but on the Galaxy Z Fold5 the call does not switch to speakerphone.

I have also looked into InCallService, but I'm not sure whether there is a way for a normal third-party Android application to access the actual call audio/downlink as PCM data.

What I need

I don't necessarily need to record the call permanently. Ideally, I just need access to the incoming audio while the call is active so I can feed it into speech recognition.

Something like:

Cellular call
    ↓
Incoming call audio
    ↓
Audio stream / PCM
    ↓
Speech-to-text
    ↓
"7 new messages"

The target device is a Samsung Galaxy Z Fold5, running a current Android version.

I'm aware that Android restricts access to call audio for privacy/security reasons. I'm specifically looking for a legitimate Android API, Telecom API, audio routing method, accessibility approach, or device-specific solution that could make this possible without rooting the phone.

If direct access to the call downlink is fundamentally impossible for a normal Android app, I'd also appreciate confirmation of that and any practical alternatives for this specific use case.


r/androiddev 1d ago

News Google recommends WHPX over AEHD on Windows—and AEHD is being retired

12 Upvotes

If you use the Android Emulator on Windows, Google now recommends using Windows Hypervisor Platform (WHPX) instead of the Android Emulator Hypervisor Driver (AEHD).

Google says AEHD will be sunset on December 31, 2026, so Windows users should begin switching to WHPX. WHPX is the better long-term option, especially if you also use Hyper-V, WSL2, Docker, or other virtualization features.

You can check your emulator’s acceleration with:

emulator -accel-check

(you need to add emulator to your PATH, found under "%LOCALAPPDATA%\Android\Sdk\emulator\emulator.exe")

The result should show that WHPX is installed and usable.

Official documentation: https://developer.android.com/studio/run/emulator-acceleration


r/androiddev 1d ago

Pixel 11 Pro emulator in AS

1 Upvotes

Am I missing something or is it currently not possible to emulate new pixel lineup in AS?

One of our users with Pixel 11 Pro is having some issues with videos in our app. I think is a long shot to test this on emulator anyway but was surprised that these phones are not available in AS yet.


r/androiddev 2d ago

Open Source I open sourced my interactive globe animation on GitHub - Jetpack Compose

Post image
24 Upvotes

I posted my interactive Globe animation recently, and a lot of you liked it!

So I decided to open-source it, so you can use it in your own projects, contribute to it, or help make it even better.

Original post: https://www.reddit.com/r/androiddev/s/SgRoDszioN
GitHub: https://github.com/wailbabou/JetpackGlobe

Feel free to check it out, and any feedback or contributions are welcome!


r/androiddev 2d ago

What's the standard approach when Google Play merchant registration isn't available in your country?

2 Upvotes

I'm planning to release a paid app on Google Play, but I've run into a roadblock: merchant/payment profile registration isn't supported in my country.

I've looked through Google's official documentation, and I can't find any alternative process for developers in unsupported regions.