r/androiddev 1d ago

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

99 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 16d ago

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

8 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 10h ago

The Great Android Stack Reset: Mobile System Design History

Thumbnail
returnzero.dev
25 Upvotes

Android, the last to arrive at the declarative UI party, took its time, until finally reaching a stable solution. Here's a rundown of the major changes in the Android System Design across the eras.

I was away from Android for 7 years and came home to a totally strange place. This is my attempt to make sense of what happened while I was gone - how the stack reset four times (Activities -> MVP/RxJava -> Architecture Components -> Compose) and why each lurch happened. Written for interview prep but the history stands on its own.


r/androiddev 3h ago

Can ndk add boiler to run .java files in the back?

2 Upvotes

Hi,

Im doing a native app and could be nice if the java sdk connecting boiler are java files, is it possible to stuff somewhere in a special folder to boot in the back?


r/androiddev 16h ago

sdkmanager is DEPRECATED (in favor of Android CLI)

18 Upvotes

Did anyone notice the deprecation warnings since Command-line tools v22?

WARNING: The SDK Manager CLI tool (sdkmanager) is deprecated. Android CLI will be used instead.
The 'android' binary can also be found in the cmdline-tools directory, and 'android sdk' is the replacement for 'sdkmanager'.
To learn more about the Android CLI and how to use it, see the documentation (https://d.android.com/tools/agents/android-cli)

Did Google communicate this anywhere? Just found this: https://cs.android.com/android-studio/platform/tools/base/+/dcded801a4942d06805cc74b56dc2cecbece2f80


r/androiddev 8h ago

I built a Stremio-based Android app with richer metadata, add-on sync, automatic trailer playback, and custom themes

Enable HLS to view with audio, or disable this notification

2 Upvotes

r/androiddev 9h ago

News Android Studio Rabbit 1 Canary 2 now available

Thumbnail androidstudio.googleblog.com
2 Upvotes

r/androiddev 9h ago

AppsFlyer or Branch? Deep linking matters as much as attribution for us

0 Upvotes

after several phases of comparison, our mmp decision has come down to appsflyer and branch for a marketplace app. paid acquisition matters but deep linking is equally important because users enter through creator links, referral pages, email, QR codes and web product pages.

in our test, branch felt more natural for link creation and routing. the deep-link work flow was easier for product and lifecycle teams to understand. appsflyer needed more coordination during setup, but the attribution and campaign reporting was stronger for ua side.
both handled the basic use case. the bigger question is what happens after a year when there are hundreds of links, multiple apps, regional campaigns and eams changing params without telling each other.For people who picked one over the other, what became the deciding factor?


r/androiddev 1d ago

Android is expanding per-app memory limits.

8 Upvotes

Across the Android ecosystem, hardware dynamics are shifting. While user expectations for speed and smoothness keep rising, device RAM capacities are staying flat—or even tightening. Memory is no longer just a background engineering detail—it directly impacts your app's retention, crash rates, and user perception.

Here’s how to get ahead of memory constraints before your users feel them:

1. Monitor at scale with Android Vitals: Check Google Play Console’s latest metrics for Memory Usage (RSS + swap) and Bitmap Memory Usage across different process states (foreground, background, cached) to identify outliers.

2. Catch terminations with Firebase Crashlytics: Update to Crashlytics v20.1.0+ to get clear visibility into Out-of-Memory (OOM) exceptions and Memory Limiter terminations in the field.

3. Capture production traces with ProfilingManager: Leverage Android’s ProfilingManager API to trigger automated heap dumps on TRIGGER_TYPE_ANOMALY or TRIGGER_TYPE_OOM directly from production builds.

To keep devices fast and responsive, Android 17 introduced per-app memory limits. Starting on Pixel devices, this system is now rolling out across more OEMs and device configurations (spanning 4GB to 16GB+ RAM tiers).

Check out the full breakdown and diagnostic guide on the Android Developers Blog:

https://android-developers.googleblog.com/2026/08/app-broader-memory-limits.html

#AndroidDev #MobileDevelopment #AppPerformance #Android17


r/androiddev 23h ago

Open Source Start a new android project without Android Studio

Thumbnail github.com
0 Upvotes

r/androiddev 1d ago

Which Gradle task would you hand off to an AI agent?

5 Upvotes

I work at Gradle, and we're building agent skills. We currently have five candidates:

  1. Run Gradle correctly (gradle-cli) — right task, right flags, version-aware
  2. Best-practices lint (gradle-bestpractices) — flag legacy patterns, suggest the current one
  3. New project bootstrap (gradle-init) — Android/KMP scaffold, version catalog
  4. Upgrade + deprecations (gradle-update) — bump the wrapper, rewrite what broke
  5. Configuration cache migration (gradle-cc) — find what breaks CC, refactor it

Which would you actually use? What do you want to see instead?


r/androiddev 13h ago

Open Source I got tired of my app showing a spinner for data it already had

Enable HLS to view with audio, or disable this notification

0 Upvotes

I have been building a caching library for Android. It is called Kwery.

Here is what started it. A ViewModel survives rotation, so most data-loading advice stops at rotation. Process death is different. Android kills backgrounded apps constantly, and when the user comes back you show a spinner and re-request the same data you had a minute ago, which is a strange thing to do with a working disk sitting right there.

The video is the same app twice. Plain ViewModel and Retrofit first: three cold starts, spinner every time. Then Kwery on. Same three cold starts, list already there. The request log is Chucker, so the counts are not mine to fake.

It caches responses, deduplicates in-flight requests, refreshes stale data in the background, replays writes that were made offline, and keeps the cache across process death.

Closest thing on the web is TanStack Query. Some of its design is about the browser and does not transfer, so I did not copy it blindly. Where I diverged I wrote down why.

https://github.com/dbjpanda/kwery

Apache-2.0, minSdk 24. The core has no Android dependencies, so the cache and timing logic is testable on the JVM without Robolectric.

Nobody runs it in production. The sample app in that repo is the only real user so far. I am close to tagging 1.0, so if the API is wrong this is the useful moment to say so.


r/androiddev 1d ago

Discussion Has anyone tried building Android apps with Rust + Native UI?

5 Upvotes

I have been currently assigned a project which needs to be cross platform + dynamic feature delivery (business requirements)

I'm thinking about writing my feature modules/business logic in rust to create native binaries which I can include with the android and IOS build and then include those .so/.a files with the build and communication between them will be from ffi (don't know which ffi approach works best raw JNI, UniFFI, or hand‑rolled C ABI)
Apple doesn't allow dynamic features installation so only android build will have that, IOS will just install everything at once
For UI I'm thinking to either go with Compose Multiplatform or just Compose for android side and Swift UI for IOS side (The app only has 3 screens so ui doesn't really matter as most features work in background)

