Frequently Asked Questions
How do we handle Android device fragmentation?
Set min SDK API 26 (Android 8.0) to reach 95%+ of active devices while avoiding very old API limitations. Test on physical mid-range devices (4GB RAM, MediaTek/Snapdragon 600-series) — emulators do not replicate OEM battery management. Use Android Vitals in Play Console to monitor crash rate and ANR rate by device model.
What is an Android App Bundle (AAB)?
AAB is the required Play Store format since August 2021. Unlike APK, it contains all resources and lets Google Play generate device-specific APKs — reducing download size by 15-20%. Required for new apps. Google Play handles the APK splitting by screen density, ABI (CPU architecture) and language.
How does background work actually work?
Android has complex restrictions on background work to save battery. WorkManager is the solution for deferrable background tasks — it schedules work that is guaranteed to run eventually, even after device restart, respecting Doze mode and App Standby buckets. Foreground Services (with persistent notification) for ongoing work the user is aware of. Direct boot (runs before device unlock) for critical startup work.
How do we pass Play Store review?
Key compliance areas: target API level must be within 1 year of current (currently API 34 minimum for updates), Data Safety section must accurately declare all data collection, permissions must be justified and minimised, apps with sensitive permissions (SMS, location) require a Privacy Policy. Play Console pre-launch report catches crashes on Google's device test matrix before review.
What is the Play Integrity API?
Play Integrity API (replacing SafetyNet) provides attestation that your app is running on a genuine Android device, installed from Play Store, and that the device passes Play Protect device integrity. Used for: detecting rooted devices, verifying app is not modified, preventing emulator-based abuse. Returns MEETS_STRONG_INTEGRITY (verified hardware), MEETS_DEVICE_INTEGRITY (software-only) or MEETS_BASIC_INTEGRITY.
How do we test on many devices?
Firebase Test Lab provides physical device testing on Google's device matrix — run Espresso instrumented tests on hundreds of real devices. Robo test (automated exploration) can catch crashes without writing test code. Focus manual testing on your top devices by user base (Android Vitals shows device breakdown) plus one low-end device representing bottom 20% of your user hardware.
Native Android vs React Native?
Native Kotlin/Compose for apps where: native performance matters (animations, camera, gaming), deep platform integration is required (HealthConnect, BLE, NFC, Android Automotive), or the Android experience is a primary differentiator. React Native for: shared web/mobile codebase, teams with React expertise, apps without heavy platform API requirements. Kotlin Multiplatform Mobile (KMM) for sharing business logic while keeping native UIs.
How do in-app purchases work on Android?
Google Play Billing Library handles in-app purchases and subscriptions. Subscriptions have base plans and offers (free trial, introductory price). Server-side verification via Google Play Developer API is required — never trust client-side purchase confirmation. Real-time Developer Notifications (RTDN) via Pub/Sub for subscription lifecycle events (renewal, cancellation, billing issues).