perfectdesign.

Mobile platforms

Android app development

Android is not one device. Scoping an Android app is mostly the work of deciding which devices, versions and conditions you will stand behind, and writing down what happens everywhere else.

In short

An Android scope has to settle six things: the recurring task and who performs it, the device and version boundary you will support and test, the device capabilities and business systems the app must reach, how it behaves offline and in the background, how it reaches Google Play and stays eligible there, and who holds the developer account and the signing keys afterwards. The wide device range is the part that catches people out. It is manageable once you treat support as a boundary you choose deliberately rather than a promise to work everywhere.

Written for a business owner or product lead scoping an android app and deciding what it must support · 10 min read

What an Android scope has to settle first

This page helps you decide six things before anyone writes code: who uses the app and for which repeating task, which devices and Android versions you will support, which device capabilities and business systems it must reach, how it behaves with no signal and in the background, how it gets onto Google Play and stays eligible there, and who owns the developer account and signing keys afterwards. The customer-facing screen is usually the smaller half of the work. The staff tool behind it, the records both write to and the permissions around them tend to decide the real scope.

One invented example runs through the page. HarborFix is a fictional appliance-repair service. Maya, a customer, submits a repair request. Arif, a field technician, opens the assigned job, is asked for camera access and records evidence of the repair. Lina, an operations coordinator, reviews the synchronised job and moves it on. A job runs through submitted, assigned, in progress, evidence pending sync, ready for customer and closed. HarborFix is illustrative only. The roles, states and policies are assumptions written to show the shape of the decisions, not a project we delivered.

Android-specific choices sit inside a larger decision: whether an installed app is the right surface at all, and what the whole product has to include. If that is still open, mobile app development covers it and comes first. This page assumes you have answered yes and that Android matters to your users.

The numbers an interface has to hit. These are not opinions about taste. They are the published minimums, and they are what we check every screen against. A full text version follows.

The numbers an interface has to hit

Published statistic. These are not opinions about taste. They are the published minimums, and they are what we check every screen against.

Source: W3C: Web Content Accessibility Guidelines 2.2. Reviewed .

Read the graphic as text
  • Body text contrast: 4.5:1. Minimum ratio against its background, WCAG 2.2 Level AA
  • Large text contrast: 3:1. From 18pt, or 14pt bold
  • Tap target: 24px. Minimum 24 by 24 CSS pixels, or 24 pixels of clear space around it
Download this infographic (SVG)

Which devices and Android versions will you support?

Support is a boundary you choose, not a promise to work everywhere

Android hardware varies more than any other consumer platform: screen sizes and aspect ratios, foldables and tablets, memory and storage speed, camera quality, manufacturer software layers, and different approaches to how aggressively background work is stopped. No project supports all of it, and a scope that implies otherwise is storing up an argument for later. The workable method is to write the boundary down: device tiers, a minimum Android version, the hardware each tier genuinely needs, the screen and input conditions it is used in, and what the app does when something is absent.

Those decisions are not only editorial, they are technical. Android's documentation, read on 18 September 2026, explains that an app declares the hardware and software features it uses, and that Google Play compares the features an app declares as required against what a device reports, filtering the app away from devices that do not provide them. A declared feature counts as required unless it is explicitly marked otherwise, so a careless camera declaration can quietly exclude a large part of your audience. The minimum version set in the build configuration does the same job for older devices. Decide those deliberately, because they are the difference between a feature degrading gracefully and an app that cannot be installed at all.

Turn the assumptions into a support matrix

A matrix makes the boundary arguable before it becomes expensive. Each row connects a real user task to a device condition, a fallback and the evidence someone would collect to accept it. The exclusions matter as much as the inclusions: an excluded tier that is written down with a date to review it is a decision, while an excluded tier nobody mentioned is a complaint waiting to arrive.

