56
Stay up-to-date with latest news on Android Development! Content directly fetched from the subreddit just for you. Powered by : @r_channels
I built a KMP AdMob library because none of the existing ones let you write native ads in Compose
I was learning KMP and wanted to know how people handle AdMob in a multiplatform app. The usual answer is a hand-written expect class AdManager, which is fine until you need something past a banner.
There are a few decent libraries already (LexiLabs' is good), but the gap I kept hitting was native ads. Most wrappers stop at the full-screen formats, so for native you end up writing a platform view on Android and another on iOS, and the shared part of your codebase stops being shared.
So I built AdMob CMP. Apache 2.0, on Maven Central.
What it does:
One `commonMain` API for all six formats: banner, interstitial, rewarded, rewarded interstitial, app open, native.
Native ads are declared with a layout DSL that reads like Compose, and the SDK renders them through the real platform ad views on each side. No platform code in your app.
Consent is part of initialization. `gatherConsentAndInitialize` runs UMP, then ATT on iOS, then SDK init, in that order, because getting that order wrong on iOS is a common and quiet failure.
Banners measure their own container, so adaptive sizing is right in iPad split view.
`strictTestMode` throws at construction if a placement points at a production ad unit. Turn it on in debug and you can't ship a test build that spends real impressions.
There's a Gradle plugin that links Google Mobile Ads and UMP into Kotlin/Native test executables, which is what makes :iosSimulatorArm64Test pass instead of dying on Undefined symbols ... _OBJC_CLASS_$_GAD*.
Caveats, up front: it's KMP/Gradle only, so a pure Swift app can't consume it without a shim. Kotlin 2.3.20, Compose Multiplatform 1.11.1, minSdk 26, iOS 15. Klibs aren't binary compatible across Kotlin minors, so you need a matching compiler.
implementation("dev.avinya.ads:admob-cmp:2.1.0")
GitHub: https://github.com/Meet-Miyani/admob-compose-multiplatform
Docs: https://ads.avinya.dev
Happy to answer questions about any of it, especially the native ad side, which was by far the hardest part to get working the same on both platforms.
https://redd.it/1vq4kvt
@reddit_androiddev
The risks of sharing your opensource Android app's public repo before releasing it into the app store
We are working on an open source project which has an Android app client. As you know, the path to approval is tedious with the Google Play store, but that doesn't mean that people shouldn't be able to enjoy your app... so why not put the codebase on GitHub?
After some of the horror stories I've read... about people essentially hijacking your codebase, and presenting it as their own... we are now reluctant, and don't want to share the opensource project until we actually release the (free) app on the play store.
Is this a valid concern to have? or is this something which occurs only on other platforms?
https://redd.it/1vq3ot5
@reddit_androiddev
Google policies - repetetive apps
How is it possible that google are stating you cannot publish repetetive apps and some accounts have 3-5 same apps and they are doing nothing against them?
https://preview.redd.it/ityiy6ym0qjh1.png?width=2870&format=png&auto=webp&s=218074bc235d1700ae2e6ecad3b7c6abe65d4c72
https://redd.it/1vpuep6
@reddit_androiddev
New grad here, need advice from people actually working in android
Hi guys, I just graduated from college and I'm thinking of learning Android development because I hate web and love Android very much, but I keep seeing mixed signals about where Android dev actually stands right now job-wise. That's why I'm confused right now. So my request to all the people who are working in Android right now is, what should I do? Should I learn Android development, or is it a waste of time right now, and if the answer is no, then what should I learn instead? (If in Android, even better.)
Thank you in advance.
https://redd.it/1vpydmy
@reddit_androiddev
I couldn't find a clean way to add AdMob in Compose Multiplatform, so I built one
https://meet-miyani.medium.com/why-i-built-admob-cmp-compose-multiplatform-146fed8cc4ec
https://redd.it/1vn38qd
@reddit_androiddev
the common case is exactly what stops you from finding the problem.
## What I'd check in your own app
1. Long-press a Chinese/Japanese sentence in any selectable Text. Takes 10 seconds.
2. Grep for flow { wrapping a third-party callback or execute/use scope.
Happy to go into detail on either. If someone knows of a ui-text issue already tracking the first one, or a cleaner workaround than planting breaks, I'd genuinely like to hear it — the zero-width approach works but it means the string you select from isn't byte-identical to the string you rendered, and I'm not thrilled about that.
https://redd.it/1vmzy3p
@reddit_androiddev
Where does the future lie for Android developers?
I've been working as an Android developer for 15 years now, and over a decade has flown by. From Eclipse to Android Studio to AI, I've interspersed learning Java, Kotlin, and Flutter, but I seem to be constantly falling behind. I'm exhausted, but it's still not working. Am I on the wrong path, or am I just not suited for this industry? I feel so tired!!! Where is my future, or rather, ours?
https://redd.it/1vmyh6s
@reddit_androiddev
Any way to create physical buttons for android phones to launch apps?
Anlologous to lets say a keaybord on a pc can launch the start menu once the start button is hit...or keyboard shortcuts launching some activity.
Basically a usb pluggable bunch of buttons that launch a speccific app on the android tablet.
Thanks.
https://redd.it/1vmlpah
@reddit_androiddev
Looking for advice from Android devs who have shipped complex production apps
I'm looking for advice from Android developers who have built and shipped complex production applications, especially if you've worked on AI-heavy or healthcare/medical applications.
I'm at the stage where I'm trying to make the right architectural decisions before the codebase becomes large, and I'd really appreciate hearing how people who have actually taken an app to production approached this.
A few things I'm trying to understand:
Architecture: If starting a serious Android app today, would you choose Clean Architecture + MVVM? When would you prefer MVI or another approach? How do you decide where the boundaries should be?
Modules/features: How do you structure a large project? Feature-based modules, domain/data/presentation layers, or something else?
Development → production: How do you structure environments? Separate dev/staging/prod backends? Build variants/flavors? How do you handle configuration and secrets?
Versioning & releases: What does your production pipeline look like? Git branching strategy, semantic versioning, CI/CD, automated testing, staged rollouts, feature flags, etc.
Backend/cloud: For a new production Android application, what cloud/backend stack do you generally prefer today, and why? Firebase, AWS, GCP, Azure, a custom backend, Kubernetes, etc.?
AI integration: This is probably the area I'm most curious about. How do you decide between:
Running models directly on-device
Smaller quantized/offline models
Calling a cloud inference endpoint
A hybrid approach where some inference happens locally and heavier workloads go to the backend?
On-device ML: If you've embedded ML/AI models into production Android apps, what stack do you prefer today — LiteRT/TFLite, ONNX Runtime, MediaPipe, native C++/NNAPI, something else?
Networking/backend communication: What libraries and patterns have worked well for you at production scale? Retrofit/OkHttp, Ktor, WebSockets, gRPC, etc.?
Reliability: How do you handle offline-first behavior, retries, synchronization, caching, background work, model downloads/updates, and poor network connectivity?
Security/privacy: For applications dealing with sensitive data, what architectural/security practices have you found essential beyond the obvious Android Keystore/encrypted storage/network security measures?
Observability: What do you use for crash reporting, performance monitoring, logging, analytics, backend monitoring, and AI inference monitoring?
Testing: How much of your architecture is designed around unit/integration/UI testing? What does a realistic test strategy look like for a large Android app?
Libraries/plugins: Are there any Android libraries, Gradle plugins, tooling, or architectural patterns that you now consider essential after having maintained production apps for a few years?
Most importantly, what would you do differently if you were starting the same production app from scratch today?
I'm particularly interested in answers from people who have actually maintained and shipped these systems, rather than purely theoretical architecture recommendations.
Would love to hear about your architecture decisions, mistakes, trade-offs, and lessons learned.
https://redd.it/1vmnf6d
@reddit_androiddev
I built a runtime WCAG auditor for Android — point it at any installed app and get live accessibility findings mapped to WCAG criteria
Been working on an open-source accessibility tool and figured this crowd would give the most useful feedback.
**What it does**
Install one APK, pick any other app already on your device (yours, someone else's, debug or release — doesn't matter), hit Start, and use that app normally. Every screen change gets audited live, and results stream into a web dashboard grouped by screen with a running severity count.
**No instrumentation of the target app**
It uses an `AccessibilityService` to read the accessibility node tree of whatever package you point it at — the same mechanism TalkBack uses. Nothing to add to the target's build, no SDK to integrate, no source access needed.
**Under the hood**
* Runs Google's [Accessibility Test Framework](https://github.com/google/Accessibility-Test-Framework-for-Android) against the live node tree
* Maps every ATF finding to a WCAG 2.1 success criterion + conformance level (A/AA/AAA) — e.g. `TextContrastCheck` → 1.4.3 AA
* Grabs a screenshot per issue where supported (API 30+)
* Shows live device connection status, so you can't mistake a disconnected phone for a clean audit
* Exports a shareable HTML report or raw CSV when you're done
**Everything's local** — the dashboard talks to the phone over `adb reverse`; nothing leaves the machine.
**Repo:** [https://github.com/vivekpanchal/android-wcag-auditor](https://github.com/vivekpanchal/android-wcag-auditor) (Apache 2.0)
Genuinely want scrutiny on the WCAG mapping (`WcagMapping.kt`). I documented the two spots where the mapping is a strict superset rather than an exact match (e.g. touch target size uses Android's 48×48dp Material guideline vs. WCAG's 44×44 CSS px) rather than pretend it's 1:1.
If you audit apps for a living — where would this fit into your workflow, or where does it fall short?
https://redd.it/1vmhxzg
@reddit_androiddev
how hard is it to compete with vibe coders for junior devs?
A question for beginner developers: how hard is it to compete with vibe coders?
I'm actually still at a pre-intern level, and I've been trying to avoid using AI because I barely know anything yet – I've only written one medium-sized project so far. Ideally, at work, I'd like to stick to manual coding in areas where I'm not yet confident and haven't honed enough to automate. But given the current demands from employers, I get the feeling I'll have to vibe code 24/7 and only have a vague clue about what the generated code is actually doing.
What are your observations on this? Is there still room to learn on the job, or is all work just mindless button-mashing on "generate" and that's it?
https://redd.it/1vmh98y
@reddit_androiddev
Client-Side Secret and Token Security on Android: Reality and Defense in Depth
https://ytapps.net/articles/e3eebefa-e365-46eb-8b22-9cef6eba2ba2
https://redd.it/1vmdrii
@reddit_androiddev
Stuck in circular dependency: BillDesk merchant verification requires live app ↔ Play Store requires billing/testing before production
I'm an individual Android developer in India trying to enable Google Play in-app billing, and I've hit what feels like a chicken-and-egg problem. Wanted to check if anyone's solved this before.
The loop I'm stuck in:
To get Google Play merchant account approved, BillDesk (Google's KYC partner for India) requires a live, publicly accessible Play Store app link
To get an app to production/public on Play Store, Google requires closed testing (12 testers, 14 days) — that part I can do without billing
But my actual goal is to launch an app with subscriptions from day one, and I assumed I needed billing implemented before going live
What I've done so far:
I have one live app already (unrelated app, used it to satisfy BillDesk's "live app" requirement)
Got rejected once for "Brand details incorrect" and "Products/services not clearly defined" — resubmitted with clearer business description tied to that live app
My actual target app (with subscriptions) is still in closed testing, working toward the 12 testers / 14 days requirement
My question:
Is it standard practice to launch v1.0 of an app without monetization, then add in-app billing in a later update once the merchant account is sorted? Or is there a way to get merchant verification approved in parallel with app development, using a placeholder/different live app the way I'm currently doing?
Also — for those who've been through BillDesk KYC as an individual developer, how long did verification typically take once resubmitted correctly, and any tips on what "Brand details" they expect for individual (non-company) developers?
Appreciate any pointers from people who've actually shipped a paid Android app from India recently.
https://redd.it/1vm9ikk
@reddit_androiddev
CV count objects
So I tried making a prototype for counting objects on photo, like y'know all the fake apps
But I need smth simpler like counting bolts and nuts, etc
So I made a well lit photo on a contrasting background, all objects are in one layer but still it sometimes detects parts of the object or merges two neighbours touching
Can anyone point me to a guide or an alternative solution? Maybe there's some neural model that can run on phones?
Like something basic, take a photo, tap one sample, it count how many
Thanks in advance 🙏🫶
https://redd.it/1vm84qh
@reddit_androiddev
4 months in — our "typing too fast" bug was never about speed. It was taps landing on the keyboard.
Follow-up to the DeviceLab driver post. v1.1.23 shipped, and the interesting part isn't a feature — it's that we found four places where the runner reported success while doing nothing.
# The one that had been lying to us for months
Some of you reported flaky typing. u/bid-yut here: it was so fast that the pin entry kept failing. An Expo user couldn't run iOS at all because text came out jumbled. Both times we shipped a speed knob — --wait-for-idle-timeout, then typingFrequency. Both times it helped a bit and the reports kept coming.
It was never speed. inputText with keyPress: true injects global key events into whatever holds focus, and never verifies the field you tapped received them. When the tap misses, the text lands elsewhere and both steps report success.
The common way the tap misses: the target is behind the soft keyboard. We had a guard, with two holes. It only ran if the previous step was an input step — so a keyboard raised by an autoFocus field was never checked. And our driver allowed a 50px margin below the reported keyboard top.
That margin was wrong. Measured on a Pixel 4a: the IME's touchable region starts at y=1428. A tap at y=1439 is swallowed. y=1414 focuses the field. The suggestion strip eats touches exactly like the keys do. UIAutomator2 never had that margin, which is why this only ever showed up on our own driver.
# The one with the best numbers: swipes
Reported as "works locally, fails on CI." We assumed flake. It isn't — adb shell input swipe always lifts the pointer while it's still moving, so the view flings, and fling momentum is computed from event timings that shift with machine load.
Spread across identical runs, same device, same flow:
|duration|spread|
|:-|:-|
|300ms (default)|114px|
|1200ms|22px|
|6000ms|14px|
That's why duration: looked useless — it helps, never enough for a screenshot assertion. Second cause: a scroll container ignores movement until it passes the touch slop, then re-bases to wherever the pointer is, discarding everything moved so far — not just the slop.
Fix was to stop using input swipe and inject in-process from the on-device agent: spend the slop up front so the discarded amount is constant, then hold the pointer still before lifting so nothing flings.
|path|marker y over 4 runs|spread|
|:-|:-|:-|
|adb input swipe|1053, 991, 1029, 1055|64px|
|agent|870, 870, 870, 870|0px|
Two more of the same shape. point: on doubleTapOn/longPressOn was parsed from your YAML and thrown away by every driver — so point: "20%, 50%" tapped the element centre, which on a text editor is blank space past the end of the text, where a double-tap selects nothing. And on iOS, inputText tapped to focus then typed immediately with nothing checking the text arrived.
# What's still broken
Swipe determinism is DeviceLab-only. UIAutomator2 still goes through `adb input swipe`.
New setDarkMode/assertDarkMode don't work on physical iOS devices — simctl has no device equivalent. Web isn't wired either.
`--retry-failed` — u/satya164 asked months ago, I said "next", still not shipped.
Two Appium bugs diagnosed but unfixed: a permission loop firing 32 blocked shell calls on hosts that block adb_shell, and newSession: true losing the cloud job's name and status.
# If you upgrade
Taps on keyboard-covered elements now fail instead of silently landing on the keyboard — that may surface failures in flows that were quietly tapping the wrong thing. Swipes scroll further, so re-record screenshot baselines. And the swipe fix ships a rebuilt on-device agent, so a runner-only update won't deliver it.
github.com/devicelab-dev/maestro-runner
Real question: how do you tell "the test failed" apart from "the runner lied"? We only found these because one user filed four detailed reports in a week. I don't have a good automatic story for this class
Created a cli tool and a mac app for viewing recomposition count of composables.
I wanted to debug recomposition via an AI coding agent but no tool existed, so I built one — then a visual version too.
Recomposition Inspector (CLI) — attaches to a debuggable app, reports live recomposition/skip counts per Composable. Drives the same official UI Inspector protocol Android Studio's Layout Inspector uses, headless.
Recomposition Viewer (macOS app) — same backend, plus a visual hierarchy tree and a live device preview you can click into.
Do try it out - https://github.com/balvinderz/recomposition\_viewer#installing
Thank you
https://redd.it/1vq3asj
@reddit_androiddev
My Storage after becoming an Android developer!
https://redd.it/1vq2ggq
@reddit_androiddev
Implemented a poster editor. Have tips to share
https://redd.it/1vq0j4p
@reddit_androiddev
Kotlin Blocked Permissions
Was wondering if there was a way to deny certain permissions in Kotlin?
Initialy i created my app in npm react expo and expo (https://docs.expo.dev/guides/permissions/) supports this with the blockedPermissions.
Is there something similair for kotlin?
If that's not possible is there a way to check this in a PR if the permissions are changed compared to Main?
https://redd.it/1vpvzsm
@reddit_androiddev
Android devs: What do you think about the new Apps Experience Program (AEP)?
Title: Android devs: What do you think about the new Apps Experience Program (AEP)?
Hey 👋
https://preview.redd.it/oj5ymyuag2jh1.png?width=512&format=png&auto=webp&s=9be437fc37ca976336fcf5b89eb0c7830ec741b9
I’m trying to gather some feedback from Android developers about Google Play’s new Apps Experience Program (AEP).
For anyone who hasn’t looked into it yet, AEP is an optional program where apps that meet a set of experience and technical guidelines can qualify for a reduced Google Play program rate card.
What caught my attention is the scope of the requirements. Depending on the app/use case, they cover things like:
Passkeys / phishing-resistant authentication
Restore Credentials
Engage SDK
Adaptive layouts and support for additional form factors
Stability, ANRs, memory usage, and jank thresholds
Jetpack Compose
Android platform standards
Feature availability between Android and other platforms
In return, qualifying apps can get reduced rates for certain transactions.
I’m curious how this looks from the perspective of developers and teams who would actually have to implement and maintain these requirements.
A few things I’d love to hear from you:
1. Were you already aware of AEP?
2. Does the reduced rate make participation attractive enough?
3. Which requirements look reasonable, and which ones concern you?
4. Are there requirements that would be particularly expensive or difficult for your app/team?
5. If you maintain a large production app, do you think you’d actually enroll?
6. If you’re an indie developer or work on a smaller app, does this program feel relevant to you?
7. Is there anything about the program or guidelines that you find unclear?
I’m especially interested in practical feedback from people maintaining real Android apps, rather than whether the program sounds good or bad in theory.
Docs: https://developer.android.com/distribute/aep
Would love to hear your thoughts — positive, negative, or somewhere in between. I’m trying to get a better picture of how the Android developer community views the program.
https://redd.it/1vn03il
@reddit_androiddev
Compose's WordIterator makes a long press select the entire sentence in Chinese
Upfront disclosure: I found this while shipping a Compose Multiplatform app, but this bug is pure Android — it's in androidx ui-text and it reproduces in any Compose app with a SelectionContainer or a selectable Text. If your app has Chinese, Japanese or Korean users, you probably have it right now and haven't noticed.
## The symptom
Long-press a word in Chinese prose to select it. Instead of the word, you get the entire clause, stopping only at punctuation. Latin text in the same app behaves perfectly.
That's why this survives review: if you and your QA read English, the selection handles look flawless.
## The causeWordIterator.nextBoundary / prevBoundary skip any boundary whose two sides are both letters or digits. That rule was added for a good reason — a letter↔emoji seam shouldn't split a word — but the check is on character class, and every ideograph is a letter.
So in Chinese, every boundary between two characters qualifies as "letter on both sides", every boundary gets skipped, and the expansion runs until it hits punctuation or the end of the paragraph. English stops at its spaces (spaces aren't letters), which is why the bug is invisible in Latin scripts.
In my testing this is present from 1.8.0 through at least 1.12.0-beta02, and there's no public API to opt out of the behavior.
## The workaround
Since you can't change the iterator, you change the text: plant zero-width breaks at Han–Han seams so the iterator has boundaries it won't skip. ICU already knows where the words are — it segments Han by dictionary off the script, not the locale, so the default locale is fine and the boundaries come out identical under zh and en:
fun cjkWordBoundaries(text: String): List<Int> {
// Latin-only prose already selects correctly and is the common case — skip the scan entirely.
if (text.codePoints().noneMatch(::isHan)) return emptyList()
val iterator = BreakIterator.getWordInstance()
iterator.setText(text)
val offsets = mutableListOf<Int>()
var offset = iterator.first()
while (offset != BreakIterator.DONE) {
if (text.isHanSeam(offset)) offsets += offset
offset = iterator.next()
}
return offsets
}
/** Interior offsets only, and only where BOTH sides are Han. */
private fun String.isHanSeam(offset: Int): Boolean {
if (offset <= 0 || offset >= length) return false
return isHan(codePointAt(offset)) && isHan(Character.codePointBefore(this, offset))
}
private fun isHan(cp: Int): Boolean = Character.UnicodeScript.of(cp) == Character.UnicodeScript.HAN
Text.fun stream(): Flow<Event> = flow {
client.prepareGet(url).execute { response -> /* parse */ emit(event) }
}
flow {}'s emit enforces context preservation — you may not emit from a coroutine context other than the collector's. Ktor's execute {} block gives you a scope that may run on a different dispatcher. On OkHttp it happens to run in-context, so the contract is never violated and everything passes, forever.channelFlow {} + send is the fix — send is safe across contexts.)WordIterator bug: the platform's forgiving behavior in
Читать полностью…
Some recent works on my launcher project Droidberry Launcher
https://redd.it/1vmxhmk
@reddit_androiddev
Petition · Keep Android Open (Stop Google from limiting APK file usage)
https://c.org/DDRVvdBS7f
https://redd.it/1vmp6sa
@reddit_androiddev
[Help]: Jetpack Compose component flashing issue when list changes
https://redd.it/1vmia5g
@reddit_androiddev
Jetpack Compose 1.12
https://android-developers.googleblog.com/2026/08/jetpack-compose-august-2026-release.html
https://redd.it/1vmiyvt
@reddit_androiddev
Cross-module Compose screens losing recomposition skipping even though nothing looks wrong
Ran into this recently and it took lot of time and iterations to track down. Sharing in case it saves someone a debugging cycle.
The Symptom:
A screen renders perfectly in isolation (single module/preview). Once wired through an app boundary via :feature:x-impl, scrolling drops frames. Layout Inspector shows full recomposition on every row, not just modified items.
The Root Cause:
The underlying domain model (containing a standard List<String>) gets marked unstable the moment it crosses a module boundary where the defining module isn't compiled with the Compose compiler plugin (e.g., a pure-Kotlin :core:model). No stability metadata crosses the boundary, so Compose falls back to unstable and loses skipping for the entire class.
Even with Strong Skipping Mode, passing an unstable collection across an un-instrumented boundary causes runtime equality checks to fall back to instance comparison (===), triggering layout invalidation on every state change.
Why Standard Workarounds Didn't Scale:
Annotating everything with @Immutable, migrating to kotlinx.collections.immutable, or creating wrapper DTOs work, but they quickly pollute pure domain modules with Compose dependencies or force massive refactoring across network/DTO layers.
The Pragmatic Fix:
We set up a stabilityConfigurationFile at the root, wired through the Compose Gradle plugin to explicitly declare stable packages. One central file, zero per-class annotation tax.
Footgun Warning: If you point this configuration at a package containing var properties, you are instructing the compiler to skip recomposition on mutating state—your UI will silently stop updating.
I put the full write-up with the bytecode-level breakdown [here\] and dumped the diagnostic script I used to verify before/after stability rates on GitHub [here\].
Curious if others have hit this in multi-module Compose codebases—did you migrate to immutable collections everywhere, or go the compiler config route?
https://redd.it/1vmcrvh
@reddit_androiddev
9 years into Android, 3 months without a job, and I’m not sure I still want this field. How did you get unstuck?
Long-time Android dev here 9+ years, senior level. Three months without a job now, and applications just aren't converting.
The one real interview I got this stretch ended when the questions moved into current platform internals I hadn't touched hands-on in a while, not a knowledge gap exactly, more a "haven't built this recently" gap. That one stung more than a flat-out no would have.
Underneath that: I'm not sure I'm as into straight Android work as I used to be, and I think it shows. Part of me wants to pivot toward AI/on-device ML. Part of me knows that switching now, three months in, might just be running from the hard part instead of actually fixing it.
If you've been through a stretch like this as a job search stall, doubting the field itself, or an actual mid-career pivot. how did you tell the difference? What actually got you unstuck?
https://redd.it/1vmcg2u
@reddit_androiddev
Stuck in circular dependency: BillDesk merchant verification requires live app ↔ Play Store requires billing/testing before production
I'm an individual Android developer in India trying to enable Google Play in-app billing, and I've hit what feels like a chicken-and-egg problem. Wanted to check if anyone's solved this before.
The loop I'm stuck in:
To get Google Play merchant account approved, BillDesk (Google's KYC partner for India) requires a live, publicly accessible Play Store app link
To get an app to production/public on Play Store, Google requires closed testing (12 testers, 14 days) — that part I can do without billing
But my actual goal is to launch an app with subscriptions from day one, and I assumed I needed billing implemented before going live
What I've done so far:
I have one live app already (unrelated app, used it to satisfy BillDesk's "live app" requirement)
Got rejected once for "Brand details incorrect" and "Products/services not clearly defined" — resubmitted with clearer business description tied to that live app
My actual target app (with subscriptions) is still in closed testing, working toward the 12 testers / 14 days requirement
My question:
Is it standard practice to launch v1.0 of an app without monetization, then add in-app billing in a later update once the merchant account is sorted? Or is there a way to get merchant verification approved in parallel with app development, using a placeholder/different live app the way I'm currently doing?
Also — for those who've been through BillDesk KYC as an individual developer, how long did verification typically take once resubmitted correctly, and any tips on what "Brand details" they expect for individual (non-company) developers?
Appreciate any pointers from people who've actually shipped a paid Android app from India recently.
https://redd.it/1vm9kq7
@reddit_androiddev
yet.
https://redd.it/1vlhtr0
@reddit_androiddev
Can anyone help me i am making a andriod app and facing some issues ?
I don’t have android mobile and facing expo version for app and apple mobile expo version is there any other way to see the application i am a newbie in this area no experience and so so little knowledge …
https://redd.it/1vm51mx
@reddit_androiddev