๐Ÿš€ App Publishing, Monetization, and Product Development

How to Prepare an Android App for Production

'It works on my phone' is not a release criterion. Production readiness covers build configuration, observability, performance, accessibility, security, privacy, and a plan for when things go wrong. Use this checklist before your first release and every major one after.

โœ๏ธ Yunok Tech ๐Ÿ“… Updated โฑ 3 min read ๐ŸŽฏ Intermediate
On this page
  1. Readiness areas
  2. Build configuration
  3. Observability
  4. Performance
  5. Quality and accessibility
  6. Security and privacy
  7. Localisation
  8. Rollout and recovery
  9. Right-size it
  10. Frequently asked questions
  11. Conclusion

The first week after launch is when you learn what you didn't test: the crash on a specific manufacturer, the login loop after a password change, the screen that breaks in Hindi. Preparing for production means reducing those surprises and making the remaining ones visible and recoverable.

Readiness areas

Production readiness areas Eight readiness areas around the release: build configuration, observability, performance, quality and accessibility, security, privacy and compliance, localisation, and rollout and recovery. Release Build config Observability Performance Quality + a11y Security Privacy Localisation Rollout plan
Each area has a short checklist. Missing any one can turn a launch into firefighting.

Build configuration

  • โ˜ Correct applicationId, versionCode (always increasing) and versionName
  • โ˜ targetSdk meets the current Play requirement; behaviour changes tested
  • โ˜ R8 and resource shrinking enabled; minified build tested end to end
  • โ˜ Release build is not debuggable; debug-only tools (LeakCanary, StrictMode) excluded
  • โ˜ Production API endpoints and config; feature flags have safe defaults
Build types with distinct configGradle KTS
android {
    buildTypes {
        debug {
            applicationIdSuffix = ".debug"            // install side by side with release
            buildConfigField("String", "API_BASE", "\"https://staging.api.example.com/\"")
        }
        release {
            isMinifyEnabled = true
            isShrinkResources = true
            buildConfigField("String", "API_BASE", "\"https://api.example.com/\"")
        }
    }
}

Observability

  • โ˜ Crash reporting (for example Crashlytics) with R8 mapping files uploaded
  • โ˜ Analytics for key funnels, with privacy-respecting events. See Analytics and Crash Reporting
  • โ˜ Non-fatal error logging for important failures (payments, sync)
  • โ˜ Android vitals reviewed, with alerts configured

Performance

  • โ˜ Cold start measured on a mid-range device; Baseline Profile included
  • โ˜ No StrictMode violations on main flows; no jank in key lists
  • โ˜ App size checked with APK Analyzer

Quality and accessibility

  • โ˜ Loading, empty, error and offline states on every data screen
  • โ˜ Rotation, dark mode, large font, small and large screens checked
  • โ˜ TalkBack pass on key flows; content descriptions; touch targets
  • โ˜ Play Console pre-launch report reviewed

Security and privacy

  • โ˜ No secrets in the APK; release logging scrubbed
  • โ˜ Exported components audited; TLS only
  • โ˜ Privacy policy published; Data safety form accurate, including SDKs
  • โ˜ Account deletion available if users can create accounts

Localisation

  • โ˜ All user-facing strings in resources; translations reviewed by native speakers
  • โ˜ Long-text languages and RTL layouts checked; numbers, dates and currency formatted per locale

Rollout and recovery

  1. Release to internal, then closed testing, then a staged production rollout.
  2. Define halt criteria: for example, a crash-free user rate dropping below your baseline.
  3. Be able to disable features remotely (feature flags or remote config).
  4. Have an in-app update prompt strategy for critical fixes.
  5. Prepare support channels and review responses.

Right-size it

Side project

Build config, crash reporting, basic accessibility, privacy policy, staged rollout.

Startup MVP

Add analytics funnels, feature flags and performance baselines.

Enterprise or fintech

All of the above, plus security testing, compliance reviews and formal incident response.

Frequently asked questions

What's a good crash-free rate target?

Aim as high as you can, and watch Google Play's bad-behaviour thresholds for crash and ANR rates in Android vitals. Track the trend per release.

Should I use in-app updates?

Play's in-app updates API lets you prompt users to update, which is useful for critical fixes. Use flexible updates for most cases and immediate updates sparingly.

Do I need a staging backend?

Strongly recommended, so testers and CI don't touch production data.

Conclusion

Production readiness is a checklist across build, observability, performance, quality, security, privacy, localisation and rollout. Run it before every major release, and you'll spend launch week improving the app instead of firefighting.

Next step: master the console you'll live in after launch with Google Play Console: A Developer's Guide.

Official references

๐Ÿ“ฑ Apps built by Yunok Tech

Real Android apps on Google Play, free to download.

See all our apps โ†’

Ready to build real Android applications?

Shipping is a skill of its own. Learn to take an app from a working build to a polished, signed release that real users can install from Google Play.

Move beyond theory and strengthen your Android development skills with Yunoktech's Android course. Learn core concepts, practical implementation, modern Android development techniques, and the reasoning behind building maintainable applications.

Explore the Android course and take your next step as an Android developer.

Share: LinkedIn X / Twitter WhatsApp