Fictional HarborFix Android support assumptions, showing how device conditions connect to workflow, fallback and test evidence
Device tierVersion boundaryScreen and input conditionRequired capabilityOffline expectationTest priorityFallback or exclusion decision
Technician handsets in the vanFloor set by the oldest handset in the fleetOne-handed use, outdoor glare, glovesCamera and local storage requiredMust open a job and queue evidence with no signalHighestNo fallback: a device without a working camera is replaced, not designed around
Coordinator tablet in the officeNewer versions onlyLarge screen, landscape, long job listsNo hardware requirementOnline use by agreementMediumLayout adapts to the larger screen and capture actions are hidden rather than shown broken
Customer phones, range unknownLower floor to reach more customersAny size, enlarged text settings, older hardwareNo hardware requirementRequest state readable when offlineMediumA missing capability degrades to a plain status view with no dead control
Older or low-memory handsetsBelow the agreed floorSmall screens, slow storageCamera present but unreliableNot supportedExcluded from the matrixWritten exclusion with a named owner and a date to review it

What Android users expect on screen

Android publishes its own design direction, and it is worth designing with rather than against. Its design guidance, read on 18 September 2026, is organised around modern themes and components and around adaptive layouts that hold up across phones, tablets, foldables and desktop windowing, rather than one fixed phone layout stretched to fit. Android's core app quality guidelines, read the same day, then turn part of that into checks you can actually measure: touch targets of at least 48 dp, contrast of 3:1 for large text and graphics and 4.5:1 for small text, state preserved when the app leaves the foreground so that resuming from the recents switcher returns the user exactly where they were, onscreen feedback if loading takes longer than two seconds, and no crashes or blocked interface thread. Those are dated platform expectations to design and test against. Meeting them is not a quality badge and does not guarantee anything about a store review.

Four Android quality numbers to design to. These are checks you can measure on a device, not a badge and not a store outcome. A full text version follows.

Four Android quality numbers to design to

Primary-source guidance. These are checks you can measure on a device, not a badge and not a store outcome.

Source: Android: Core app quality. Reviewed .

Read the graphic as text
  • Touch targets: 48 dp. The minimum size for anything tappable
  • Small text: 4.5:1. Contrast against its background
  • Large text: 3:1. Also applies to meaningful graphics
  • Slow response: 2 s. Show onscreen feedback beyond this
Download this infographic (SVG)

Which device capabilities and business systems must it reach?

Group the question into three. Device inputs, such as camera, files, location or Bluetooth, and only where the task genuinely needs them. Platform services, such as sign-in, maps or push notifications, each of which has an account and a configuration owner. And your own business systems, which is usually where the risk sits. For every item, write down the purpose in the task, the permission or feature it depends on, what the user sees when it is denied or unavailable, who owns the account, and the evidence you would accept that it works.

Permission denial is a normal state, not an error. Android runs each app in its own isolated process with access only to what it has been granted, and device data such as camera or location is released through permissions the user grants explicitly. The quality guidance asks for runtime permissions to be requested when the functionality is requested rather than at startup, for the reason to be explained, and for the app to degrade gracefully when a permission is denied or later revoked. For HarborFix that means Arif is asked for the camera at the moment he records evidence, and refusing leaves him a usable path rather than a dead end: a written note, a signature, or an upload once he is back at the depot.

Business-system feasibility sits outside the app entirely. An interface has to exist, somebody has to be able to grant access to it, the data has to be clean enough to rely on, and the third party's terms have to allow the use. Confirm those four before they enter a scope rather than after. Declaring something in the app's manifest describes an intention; it does not prove an integration works, and only a test against the real system does. The core systems we build shows what usually sits behind an app of this kind.

A 5G plan is not a 5G phone. Nearly half the country is using a handset that cannot reach the network it pays for. Build for the mid-range phone somebody actually owns, not the one in the demo. A full text version follows.

A 5G plan is not a 5G phone

Published statistic. Nearly half the country is using a handset that cannot reach the network it pays for. Build for the mid-range phone somebody actually owns, not the one in the demo.

Source: MCMC: Internet Users Survey 2024. Reviewed .

Read the graphic as text
  • On a 5G plan: 81.0%.
  • Own a 5G device: 56.8%.
  • Rural, 5G device: 47.4%. Under half

Chart scale: Malaysian internet users, 2024.

Download this infographic (SVG)

How do you get onto Google Play, and stay eligible?

Artefacts, signing keys and accounts