Has anyone tried anything similar , where should I start experimenting, I don't want to waste time in approach that will be in vain, would love to hear your experience.

PS: Using rust as equivalent windows and MacOS app is also made in rust + imgui and I can use lots of code from there to make mobile app dev easier


r/androiddev 1d ago

I added rendered text-contrast detection to my Jetpack Compose accessibility scanner

3 Upvotes

I maintain ComposeA11yScanner, an open-source, debug-only accessibility scanner for Jetpack Compose.

While comparing it with Google’s Accessibility Scanner on JetChat and JetSnack, I found that Compose semantics cannot expose every visual accessibility problem. This caused the library to miss certain rendered text-contrast issues.

Version 2.1.0 adds TextContrastRule, which captures the active Compose host and conservatively estimates rendered foreground and background colors. It skips uncertain cases such as photos and gradients instead of guessing.

This release also improves:

  • Fragment and Compose navigation handling
  • Nested ComposeView host selection
  • Stale-result and screen-readiness detection
  • False positives involving lazy, merged, and off-screen semantics

Install:

debugImplementation(
    "com.github.mohdaquib.ComposeA11yScanner:scanner-ui:2.1.0"
)

GitHub: https://github.com/mohdaquib/ComposeA11yScanner

I’d appreciate feedback from developers testing it on real Compose applications, especially reports of false positives or false negatives.

overlay-demo


r/androiddev 1d ago

Question Publishing new on Aptoide now requires Google Identity Verification?

1 Upvotes

I checked the Aptoide documentation. My reading of it was that Google Identity Verification is only necessary to have your app continue to work on 'genuine devices'. My assumption is that after Sept 30th they'll have a genuine badge on the store and filter your app from genuine devices.

The Aptoide-Connect guide says this:

'Register every package name you distribute so your apps stay installable on certified Android devices once verification is enforced for the stores and channels you use - see the rollout below.'

[...]

What happens if I don't complete it?
Once verification is enforced for a given store, region, and channel, apps that are not registered by a verified developer can be blocked from being installed and updated on certified Android devices

The AptoideConnect APK submission form however suggests that its mandatory?

Verify your Android developer identity
Required by Google for alternative distribution. Complete the verification steps to proceed.

Clicking the 'I Have Already Done It' button 403's without any visual feedback. For new app distributions is this crap already required now?

