How cross-platform apps actually work, and the plan to a public Play Store link for the AuDHD folks asking for it. Plain language, no jargon.
No paywall in the betaNo RevenueCat neededSame app as iPhone
1 It's one app, not two
The thing that makes this feel confusing at first: you are not building two separate apps.
One codebase
the Maddy repo
→
iPhone app
built for iOS
Android app
built for Android
About 95% of the code is shared. Both apps come from the same source.
You write a feature once. It becomes the iPhone app and the Android app from the same code. The only "separate" parts are tiny platform-specific tweaks (like the Android keyboard fix, which only Android needed) and each store's own setup. Day to day, one change lands on both.
2 Two ways to ship a change
This is the piece most people never get told. There are two totally different speeds.
Most changes
Over-the-air
New screens, wording, layout, logic. The app people already have quietly updates itself the next time they open it. Both iPhone and Android at once, in minutes, no app store, no waiting.
Occasional
A new build
New permissions or deep native features (like the keyboard fix, or a system upgrade). These go through the stores. Slower, but comparatively rare.
So most of the time you change something once and push it over-the-air, and everyone on both phones has it shortly after. You only cut fresh store builds for the occasional deep change.
3 How testers actually get it
The download link that gave you a headache is a developer shortcut. It is not how you hand an app to real people.
Those "unknown sources" and security warnings are Android correctly protecting people from apps that skip the store. For an AuDHD tester, that friction is a dealbreaker. Your instinct was right: it's the wrong tool for testers. The right way is each store's own beta channel.
iPhone testers
Android testers
The tool
TestFlight (Apple's beta app)
Google Play testing track
Install
tap a link, install, done
tap a link, installs from the Play Store, done
Updates
automatic
automatic
Scary warnings
none
none
You already have the iPhone side. The Android equivalent, the real "Android TestFlight," is a Play testing track. That is what the Reddit folks will use, not a sideloaded file.
4 The Android tracks, and which door is public
Google Play has a ladder of testing rooms. You pick how public you want to be.
Internal
Small and fast. Up to 100 people you add by email. Live within minutes, no full review. Smooth Play Store install. Great for a first ring while you prep the public listing.
Closed
A bigger invited group. Email lists or a Google Group. Optional middle step.
Open
Public. This is the one for Reddit.Anyone with the link joins and installs straight from the Play Store. Your listing becomes publicly findable. Needs a finished store listing plus a Google review.
Production
The full public launch on the Play Store. Later.
Good news for us: because the app is registered under your LLC (an organization account), you skip the painful new-account rule that forces personal accounts to run a 12-tester, 14-day closed test first. We can go straight to open testing.
5 The plan
Same no-paywall build for both. Two phases so people can start soon while the public door opens.
Phase 1 · about an hour
Internal testing, for a first small ring
Put the no-paywall build on Internal testing so a handful of people install it cleanly from the Play Store (no sideload, no warnings) right away. This also lets us shake out anything Android-specific on real devices before it goes public.
Blocked by: almost nothing. A short setup and an upload.
Phase 2 · a few days incl. Google review
Open testing, the public link for Reddit
Complete the store listing and content declarations, upload the same build to the Open track, and submit. Once Google approves, you get a public opt-in link that installs Maddy straight from the Play Store. That's the link you post to the AuDHD community.
Blocked by: the store listing + declarations below, then a review wait.
Reused from iPhone: most of the store listing (screenshots, descriptions, privacy policy, the data-safety answers) already exists from your App Store submission, so this is less work than it looks.
6 The checklist
Tap to tick items off. Your progress is saved on this device.
Build · I do this
✓Create the no-paywall beta branchAndroid fixes + billing switched off + the beta channel, kept unmerged from the App Store version
✓Cut the Android app bundle (.aab)Targets Android 15 (API 35), which meets Google's current bar. Signing key already set up.
Play Console one-time setup · you do this, ~30 to 60 min
✓Store listing textApp name, short description, full description (reuse the App Store copy)
✓Graphics512×512 icon, 1024×500 feature graphic, at least 2 phone screenshots (reuse iPhone shots)
✓Category + contact details
✓Privacy policy URLSame one you used for the App Store
✓App accessSince Maddy needs a login, give reviewers a demo account so they can get in
✓Ads declarationNo ads
✓Content rating questionnaireThe IARC form, a few minutes
✓Target audience & content
✓Data safety formWhat data Maddy collects. Mirror your iOS App Privacy answers.
✓Health / financial / government / news declarationsAnswer only the ones that apply (likely a quick "no" to most)
Go public · we do this together
✓Upload the .aab to the Open testing track
✓Write the short "what to test" note
✓Roll out and submit for reviewA few days for a first public release
✓Grab the public opt-in link once approved
✓Post it to the AuDHD community 🎉
Optional head start · do it now if you want people in sooner
✓Put the same build on Internal testing + add a few emailsClean Play Store install for a first ring while the public review runs
7 Where we already are
✅ Play developer account registered + verified under your LLC (skips the 12-tester gate)
✅ First Android build succeeds; signing key auto-managed
✅ Keyboard, orientation, and back button all fixed on Android hardware
✅ No-paywall path confirmed, so none of the billing work has to be finished first
⏳Left to do: the Play Console listing + declarations above (mostly reused from iPhone), then upload + review