Android app development · UAE

Android apps that work on every UAE phone.

Kotlin and Jetpack Compose is the easy half. The skins decide whether a notification arrives and whether overnight work is still running in the morning.

Scope the Android side before you commit

What Android app development is

What Android app development involves here.

Android is roughly 78% of the handsets here. The useful fact is the shape of that share, because it decides the test matrix before it decides the code.

Android · build & releaseMy AppPLAY CONSOLE · RELEASEInternal testingClosed testingProductionLiveKotlinCompose · Material 34.650k+ installsNative Android — Kotlin and Material, shipped to Play.

Built in Kotlin.

The stack Google ships its own apps on, with Material 3 and right to left settled at the manifest. Arabic is a build flag and a resource set, decided at the start, not a translation pass at the end.

The phones people here use.

Samsung, then Xiaomi, vivo, OPPO and realme, with no Android vendor above a fifth of the market. The four behind Samsung together carry more than Samsung does, and their skins are the ones that change behaviour.

Your Google Play listing.

An organisation account whose legal name and address Google checks against Dun and Bradstreet, a listing in both languages, and a staged rollout with a rollback. The listing is pinned to the trade licence.

The scope

What a native Android build gives you.

Six outputs from an Android engagement. Two are the app, two are the release, and two exist only because Android is a set of manufacturers rather than a platform.

Kotlin · Android Studio@Preview1@Composable2fun ProductCard() {3 Card(Modifier.padding(16.dp)) {4 Column {5 Text("Rutab Market",6 style = titleLarge)7 Button(onClick) {8 Text("Order now")9 }10 }11 }12}9:41Rutab MarketOrder nownative Kotlin and Compose, not a wrapped website

Built in Kotlin and Compose.

The interface written in Compose and previewed as it is built, on the stack Google ships its own apps on

Output

an app that behaves as Android rather than as a wrapped page

KotlinCompose
Play Console5% rolloutProduction · 2.4.0 (128)released 12 Jul · stagedrollingStaged rollout1%5%20%50%100%Crash-free sessions99.4%ANR rate0.28%HaltRoll out to 20%

Staged releases you can roll back.

A release that reaches 1% before it reaches everyone, with a halt you can pull

Output

a bad build caught by a hundred users rather than by all of them

StagedRollback
Device coveragetested78%of UAE phones run AndroidDeviceShareSkinSamsung Galaxy A17.8%One UIXiaomi Redmi Note16.6%HyperOSvivo Y series8.1%FuntouchOPPO Reno7.5%ColorOSrealme C series6.1%realme UItested on every skin your users carry, not one flagship

Tested on the phones people carry.

Samsung, Xiaomi, vivo, OPPO and realme, with a share against each and the strictest skin marked

Output

a written test matrix, agreed before sprint one

Five skinsSourced
Material 3dynamic colourComponentsFilledTonalChipSliderDynamic colour · Material YouPrimarySecondaryTertiarylayout, motion and colour that feel at home on Android

Screens that work in Arabic.

Components, motion and dynamic colour to Material 3, with layouts written in start and end so a mirrored build is a resource set rather than a rewrite

Output

an interface that holds in both directions

Material 3Mirrored
Wear OS · TV · Auto3 form factors9:41Order #4821On the wayWear OSContinue watchingAndroid TV12 minNowAndroid Auto

Watch, TV and car screens.

The app extended to the watch, the screen or the car only where a user genuinely opens it there

Output

a surface roster you approved rather than a feature list

Wear OSAndroid Auto
Battery & backgroundDoze-awareBackground drain · 24h2.1%per hourWorkManager · Doze windowsSync · 3 batchedin windowLocation · coarsedeferredPush · high-prioritynowworks in the background without draining the phone

Notifications that reach every phone.

Scheduled work, sync and notifications measured against Doze and against a strict manufacturer power manager

Output

an overnight job that is still running at 07:00

DozePer skin

What the skins change

The same app on strict Android skins.

The documentation describes stock Android. Most of this market is not running stock Android, and the difference shows up in the two things a business app depends on.

