Which Android versions and devices will the app support?
That is a decision to make deliberately, from your own numbers rather than a default. Supporting older versions costs engineering time; dropping them costs users. We look at what your customers actually run, set the floor there, and test on the spread that matters to you: cheap handsets, tablets, and where relevant the kiosks and rugged devices your staff carry, which behave nothing like a developer’s phone.
Why Kotlin rather than Java?
Kotlin is what Google builds Android for now: the documentation, the samples and the newer libraries are written in it first, and the language removes a whole class of null-related crashes by making them a compile error. Existing Java code keeps working alongside it, so an older app does not need rewriting to gain the benefit; new work is simply written in Kotlin.
Can the app work without a connection?
On Android it usually has to. Staff use these apps in warehouses, basements and vans, and an app that needs a connection is an app they stop trusting. We build offline first where the job calls for it: the work is recorded locally, the sync resolves when coverage returns, and the conflict rules are decided in the design rather than discovered in production.
How do you handle Play Store releases?
Through staged rollouts rather than all at once. A release goes to a slice of users first, with the crash reporting watched before it widens, so a bad build reaches a fraction of your users rather than all of them. Internal and closed testing tracks let your own team see a release before customers do.
Why does background work stop on some phones and not others?
Because several manufacturers add their own battery management on top of Android's, and it is more aggressive than the platform's own rules. An app that syncs happily overnight on a Pixel can be frozen by morning on a handset from a manufacturer that decided it was idle. This is the single most common Android defect that never appears in testing, because testing happens on the developer's phone. The fixes are known, using the platform's scheduled work APIs rather than long-running services, declaring work correctly, and where it genuinely matters, guiding the user through the manufacturer's own exemption screen, but they have to be chosen deliberately.
Do you build for tablets, kiosks and rugged handhelds too?
Yes, and they are worth naming separately because they are not just bigger phones. A tablet needs layouts that use the width rather than stretching a phone screen across it. A kiosk needs lockdown so the device does one job and cannot be turned into a browser, plus a plan for what happens when someone unplugs it. A rugged handheld usually has a hardware scan trigger and a barcode engine that needs integrating properly rather than emulating a keyboard. Each of those is a design decision, not a screen size.
Who owns the Play Console account and the signing key?
You do, and on Android the signing key deserves particular attention. Historically, losing it meant you could never update your own app again, which is an outcome businesses have genuinely suffered. Play App Signing removes most of that risk by having Google hold the release key, but the developer account, the upload key and the enrolment still need to sit in your company's name with more than one person able to reach them. We set that up at the start rather than at handover.
Can you take over an existing Android app?
Usually, and the assessment is short. We want a clean build from a fresh checkout, the Play Console access, the signing arrangement and whatever the previous team wrote down. Older apps often mix Java and Kotlin, or Views and Compose, and that is fine: both interoperate and there is no requirement to rewrite working code to gain the benefit of the newer approach. What actually decides takeover versus rebuild is whether the app's data and background layers can be reasoned about, not which language they are written in.