Two build outputs matter. An APK is the archive a device installs. An Android App Bundle is a publishing format that cannot be installed directly, from which Google Play generates optimised packages for particular devices. Android's quality guidance notes that App Bundles have been mandatory for new apps on Google Play since August 2021. Signing is the part worth understanding as an owner rather than a developer: with Play App Signing, Google holds and uses the app signing key, and you sign each upload with a separate upload key that can be reset if it is lost or compromised, whereas an app that never opted in and loses its signing key loses the ability to publish updates at all.

That makes key and account custody a commercial question. Your business owns the Google Play developer account. We set it up in your name, prepare the signing and provisioning, use internal test tracks for review builds, and prepare and submit the listing on your behalf. If you ever move to another provider, the account, the listing and the keys stay where they belong. The detailed submission workflow is a subject of its own and goes deeper than a service page usefully can.

The requirements do not stand still

Google Play sets a target API level requirement that moves every year, and it applies to updates as well as new apps. Read on 18 September 2026, Google's documentation states that from 31 August 2026 new apps and app updates must target Android 16, API level 36, or higher to be submitted, that existing apps must target Android 15, API level 35, or higher to remain available to new users on devices running a newer version of Android than the app targets, and that an extension to 1 November 2026 can be requested. Those specific numbers will age. The pattern will not, and it is the single best reason to treat an Android app as something you maintain rather than something you finish.

What your business has to own on Google Play. Without Play App Signing, a lost signing key ends the ability to publish updates at all. A full text version follows.

What your business has to own on Google Play

Primary-source guidance. Without Play App Signing, a lost signing key ends the ability to publish updates at all.

Source: Android: Sign your app. Reviewed .

Read the graphic as text

Your Play account

  • Developer account. Registered to your business, never a supplier
  • Upload key. Signs each upload, and can be reset
  • App signing key. Held by Play, and used for what ships
  • Listing and notes. Copy, screenshots and the review information
Download this infographic (SVG)

Which offline, background and notification behaviours are essential?

Field work decides this question. Separate three kinds of work: what the user is watching happen, ordinary work that can run out of sight, and work that can be deferred and resumed. Android components have their own lifecycles, and background work is managed according to visibility, dependencies and available system resources, which is before you account for how differently manufacturers treat battery optimisation. The practical conclusion is that timely background execution and prompt notification delivery are things to test on real devices, never things to assume.

For HarborFix that means Arif captures evidence with no signal, the app records it locally and shows an explicit pending state, synchronisation happens when the connection returns, a resubmitted job cannot become two jobs, and Lina can see when the record actually arrived rather than when it was captured. Notifications get the same treatment. Each one needs a purpose the recipient recognises, a sensible moment, a destination to land on, and defined behaviour when permission was refused or delivery was late. The status change that tells Maya her repair is ready is worth testing as release evidence, including the path where she never granted notification permission in the first place.

What testing across many devices actually means

Nobody tests every Android device, and any supplier who implies otherwise is describing a marketing position rather than a test plan. Android's own quality guidance recommends focusing on a small number of representative devices, even one or two per form factor, alongside emulated foldable and tablet configurations, and always testing against the latest version of Android so that behaviour changes do not arrive as a surprise. Choose those representatives from your matrix and your audience, not from whatever is on the desk.

Then test conditions rather than handsets. Permission granted and denied. Rotation, folding and unfolding without losing state. An incoming call in the middle of a task. No signal, then signal. Slow storage. Text scaled up for readability. Every exception in the support matrix. Record what was run and what was observed, because acceptance evidence is a list of checks to run at sign-off and not a claim made in advance. Turning that into a full device and operating-system testing matrix is its own discipline, and we work through it with you once the supported boundary is agreed.

Malaysia is a two-platform market. Ship to one platform in Malaysia and you have written off roughly two in five of the people you wanted. The split is close enough that the question is which comes first, not which one. A full text version follows.

Malaysia is a two-platform market

Published statistic. Ship to one platform in Malaysia and you have written off roughly two in five of the people you wanted. The split is close enough that the question is which comes first, not which one.

Source: StatCounter GlobalStats: mobile OS share, Malaysia, Sept 2025 to Aug 2026. Reviewed .

