Answers · Mobile

How do I submit an Android app to Google Play for review?

Generate an upload key, build a signed Android App Bundle from mobile/android, and upload it in the Play Console. Google signs the delivered app with its own key, so your upload key is recoverable if lost. Budget most of the time for the store listing and the data safety form, not the build.

The build

bin/check
open mobile/android

Build a release App Bundle, not an APK. Play requires the bundle format for new apps, and it is what lets Google serve device-specific downloads.

Keep the upload keystore and its password somewhere durable. With Play App Signing, Google holds the key that actually signs what users install, so a lost upload key can be reset through support. That is a meaningful safety net and it only exists if you enrolled.

The listing is the long part

  • Short and full description.
  • Screenshots for phone, and for tablet if you declare support.
  • A feature graphic.
  • A privacy policy URL that resolves. Your app already serves one at /terms.
  • The data safety form, declaring what you collect and why.

The data safety form is the one that gets rejections, because it has to match what your app actually does. If you use analytics, say so.

Test tracks first

Internal testing puts a build in front of a list of email addresses within minutes and does not require review. Use it to check the real signed artifact on a real device before anything goes to production. A bug that only appears in a release build is common enough to plan for.

The payment rule applies here too

Digital subscriptions must use Play Billing. The shells handle it through the marker paths declared in config/routes.rb, and your server verifies the receipt through app/adapters/play_store.rb. Showing a Stripe button inside the app is the rejection to avoid, and hotwire_native_app? is how you avoid it.

Review times

Usually faster than Apple's, occasionally much slower for a new developer account. New accounts can also face an extended testing requirement before production access. Check the current rules when you create the account, because this has changed recently and affects your timeline more than anything in the build.

Related questions

What gets a web view app rejected from the App Store?

Two reasons account for most rejections of apps like this. Linking out to Stripe or any external checkout for digital goods, which the guidelines prohibit. And minimum functionality: an app that reviewers judge to be a website in a wrapper with nothing native about the experience. Both are avoidable before you submit.

Can I put a Rails app in the App Store and Play Store?

Yes. Hotwire Native wraps your existing web views in a native shell, so the screens you already built are the screens in the app. One Shot ships both shells in mobile/ios and mobile/android. The rule you cannot route around is that digital subscriptions have to use the platform's in-app purchase, not Stripe.

Do I have to use Apple's in-app purchase for subscriptions?

Inside the app, yes, for anything digital your users consume in the app. Apple takes 15 to 30 percent and rejects apps that link out to an external checkout for it. On the web, in a browser, you keep using Stripe. The same account can be entitled by either path.