Stock AndroidWhat the documentation describesA strict OEM skinWhat a lot of this market runsWhat we build againstThe strictest one in the matrix
An overnight syncRuns in a maintenance window, roughly when the platform says it will.The app is frozen after a few idle days and the job never fires.Scheduled work proved on the strictest skin, with the exemption prompt in the flow.
Push with app closedDelivered, usually within seconds of the send.Delayed, batched or dropped once the app has been swiped away.Delivery measured per skin on a real handset, never inferred from an emulator.
Seeing another appHidden since Android 11 unless the manifest names what it needs.The same rule, plus permission screens of the manufacturer’s own.The queries list written in the scope, so an app-switch works on first install.
Reproducing a reportAn emulator reproduces the framework, not the manufacturer.Reproducible only on that skin, which nobody on the team carries.The handsets on the matrix are the handsets on the ticket, so it reproduces.
Which approach we recommend.

The size of the build, more than the feature list does. A matrix of five skins is more test time than a matrix of two, and a managed fleet on one handset is less than either, so it is agreed in writing before sprint one rather than discovered in support. The pillar sets out the decisions that sit above this one. If iOS is in scope too, the shared and per-platform split is here.

What we find on Android here

Which Android phones people here use.

Webzenia has worked with Gulf clients since 2018. Four things about an Android build here that the platform documentation will not tell you.

  1. 01of 04
    The share has a shapeStatcounter, August 2026

    No single Android brand holds a fifth of this market.

    Samsung is 17.82%, then Xiaomi 16.59%, vivo 8.14%, OPPO 7.46% and realme 6.05%. A JLT commodities trader under DMCC whose warehouse staff carry their own handsets is testing against four skins, not one, and it is the skins that decide whether the dispatch notification arrives.

    Our methodThe test matrix built from vendor share, then agreed in writing.
  2. 02of 04
    The manifest is an allowlistSince Android 11

    Your app must name the apps it opens.

    Package visibility means the manifest has to declare each application the build needs to reach, so a national identity app-switch is a scoping decision taken before sprint one. Asking to see everything is a separate Play approval rather than a shortcut around it.

    Our methodEvery app the build has to reach, enumerated in the scope document.
  3. 03of 04
    The listing driftsQuietly, and then all at once

    Google re-checks your name against your trade licence.

    A Play organisation account is verified against a Dun and Bradstreet record. An Al Quoz logistics operator on a mainland DET licence that moves premises, or whose listing was opened under a former developer, finds this at renewal rather than at launch, which is the expensive time to find it.

    Our methodThe Play organisation record checked against the trade licence, then re-checked.
  4. 04of 04
    Arabic is a build flagNot a translation pass

    Arabic layouts are set up at the start.

    It needs the right-to-left flag, layouts written in start and end rather than left and right, and a mirrored resource qualifier. A Musaffah contractor on an Abu Dhabi mainland licence adding Arabic to a finished workforce app is not translating it, it is revisiting every layout in it.

    Our methodThe manifest flag and the mirrored resources set in the first sprint.

What the engagement covers

Inside an Android build.

The engagement in six stages. The matrix and the manifest are settled in the first, because both of them price everything after.

Scope · MVPSTEP 01MVP · V1Onboarding & loginBrowse catalogueCart & checkoutOrder trackingPLATFORMSAndroidiOSTIMELINE8 wksto MVP v1We pin the MVP, the platforms and the plan.

Scope and the phone list.

The feature list, then the handsets and skins the build has to survive. A Sharjah SAIF Zone manufacturer whose distributors carry whatever their own market sells has a wider matrix than a company issuing its own devices.

  • Scope
  • Matrix
Build · AndroidSTEP 02BUILDStackKotlin · nativeScreens24 builtCIpassingDesigned, then built native and clean.

Design in Arabic and English.

Screens built to Material 3 with the right-to-left flag set and layouts written in start and end, so the Arabic build is a mirrored resource set rather than a second pass over every screen.

  • Material 3
  • Mirrored
Integrate · servicesSTEP 03PPaymentscards, BNPLliveAAuthOTP loginliveMMapslocationliveNNotifypush · FCMliveWired to payments, auth and the rest.

Payments and sign-in wired.

Your APIs, the payment sheet, push and the identity app-switch. Each application the build has to reach is named in the manifest before it is reached in code.

  • Payments
  • Manifest
QA · real devicesSTEP 04DEVICE LABSamsung Galaxy AOne UIXiaomi Redmi NoteHyperOSvivo Y seriesFuntouchOPPO RenoColorOSrealme C seriesrealme UICRASH-FREE · 7D99.6%sessions cleanTested on every skin this market runs.