Read the graphic as text

Malaysia

  • Android: 60.15%. The larger share, and the wider range of devices to test on
  • iOS: 39.58%. Nearly two in five, and higher in the cities where most buying happens
  • Everything else: 0.27%. Samsung Internet on other systems, and a long tail
Download this infographic (SVG)

What to bring to a first conversation

Four things make the first conversation useful: the repeating task in a sentence, who performs it today and on which devices they actually carry, the systems the app would have to read from or write to, and any constraint you already know about, such as a system that cannot change or a date you are working towards. From that we can tell you which parts of the Android boundary look solid, which need confirming before anything could be built, and where an Android-only build would be the wrong shape for what you described.

On evidence, we would rather be plain than impressive. Nothing we have built is published on Google Play. Our own PantryCue app is the closest answer: React Native, with live camera scanning, local notifications, an offline pantry and a Cook Mode that reads steps aloud. You can try the web build, and there is an installable Android build. Alongside it, the HORIZON 2026 concept adds an attendee app and a door check-in console that run as web applications, and more app samples are being built. Bring the problem to a scoped enquiry, or use the services catalogue if you are still comparing an app against the website and system work around it.

What you get

What is actually delivered

01

An agreed device and version matrix

Device tiers, the minimum Android version, required hardware, screen and input conditions, offline expectations and the exclusions you are accepting in writing.

02

A capability and permission map

Every camera, location, file or connectivity requirement tied to the task that needs it, the moment it is requested, and the usable path when a user denies it.

03

The staff workflow behind the app

The operational side that reviews, corrects and moves records on, with roles and permissions defined, because the technician screen is rarely the whole product.

04

Offline and sync behaviour you can see

Explicit pending and retry states, duplicate prevention on resubmission, and a record that shows when data actually arrived rather than when it was captured.

05

Google Play setup in your name

Developer account in your business name, Play App Signing and upload-key custody arranged, internal test tracks for review builds, listing prepared and submitted on your behalf.

06

Device and condition test records

Representative devices per form factor, permission grant and denial, rotation and folding, interruptions, connectivity loss and the exceptions named in your matrix.

07

Release and handover evidence

The agreed test records, the submitted build, source code in your own repository, and every account and key in your business name.

08

Maintenance against a moving platform

The annual target API level requirement, operating-system and device compatibility updates, crash monitoring and fixes, dependency upgrades and resubmission when an update ships.

How it runs

Agree the boundary, then build inside it

Most Android disputes are really disagreements about which devices and conditions were ever in scope. We write that down first, exclusions included.

  1. 01

    Qualify the Android boundary

    We check the repeating task, the devices your users genuinely carry and whether an installed Android app is the right surface, rather than a mobile website or a build for both platforms.

  2. 02

    Matrix, permissions and systems

    We agree the device tiers, version floor, required capabilities and offline expectations, and confirm which business systems have a usable interface, an access owner and terms that allow it.

  3. 03

    Prototype you can click

    You get the main journey and the staff side working on a live link, so the scope is judged from something real before the build is committed.

  4. 04

    Build and test by condition

    We build the approved scope, then test permission denial, interruptions, rotation and folding, connectivity loss and duplicate prevention on representative devices from your matrix.

  5. 05

    Release on Google Play and hand over

    Account and signing are prepared in your name, review builds go out on internal test tracks, the listing is submitted on your behalf and the code lands in your repository.

  6. 06

    Maintain against the platform

    After launch we keep the app current against the yearly target API level requirement and operating-system changes, monitor crashes, upgrade dependencies and resubmit when an update ships.

Proof

Work you can click through

PantryCue is our own React Native app, with live camera scanning, local notifications, an offline pantry and a Cook Mode that reads steps aloud. You can try the web build, and there is an installable Android build; it is not on the App Store or Google Play. HORIZON 2026 is a concept prototype, not client work. Its attendee app and door check-in console show the roles, states and staff-side effects an operational app needs, and both run as web applications. Nothing we have built is published on Google Play or the App Store yet, and more app samples are being built.

Concept prototypes are labelled as prototypes everywhere they appear. They demonstrate what we can build, not work delivered for that named client. More client work is going live and will be added as it does.

