56
Stay up-to-date with latest news on Android Development! Content directly fetched from the subreddit just for you. Powered by : @r_channels
[AMA] I'm Jaewoong Eum (skydoves). Ask me anything!
Hey everyone!
First, a huge thanks to the mods for organizing this AMA and for the [teaser posts](https://www.reddit.com/r/androiddev/comments/1vrisyh/ama_with_uskydoves_tomorrow/) over the last couple of days.
I'm Jaewoong Eum, probably better known here as [skydoves](https://github.com/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](https://github.com/skydoves/compose-stability-analyzer), [Balloon](https://github.com/skydoves/balloon), [Landscapist](https://github.com/skydoves/landscapist), [Compose Nav Graph](https://github.com/skydoves/compose-nav-graph), etc), writing some [books](https://doveletter.dev/books), and building developer plugins ([Compose Hot Reload for Android](https://hotswan.dev/)). I also work at RevenueCat, so I'm happy to talk about monetization, subscriptions, or [Shipaton](https://shipaton.com/) 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](https://www.inyourowntime.zone/2026-08-19_11.00_UTC).
https://redd.it/1vsgzi2
@reddit_androiddev
Bypassing certificate pinning in trading apps
Is there a way to identify or extract the APIs used by a trading app, given that it has certificate pinning enabled and doesn't work with proxies or emulators?
https://redd.it/1vscf60
@reddit_androiddev
What do you think of the aesthetics of these apps? edited
https://redd.it/1vs92qg
@reddit_androiddev
How do subscription tracker apps legally handle third-party service logos without store policy issues?
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!
https://redd.it/1vrxgkx
@reddit_androiddev
My own telemetry vss Play Console reporting lag - how long does initial backfill usually take?
I recently soft-launched a new utility/security app on Google Play and am doing some in-my-network outreach to test build stability before my main launch.
I’m collecting anonymous telemetry data, including unique users and simple activity metrics (just firing a hashed device/session ID on first launch for internal telemetry). So far I have \~8 distinct active installs over the past week.
But on my Google Play Console, the dashboard and acquisition stats are still sitting at a flat 0, and Reach metrics, Android Vitals, Ratings and Reviews all show "Data unavailable."
I know batch processing, UTC timezone rollups, and anti-fraud filters mean Play Console statistics lag anywhere from 24–72 hours (or even longer for fresh apps/accounts without a baseline traffic volume). I also know Android Vitals requires a minimum sample size of users opted into "Usage & Diagnostics" sharing before anything populates.
Support mentioned it can take several days or SEVERAL WEEKS to catch up on a new listing, but I’m curious about real-world developer experiences here:
1. How long does it typically take Play Console to start displaying initial install numbers for a brand-new package ID?
2. When you do soft launches or pilot runs, what custom telemetry or analytics setups do you rely on for real-time visibility instead of waiting on Google’s pipeline?
I’m interested to hear how folks here handle early-stage launch tracking without relying purely on Console stats!
Thanks for any feedback
https://redd.it/1vrzjem
@reddit_androiddev
Default Listing not updating
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.
https://redd.it/1vrwgl7
@reddit_androiddev
How can I handle payments if I can't use google merchant in my country?
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?
https://redd.it/1vrmnal
@reddit_androiddev
AMA with u/skydoves tomorrow
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.
https://redd.it/1vrisyh
@reddit_androiddev
Advice for my Android students about using AI?
I teach Introduction to Android Programming at a community college. I stress to my students the importance of learning the basics to build a foundation of knowledge in terms of developing apps, writing in Kotlin, designing app architecture, etc. At the same time, I do allow them to use AI tools because I also understand it's important for them to know how to do that. (I ask that they use them to help, not do.)
If anyone has any advice or words of wisdom to pass along to my students (who are new to Android), please share. In particular, I am hoping to reinforce the importance of learning the material for themselves (rather than relying on AI to do it for them) at this early point in their development.
I truly believe they have to learn the basics in order to be able to successfully use AI tools down the road. If anyone has any real-world anecdotes or thoughts that back this up, please share! (Or, if you disagree or have stories that contradict this, I'd love to hear those, too!)
Thanks in advance.
https://redd.it/1vr35pn
@reddit_androiddev
What I found out building an API to TTS alert that has to run with the screen off
Built a foreground service that polls a price API and speaks the result through local TTS. It has to keep working with the phone locked in a pocket.
Here is what I learned, including the thing that broke it after it was already working.
Starting point
For work that is continuous, user-initiated, user-perceptible, and useless if deferred, a foreground service with a persistent notification is the appropriate architecture. Google's own criteria for a valid FGS use case are roughly that: user-beneficial, user-initiated or user-perceptible, user-stoppable, and not something that can simply be delayed without breaking the feature. My case fits, so that is where I started. If your work can be
deferred at all, WorkManager is the right answer instead.
One practical note: initialise the TTS engine inside the service itself, not in your app's UI layer. That layer is not reliably alive with the screen off.
What broke:
It ran fine for a time, then started dying after roughly 5 to 6 hours, every time. I assumed OEM battery management. It was not that.
Android 15 puts a hard 6 hour cap per 24 hour period on foreground services of type dataSync and mediaProcessing. At the limit the system calls
Service.onTimeout() and you have a few seconds to call stopSelf(),
or you get
RemoteServiceException: "A foreground service of type dataSync did not stop within its timeout"
The cap is shared across every service of that type in your app, and disabling battery optimisation does nothing about it.
What I did about it, and the part worth arguing over
The timeout forced me to actually look at whether dataSync was the right declaration in the first place. It was not. My service is not syncing data as its user-facing purpose, it is producing audible speech output. So I moved it to mediaPlayback.
I want to be careful here, because the obvious reading of this post is "mediaPlayback is the type with no timeout, use that." That is the wrong lesson and it will get people into policy trouble. Android documents mediaPlayback as continuing audio or video playback in the background. It is not a sanctioned escape hatch from the cap. The reason I think it fits my app is that the entire product is spoken audio, and in percentage or target modes it speaks frequently. Whether intermittent announcements are the kind of ongoing playback Google has in mind is genuinely an open question, and I would rather leave it open than present it as settled.
The change :
A. foregroundServiceType set to mediaPlayback, permission swapped to
FOREGROUND_SERVICE_MEDIA_PLAYBACK.
B. The old permission was still in my merged manifest because a library dependency was injecting it, so the cap still applied even after I thought I had changed things. Forced it out with :
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"
tools:node="remove" />
Check your merged manifest rather than assuming the change took. This one cost time.
C. Added a MediaSessionCompat with a MediaStyle notification.
To be clear about what this does and does not do:
it aligns the implementation with what Android expects from a background audio app, and the quality guidelines ask for a MediaStyle notification for background audio.
It does not make the classification legitimate on its own. Play cares about what the app actually does, not whether you instantiated enough media objects to resemble a music player. If your service does not genuinely produce audio, adding a session will not save you.
D. Requesting AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK per utterance so speech ducks other audio rather than stopping it.
E. Release the media session before the TTS shutdown in onDestroy and onTaskRemoved.
Runs with the screen off now, no timeout.
‐-----------------------------------------------------‐--------------------------------
Questions I would like feedback on
1. Where is the line between background audio playback and periodic spoken notifications? If the service
Architectural patterns in large scale apps.
in our mid sized startup, we have over 100 android engineers on one app, divided by squads, so we have a lot of squads, each one is working on a feature, a library needed, design system and custom components libraries etc, all these modules/libraries are published to maven and added as dependencies on the core app repo, my squad works on an isolated feature so it's easy to integrate into core app repo, but i attended guild meetings and saw RFCs mentioning circular dependencies, hexagonal, onion, plugin etc architectures because some modules/libraries depend on each other, communicate with each other, initialization order problems of modules etc etc etc, i feel stupid tbh and i'm glad i'm working on an isolated feature library in which we use usual architecture stuff. anyone has resources: talks, books, articles etc that cover this kind of topics and architectures and engineering problems in big scale apps with big scale teams and modules/libraries?
https://redd.it/1vqy1mu
@reddit_androiddev
Android Studio Rabbit 1 Canary 1 now available
https://androidstudio.googleblog.com/2026/08/android-studio-rabbit-1-canary-1-now.html
https://redd.it/1vqupvr
@reddit_androiddev
App Review has changed
I feel like the Android App review has changed and become even more automated but in a bad way.
For years I have never seen so many back to back rejections for with automated responses that provide 5 words, show no screenshots, show no data reflecting the rejection in the Android Vitals or even my own backend.
Something has changed and it’s annoying.
https://redd.it/1vqsqjx
@reddit_androiddev
Added Easter Eggs & Improved SFX
https://redd.it/1vqp76x
@reddit_androiddev
PSA: Instagram/TikTok in-app browsers block every client-side path to the App Store. Here's the server-side fix that actually works.
If you put a "link in bio" that's supposed to send people to the App Store or Play Store, and you've noticed it just… doesn't work from Instagram or TikTok — you're not crazy. I burned a couple days on this so here's the writeup.
The problem
Instagram, TikTok, and Facebook open links in their own in-app webview, not Safari/Chrome. That webview sandboxes a bunch of navigation. On iOS specifically, I tested every client-side route to the App Store and they all dead-end (blank screen, nothing happens):
`window.location` / JS redirect to [`apps.apple.com`](http://apps.apple.com)
a plain <a href> tap
universal links
itms-apps:// / itms-appss:// schemes
What actually works: a server-side 302
The one thing the in-app webview will honor is the initial navigation being a redirect. If the very first response from your URL is a 302 whose Location is the store URL, the webview hands that off to the native store app. This is the same mechanism Linktree/Branch use under the hood.
So instead of an HTML page with redirect JS, your /get link needs to be a tiny endpoint that returns a 302 based on User-Agent. A Cloudflare Worker (free tier) does it:
const PLAY = "https://play.google.com/store/apps/details?id=YOUR.PACKAGE";
const APPSTORE = "https://apps.apple.com/app/idYOURID";
export default {
async fetch(request) {
const ua = request.headers.get("user-agent") || "";
const store = /android/i.test(ua) ? PLAY
: /iPhone|iPad|iPod/i.test(ua) ? APPSTORE
: PLAY; // desktop fallback
return new Response(null, {
status: 302,
headers: { Location: store, "Cache-Control": "no-store" },
});
},
};
Two gotchas that cost me time:
1. iOS + Instagram/TikTok is still special. Even the server 302 (both https and itms-appss) dead-ends inside Instagram's iOS webview specifically. The only reliable route there is the user's own "Open in external browser" menu. So for that one case I don't 302 — I serve a tiny interstitial that shows one instruction: tap ⋮ → Open in external browser. Android in-app browsers and iOS Safari all take the 302 fine; it's just IG/TikTok-on-iOS that needs the manual hop.
2. Don't let the edge cache your 302. Cloudflare will happily cache a bare 302 (\~20 min). If you ever change the redirect logic, stale routing bites you. Cache-Control: no-store on the redirect fixes it.
Bonus: since the redirect is server-side, you can read utm_source off the query string and fold it into Play's &referrer= for install attribution — something you can't reliably do client-side.
Hope this saves someone the debugging. Curious if anyone's found a way around the iOS-in-app-webview limitation that doesn't need the "open in browser" step — that's the one part I couldn't fully automate.
https://redd.it/1vqeg4r
@reddit_androiddev
Thinking a template android project
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.
https://redd.it/1vsgntk
@reddit_androiddev
What do you think of the aesthetics of these apps?
https://redd.it/1vs8635
@reddit_androiddev
How do I add support for xiaomi pen pro?
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.
https://redd.it/1vs8erf
@reddit_androiddev
android studio virtual device not coming up on the screen
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
https://preview.redd.it/y35vtxwhh6kh1.png?width=1280&format=png&auto=webp&s=c51cff6824c0c6556c146637cf7e0a777a76943e
https://preview.redd.it/5ew3haikh6kh1.png?width=960&format=png&auto=webp&s=e522a777ecf5235506bd68708fd39f49f98956ab
https://preview.redd.it/2uf7jkdai6kh1.png?width=1280&format=png&auto=webp&s=fd3240bdf458a2658f448c3652617f88e16f298d
https://redd.it/1vry2u2
@reddit_androiddev
built a mobile only interview prep site. missing anything obvious?
so when i originally wanted to leave my first mobile swe job i found that mobile interviews feel weird compared to generic swe prep. backend engs have a much easier time because they follow a more well defined, paved loop that mirror new grad interviews.
on the mobile side half the loop is stuff like lifecycle, concurrency, "build this small app in an hour", debugging a janky project, and mobile flavored system design. not just invert a binary tree on a whiteboard which i spent hours prepping for and only was a small part of the overall interview process.
in order to figure it out i cold dm'd a ton of random mobile engineers and barely got any responses + i failed my first 5 interviews just to get the hang of it. i kept bouncing between random blog posts, leetcode, and youtube so i put together something for myself and figured i'd share it in case it helps anyone else prepping.
it's called acemobileinterview. ios + android tracks with:
\- general fundamentals + algorithms (free)
\- timed xcode / android studio style projects
\- buggy starter zips for debugging practice
\- system design + behavioral stuff
i'm not trying to spam this everywhere and also genuinely curious what you'd add or cut if you were prepping for a mobile loop right now.
site: acemobileinterview.dev
happy to answer questions about how i structured it or what's in the ios vs android tracks. for context i've been a mobile engineer for 6+ years and have made several job switches + gotten offers from netflix, duolingo, patreon, + many more
https://redd.it/1vryd84
@reddit_androiddev
Supabase Kotlin SDK in production — is this good enough or would I regret not using Firebase instead?
I am making an Android math game in Kotlin with Jetpack Compose in MVVM architecture. Right now it is currently local-only using SharedPreferences for testing purposes, and I am looking to add a backend for cross-device sync and login, with it coming down to Firebase and Supabase. I am leaning more towards Supabase but the AndoidSDK part is the one part I am mostly unsure about.
I am leaning more towards Supabase because the main feature is using teacher viewing class reports on how students did, which is one big reporting screen which I saw could potentially be quite a bit expensive with firebase, as it is billed per read, whereas on Postgres it's a single join with a group by. The data is also relational as it is teacher, class, students, etc. and I will not store almost anything by students on purpose, except their first name, which is easier with Supabase.
It seems to favor Supabase but what I want to know is:
Does the flow and coroutines integration work cleanly in a compose app, or are there issues like lifecycle or reconnection issues once you get past a demo? How reliable is realtime compared to firestore? Any issues or things to know about when the persistence across the app restarts? If I hit a strange edge case would I have to dig through a library source?
I am a little worried that I would save money on the reads and then I would lose just about all that time fighting an immature client. If anyone has shipped an app on supabase-kt, would you do it again, or would you go a different direction? Or perhaps there is something I am missing about Firebase, and if so, I would love to know.
https://redd.it/1vruh61
@reddit_androiddev
Need help getting a better understanding and improve in Android development
Hi Everyone,
I have a question on how to approach the situation im currently in.
I got a software developer role in a banking solution company which uses mifos opensource tools and im currently working in the mifos Android client .
I have basic understanding and basic knowledge of android development i learned from udemy and youtube but i was just given a massive codebase which uses concepts i dont know and it overwhelming me.
So, I need guidance from experienced professionals how did you tackle this situation or how will you do it to get a better understanding of Codebase and improve my skills and develop quality code .
Also im a beginner,so if you dont understand my question feel free to ask for clarification i will provide it and help me to get a better understanding of Android development itself and how professionals do their work.
Thankyou
https://redd.it/1vrjqer
@reddit_androiddev
Try my app , its a free and open-source voice to text transcriber
https://redd.it/1vrfhoa
@reddit_androiddev
can sometimes go several minutes without speaking, does that weaken the mediaPlayback justification even though producing spoken audio is the core user-facing feature?
2. How would you reliably detect the process being killed by an OEM? A dead process cannot report its own death. Persist a heartbeat and detect the gap on next launch, an alarm-based watchdog, or something else?
3. Would you classify TTS output as USAGE_MEDIA or
USAGE_ASSISTANCE_ACCESSIBILITY? Interested in how people read this for an app whose spoken output is informational but is not an accessibility service.
https://redd.it/1vqsl0q
@reddit_androiddev
How are people actually handling state in large Compose screens?
I'm genuinely curious how teams are handling this in larger apps, because I'm not convinced we've fully solved it.
Before Compose, MVVM/MVI gave us a fairly clear direction: keep the screen state in the ViewModel, expose it, render it, test the transitions.
With Compose, we now have local state, state hoisting, state holders, StateFlow, snapshot state, rememberSaveable, and plenty of different ways to split ownership.
That flexibility is useful, but on a large screen it can also get messy pretty quickly.
If you keep everything in one UiState, it can become huge and start coupling unrelated parts of the screen together.
If you split state too much, you can end up with ownership spread across the ViewModel, composables and state holders, which can make the screen harder to reason about as a team.
Then testing adds another layer. What do you keep centralized because it makes behaviour easier to test? What do you leave local because it is really just UI state? Where do side effects fit without turning the ViewModel into a coordinator for every tiny interaction?
I don't really have a strong answer here.
For people working on large Compose codebases with multiple engineers:
How are you structuring state today?
One UiState per screen? Multiple state objects? State holders? Mostly ViewModel state with some local Compose state?
And more importantly, has that approach actually held up well for testing, maintenance and team ownership?
Sometimes I wonder whether Compose solved the old state-management problems, or just gave us more ways to distribute them.
https://redd.it/1vqy2c6
@reddit_androiddev
meditation app
hey everyone , i was thinking of building a free opensource meditation app . basically what the app would do is offer breatwork technique with breath in and out instruction and a meditation timer
would people use it?
https://redd.it/1vqx17q
@reddit_androiddev
Android Studio Quail 4 RC 1 now available
https://androidstudio.googleblog.com/2026/08/android-studio-quail-4-rc-1-now.html
https://redd.it/1vqt49y
@reddit_androiddev
Is Shipaton worth it?
I heard of this contest called Shipaton where you can post your app and could potentially win a grand prize. However they have certain requirements - It must be pushed on the Google play store (or Apple app store) and it must use the Revenue cat SDK for enabling payments. And all the code must be available publicly.
My app is in a very rough state though. So its not polished, but it is usable. Normally I'm hesitant about openly sharing code as well, so that's another yellow flag for me.
I'm wondering if people have had negative experiences with this? Is there a downside to putting your app in this contest? Does it decrease your sense of ownership of your own app given that you're making it fully public (without minification)?
https://redd.it/1vqr64k
@reddit_androiddev
AMA with u/skydoves is in two days
Hey everyone,
The AMA with u/skydoves is in two days. His name is Jaewoong Eum, and if you've been around this subreddit for a while you'll have read some of his work, even if some of you might not have registered whose it was.
Jaewoong is one of the pillars of our community. He's been posting here for eight years, his first post landed nearly three years before I became a moderator, and he still contributes regularly.
Back in June 2019 he posted a todo app he'd written for a mid-term project at university. He was still a student back then.
Just six weeks later he shared a tooltip library, Balloon, which in my personal opinion is the best tooltip library for Android out there. And he's still maintaining it today.
Since then he's given r/androiddev and the wider Android community countless libraries, articles and open source examples. He's even written a book on how the Compose compiler and runtime actually work and built an IDE plugin that traces recomposition counts live on a device while you're holding it.
I'd call his Pokedex series one of his most loved contributions to this place. It started in June 2020 with a small Pokedex app built on Dagger Hilt, MotionLayout and MVVM. Six months later he posted an AR version running on ARCore. In 2024 he rebuilt the whole thing in Jetpack Compose. And earlier this month he posted Pokedex KMP, one shared codebase running on Android, iOS, desktop and the web.
In 2025 he was hired by RevenueCat. The AMA on Wednesday is organised by them as part of our participation in Shipaton 2026, and I want to personally thank them for the opportunity. We don't often get to hand this community a couple of hours with someone who has been part of it for so long.
Wednesday 19 August, 11:00 UTC. In local time that's 13:00 Berlin, 12:00 London, 07:00 New York, 04:00 San Francisco, 16:30 Delhi, 20:00 Seoul for Jaewoong, and 21:00 Sydney. If you're not near one of those, here it is in your own timezone.
Start thinking about what you want to ask him. Please don't post your questions here. Wait for the AMA thread from u/skydoves on Wednesday and ask them there.
https://redd.it/1vqm08r
@reddit_androiddev
Code 17 devlog: Android 16, safer rotation, and stronger imports
Code 17 is focused on compatibility, safer imports, and closing several reliability gaps.
Main changes:
- ScriptTap now targets Android 16 / API 36 while retaining its existing minimum Android support.
- Screen-share sessions survive device rotation.
- Scripts using literal screen coordinates are protected from running in the wrong orientation.
- Literal coordinates are transposed when importing scripts manually or through Public Cloud and Personal Cloud.
- .sts compatibility is improved, and unsupported commands from newer packages can be skipped during import instead of blocking the entire script.
- Public Cloud now shows clearer download and cooldown states.
- Public-script update serialization was corrected.
- Startup metadata recovery, active-script RAM preloading, and precision validation were hardened.
- GetPixelColor results and command insertion inside nested blocks were fixed.
- New navigation shortcuts connect Script Library and the Main Overlay more directly.
- Run Logs now default to OFF.
- Bridge uploading was simplified.
- Guides and command information boxes were refreshed.
- Remote Config minimum-version requirements are enforced after successful Firebase synchronization.
The orientation work is especially important for screen-based automation.
A script created in portrait should not blindly use those same coordinates in landscape. Code 17 now preserves the intended screen location during supported imports and prevents literal-coordinate scripts from running against the wrong orientation.
If you test Code 17, the most useful areas to check are device rotation during screen sharing, portrait/landscape script imports, older .sts packages, nested command insertion, GetPixelColor, and Public Cloud downloads.
https://redd.it/1vqbxm8
@reddit_androiddev