Testing on real phones.

The matrix run on physical handsets, with the strictest power manager treated as the reference rather than the exception. An emulator is honest about layout and dishonest about delivery.

  • Real devices
  • Strictest skin
Launch · Play StoreSTEP 05SShopApp4.8 · 2,400 reviewsLiveInstallGoogle Play+ moreLive on Google Play, listing and all.

Your listing in both languages.

Store copy, screenshots and release notes in English and Arabic, on an organisation account checked against the licence, released to a percentage rather than to everyone.

  • Two languages
  • Staged
Handover · yoursSTEP 06HANDED OVERRepo · transferredStore console · your accountDocs · completeSUPPORT99.9% SLAa team that answersCode, store access and support, in your name.

Handover and documentation.

Code, documentation, the agreed device matrix and the list of every application the manifest declares. The next team inherits both decisions instead of re-deriving them from a bug report.

  • Documented
  • Matrix

Our stack

Built with Kotlin and Android Studio.

The language, the manifest, the delivery path, the listing and the crash log. Select one to see what it tells you and what it does not.

Kotlin
Why Kotlin

Kotlin is the language Google builds Android in, so a platform behaviour that changes in a release arrives with Kotlin support rather than behind a binding somebody else has to write.

How we excel

We keep the platform-behaviour code in one place rather than scattered through screens, because background limits and permission prompts are the parts most likely to change under you between releases.

Platform accessMaintained by GoogleLanguage
KotlinFirst class
JavaSupported
A cross-platform frameworkBindings
A web view shellBrowser

How the build runs

From the phone list to Google Play.

Two artefacts come out of week two and price everything after them. The device matrix, and the list of applications the manifest has to declare.

01Weeks 1 to 2Scoped

Agreeing the phone list.

We agree the device matrix in writing, from vendor share and from what your own users carry, and mark which skin is the reference for background work. In the same fortnight we list every application the manifest has to declare, and check the Play organisation record against the trade licence. All three price the build, and none of them is code.

  • Matrixagreed in writing
  • Manifestdeclarations listed
  • Listingchecked against the licence
02Weeks 3 to 10Built

Building it in Kotlin.

The app is built in Kotlin and Jetpack Compose to Material 3, with the right-to-left flag and start and end layouts from the first screen rather than after them. Push and scheduled work are instrumented so arrival is measured on a handset rather than inferred from an accepted send, and the strictest skin in the matrix is the one they are proved against.

  • Interfacebuilt in both directions
  • Deliverymeasured, not assumed
  • Referencethe strictest skin
03Month 3 onwardRunning

Rolling out in stages.

The release goes to a percentage before it goes to everyone, and the crash and delivery numbers are read grouped by manufacturer rather than as one total. A fault that affects a single skin is a rounding error in an average and obvious the moment the average is split, which is the difference between halting a rollout and finding out from a review.

  • Releasestaged, with a halt
  • Crashesgrouped by manufacturer
  • Rollbacka mechanism, not a hotfix

Reported per manufacturer, so a fault on one skin is visible before it is an average.

The matrix, in writing
Device matrixPer skinStaged

Our commitment

Four promises we put in writing.

An Android build goes wrong on a handset nobody on the project owns. These four exist because that is where the damage is done.

  • We agree the phone list first.

    Named handsets and named skins, in writing, with the reference for background work marked. A test plan that says real devices and nothing else is a plan nobody can hold us to.

  • Notifications proved on the strictest phone.

    Arrival is confirmed on a physical handset from each manufacturer in the matrix. An accepted send tells you the message left, which is not the claim anyone is actually making when they say push works.

  • Your Play account matched to your licence.

    The legal name and address on the account are matched to the trade licence before the listing opens, and re-checked when either changes. An unresolved mismatch can take every app you have published down with it.

  • Every release can be rolled back.

    A percentage first, the numbers read per manufacturer, and the halt is yours to pull. Shipping to everyone at once means the only correction available is another release.

Common questions

Android apps, answered.

Next step

Get your Android app scoped.

Send what the app has to do and which handsets your users carry. We will come back with the build shape and the test matrix it runs against.

Tell us what you need.

+971
Chat on WhatsApp