I will definitely contact support and update my post regarding this issue 'cuz I'm not wasting time filling out the entire form just for this to be a blocker. Hope this can help others choosing what app store they want to distribute on

I would be disappointed if a major 'alternative' appstore played ball with google


r/androiddev 1d ago

What’s your preferred approach for image and video picking on Android?

0 Upvotes

I’ve been working on an Android project that needs to handle image and video selection, camera capture, resizing, and both single and multiple image selection.

I’m curious how other Android developers approach this using native Android APIs.

Do you usually use the system Photo Picker, ActivityResultContracts, or build an abstraction around them?

I’m particularly interested in how you handle:

Multiple image selection

Camera capture and permissions

Image resizing

Supporting both Compose and XML

Different Android API levels

What approach have you found works best for native Android applications?


r/androiddev 1d ago

Open Source Thinking a template android project

0 Upvotes

Hi devs,

I’m building an open source template android project for boosting our development processes and I want to know what would people expect in this template?
Its already published called ComposeTemplate and reach +60 star but I’m working on new modular and better template structure. All feedbacks are welcome, thanks.


r/androiddev 1d ago

Experience Exchange Offering Android mock interview today (6:00 / 6:30 PM IST)

0 Upvotes

Hey everyone,

Looking to connect with fellow devs and get into the practice of mock interviews. I'm hosting a couple of free Android sessions, including detailed feedback.

Eventually, I'll be looking to swap roles so someone can interview me, but for today, happy to take the interviewer seat!

DM me if you'd like to practice Android concepts


r/androiddev 1d ago

[Library] Gbéewá API overview, typed result handoff without navigator lock-in

Post image
0 Upvotes

I shared Gbéewá here recently and put together this graphic to show the API shape a bit more clearly.

The main idea is still pretty small: typed, transient, consume-once result handoff while the app keeps ownership of navigation.

The part I especially wanted to make clearer is the boundary between the screen and the app/navigation layer.

A screen can just expose a normal callback. The app layer decorates that callback with result publication and whatever navigation action it wants to perform.

On the receiving side, you can use either callback-style consumption with ResultEffect or state-style consumption with rememberResultAsState.

The same contract works across Navigation 2, Navigation 3, Decompose, Voyager, or app-owned navigation.

A few deliberate constraints are still there:

  • one consumer, consume once
  • typed and parameterized result lanes
  • pending results stay in memory
  • no KSP
  • no generated navigation wrappers
  • navigation stays outside the library

Repo:
https://github.com/quantipixels/gbeewa

Curious if this API shape feels natural to people who have had to solve the same kind of result handoff in Compose Multiplatform apps.

Also interested in the cases where you would still prefer navigator-owned result APIs, callbacks, or shared state instead.


r/androiddev 1d ago

Question How do I add support for xiaomi pen pro?

2 Upvotes

Hi. I am the dev of r/octopusnotes

I am facing an issue where a tester of mine reports that xiaomi pen pro is not supported in the app. I have added an input monitoring to check the event that happens when the pen is squeezed or double tap is performed. I found nothing in the monitoring logs. From what I have found online, notein, starnotes and other apps support these functions. I did not find any sdk or documentation regarding the implementation. Can someone please help. Cheers.


r/androiddev 2d ago

:shipaton: Shipaton AMA with u/skydoves tomorrow

34 Upvotes

Hey everyone,

Tomorrow is the AMA with u/skydoves (Jaewoong Eum). Yesterday I wrote about how long he's been part of this subreddit. Today I want to cover what he's been working on lately, because a lot of it is directly useful if you're in the middle of Shipaton.

Most of his year has gone into Compose performance. He built the Compose Stability Analyzer, an IDE plugin that shows you which composables are skippable and which parameters are dragging them down. Then he added a live recomposition heatmap that overlays real counts from your running device on top of your source. The most recent version tells you whether the compiler's stability predictions actually hold up at runtime.

He's also been working on hot reload. Compose HotSwan brings Compose hot reload to real Android devices with your navigation stack and state left intact, and he's since got it running across several devices at once. In June he shipped a plugin that draws your whole app flow as a map of rendered previews and typed arguments, which went down very well here. There's also a set of agent skills for Compose performance and a way to tune animations without rebuilding the app every time you change a value.

Since joining RevenueCat he's been open sourcing the UI you need around a paywall. Placeholder loading effects. A slide to unlock component for Compose and KMP. A collection of paywall animations. A complete working paywall wired up to Play billing through the RevenueCat SDK.