How we work

The parts people ask about before they commit

How we build

React first, other languages when a project needs them

We build in React by preference, on both web and mobile, and we work in other languages when a project genuinely calls for it.

App stores

The accounts stay in your name

Your business owns the Apple Developer and Google Play accounts. We set them up in your name, prepare certificates and signing, and submit builds for you.

  • Apple Developer and Google Play account setup in your name
  • Certificates, signing and provisioning
  • TestFlight and internal test tracks for review builds
  • Store listing preparation and submission on your behalf

Timeline

Project dependent, and often quicker than expected

Timelines are project dependent. A focused build can go live in about a week, while a larger platform takes longer once scope is agreed.

Ongoing care

Quoted with the project, not bolted on

For a more complex website or a system with a real backend, ongoing care starts from RM 250 a month, with the plan confirmed against what was actually launched. Care is quoted with the project, not bolted on afterwards.

Getting hold of us

Normally under one working day

We normally respond to a support request in under one working day, and we work to solve problems as fast as we can. That is how we normally work rather than a contractual guarantee, and responding is not the same as resolving. If your operation needs a formal response or resolution commitment, we can write one into your scope.

Ownership

Everything belongs to your business

You own everything we build for you: the code, the content, the domain, the hosting account and every third-party account opened for the project. There is no lock-in. If you move to another provider, everything goes with you and we help with the handover.

  • Source code, handed over in your own repository
  • Domain and DNS, registered to your business
  • Hosting and every service account, in your name
  • Analytics, search and ad accounts, with us as a manager you can remove
  • All content, media and data in the system

Questions

Asked about android apps

Straight answers to what people ask before they commit. Anything else, message us.

Should we build for Android first and add iOS later?

Usually you do not have to choose. Cross-platform React Native is our default, so one codebase serves Android and iOS, and we use native Kotlin or Swift when a feature genuinely needs it. Android-first is still a reasonable decision when your users clearly carry Android devices, or when a staff tool is the whole point and you control the hardware. It is a scope decision rather than a technical one, and it is worth making explicitly.

Which Android versions and devices should we support?

Set the boundary from evidence about your own users, not from general market figures. For a staff app, the fleet you buy decides it. For a customer app, a lower version floor reaches more people and costs more to test, and that trade should be made deliberately. Whatever you choose, write down the excluded tiers with a date to review them, because the exclusions are the part people argue about later.

What does an Android app cost?

We publish website packages openly on the pricing page, but an app is quoted against its scope rather than sold as a package. What moves the figure is how many roles exist, how much of the work is the staff side, how many systems it connects to, how wide the supported device boundary is, and how much of the testing covers exception paths rather than the happy path.

Can we see an Android app you have published on Google Play?

No, and we would rather say so than imply otherwise. Nothing we have built is published on Google Play or the App Store. Our own PantryCue app is the closest answer: React Native, with live camera scanning, local notifications, an offline pantry and a Cook Mode that reads steps aloud. You can try the web build, and there is an installable Android build. Alongside it, the HORIZON 2026 concept adds an attendee app and a door check-in console that run as web applications. More app samples are being built and will be added here.

Who owns the Google Play account and the signing key?

Your business does. We set the developer account up in your name, prepare the signing and provisioning, run internal test tracks for review builds and submit on your behalf. Key custody is worth settling in writing at the start, because an app whose signing key is lost and was never enrolled in Play App Signing cannot be updated at all.

How long does Google Play review take?

That timing sits with Google, and we do not control it or promise a date for it. What we can do is remove the avoidable causes of delay: a build that meets the current requirements, a listing prepared properly, and review builds already exercised on an internal test track. Plan a buffer between the build being finished and the date you want to announce.

What has to happen after launch?

Google Play raises its target API level requirement each year, Android itself changes, and manufacturers change how background work behaves, so an app that is never touched gradually stops reaching new users. We cover operating-system and device compatibility updates, crash monitoring and fixes, dependency upgrades and resubmission when an update ships, scoped per project and quoted with the work.

Where to go next

Sources

Tell us what you need built

We will show you the closest thing we have already built, then scope the real version against your requirements.