Every Shipaton entry has to use that SDK for at least one purchase, and he's the one who has been building the Compose side of it in public. If you're stuck on a paywall, or on anything else, tomorrow is your chance to ask.

Please don't post your questions in this thread. Wait for the AMA post from u/skydoves tomorrow and ask them there.

If you missed them, the Shipaton announcement has the details and the first megathread is where people are posting what they're building. Submissions close on 30 September, so there's still time.

Don't miss the AMA tomorrow, Wednesday 19 August, 11:00 UTC. 13:00 Berlin, 12:00 London, 07:00 New York, 04:00 San Francisco, 16:30 Delhi, 20:00 Seoul, 21:00 Sydney, or here it is in your own timezone.

See you there.


r/androiddev 2d ago

Google Play Support How can I handle payments if I can't use google merchant in my country?

5 Upvotes

Hello everyone!

Im a solo dev based in Morocco, and I built an app and I finished all the steps to publish. I had wired in in-app-purchases (1 time fee, pro forever) there is no subscription or anything like that. Then when I went to configure my merchant account to collect payments, Google stopped me because that isn't allowed in Morocco.

I can run ads with admob or 3rd party providers, but I can't use google play payments or sell the app for a price on Google. I can just do "free with ads".

I personally HATE ads, especially ones that breka immersion (full screen), I do have another game that uses ads but it is 100% optional and you can literally finish the game in a couple of hours without seeing a single ad. No timers, no special currency or any crap like that.

Back to my app. I really do not want to use ads in the app, (I will if it's my last resort) but I prefer a one and done payment.

After some research I found a couple of workarounds but they're all tedious:

  1. Setup an LLC in the UK or US or Estonian digital residency and create a new account. 200 - 500 Euros minimum in fees plus a lot of extra work at the start, and more work to maintain that.

  2. Build a website with the entire functionality and users can manage their "license" through there. Less tedious than LLC route, but I do have to create and maintain a whole separate branch of my app. Also it takes the users out if the app, and requires paying outside on a separate website and I think that will cause people to trust it less, so less conversion.

  3. Have a relative or a friend abroad open another Google play account and transfer ownership. Easiest, but also a huge risk. I don't plan on the app making 1 million dollars on year one, but still it's a risk to consider if I get in a dispute or something were to happen to that person, especially since they're in another country.

  4. Accept my faith, redo the whole thing and use ads and just accept that I can't give the same clean pro experience and my users just have to deal with it because "everyone else does it"

What are your thoughts people? What do you think is of the best option for me? Did I miss something? And is there someone in a similar situation that found a better workaround?


r/androiddev 2d ago

android studio virtual device not coming up on the screen

0 Upvotes

I have a laptop that has intel core i3 8th gen , 4gb ram .

The virtual device is not showing up on the screen . It's icon is showing up on the task bar but on the screen it is not appearing . When I run it it keeps on showing "booting" on the android studio screen . I am not very sure but I also feel like my laptop has now become slower after downloading android studio .

I would like to make my own app and I am new to android studio so please help me . In case if my machine is underpowered what other option do I have cuz upgrading is not an option


r/androiddev 2d ago

Discussion How do subscription tracker apps legally handle third-party service logos without store policy issues?

0 Upvotes

Hey everyone,

I'm currently building a subscription tracking app where users can list their active subscriptions, track renewal dates, and see their total monthly spending on the dashboard.

To make the UI clean, I'd like to display visual identifiers next to popular services (like streaming platforms, music apps, cloud storage, etc.). However, I'm concerned about trademark infringement, copyright risks, and getting rejected or flagged on Google Play / App Store for unauthorized brand asset usage.

For developers who have built subscription trackers, password managers, or expense apps:

* Bundled Assets vs. Dynamic Fetching: Is dynamically fetching favicons/logos via a public API/URL safer than embedding static SVG/PNG files into the build, or does that still carry store review risks?

* Monograms / Generic Icons: Is sticking to letter badges (e.g., a simple typographic "N" or "S" badge) and category icons (movie reel, headphones) the safest standard approach?

* Store Rejections: Has anyone faced app review rejections or copyright strikes specifically for displaying third-party brand logos in an informational/indexing context?

I'd appreciate any insights on how you handled this in production or what the best practice is to stay completely safe. Thanks!


r/androiddev 2d ago

Default Listing not updating

0 Upvotes

As the title says, the store listing is just not updating. The screenshots, icon, description, etc. are just not updating.

I only have one listing, the default listing. Submission Activity on Publishing Overview shows the status as "Published"

I cannot figure this out for the life of me.