Software Engineering & Development

How to get hired as an Android developer in 2026-27

The short answer

To get hired as an Android developer in 2026 or 2027, write Kotlin, build UI in Jetpack Compose, and be able to hand an interviewer a Google Play link to an app you shipped and still update, because a published app that survives real devices is the evidence this job is actually hired on. Nothing licenses or certifies the role: Google retired its Associate Android Developer exam and nothing replaced it, so the only administrative gate is a Google Play developer account and, for personal accounts opened in recent years, Play's closed-testing period before you can apply for production access. The interview is usually four rounds: coding in Kotlin, an Android fundamentals deep dive (lifecycle, process death, coroutines and Flow, Compose recomposition), a mobile system design round about offline sync and shipping a binary you cannot hot-fix, and a behavioural round. Ask the recruiter in writing whether the coding round is general data structures or Android-specific, because the two preparations do not transfer.

Licence or certificationNone. No licence, registration or certificate is required to be hired as an Android developer. Google's Associate Android Developer exam, the only vendor credential that ever carried weight, was retired and nothing replaced it. The real gate is distribution, not accreditation.
The administrative gate: a Play developer accountA one-off registration fee (long set at 25 USD), identity verification, and a choice of personal or organisation account (organisation accounts need a verifiable business identity; Google has used D-U-N-S numbers for this). Personal accounts opened in recent years must also run a closed test with a minimum number of testers for 14 continuous days before applying for production access. Google has changed that tester count at least once, so read the current number in Play Console rather than trusting any article, this one included.
Language and UI toolkit expectedKotlin for all new code, with coroutines and Flow as the concurrency model, and Jetpack Compose for new UI. Java and XML Views are not trivia: they are most of the code in most apps older than about five years. A candidate who will not touch Fragments, RecyclerView adapters or a Dagger 2 graph rules themselves out of a large share of the market, especially banking, insurance, retail and enterprise.
Time to interview-readyRoughly 3 to 6 months of deliberate work for a developer coming from another platform, dominated by lifecycle, process death, Compose state and the Gradle build rather than by the language. From no programming background, 12 to 24 months. The limiting factor in both cases is shipping and maintaining one real app through at least two releases and one production crash.
How the hiring process runsRecruiter screen, then a technical screen (coding or an Android fundamentals conversation), then a loop of three to five rounds: coding, Android deep dive, mobile system design, behavioural, and at some companies a code review round or a take-home of roughly 4 to 8 hours. End to end: 3 to 6 weeks at product companies, 1 to 2 weeks for contract work through agencies, 6 to 10 weeks at large employers with hiring committees.
The one artefact that moves a decisionA link to a published app with your name on it, still updated, that you can talk about honestly: what you owned, how it behaves on a four year old device on a slow network, what broke in production and what you changed so it could not break the same way twice. A private repo of a tutorial clone does not substitute. Internal enterprise apps count if you can describe scale, constraints and outcomes without breaching confidentiality.
Where to check pay, instead of trusting a bandUS Bureau of Labor Statistics OES series 15-1252 (Software Developers) is the authoritative occupational source; BLS has no separate Android code, so it gives you the shape of the occupation and regional differences, not a mobile-specific band. For named employers and levels, levels.fyi. For live employer-stated numbers, read current postings from the same company in pay-transparency jurisdictions, matched to your level.
Two different jobs share this titleAndroid application developer (Kotlin, Compose, Play, consumer or enterprise apps) and Android platform or AOSP engineer (C++ and Java framework code, HALs, SELinux policy, device bringup, no Play Store involved) are different careers with different interviews, hired by different employers. Automotive, set-top, point-of-sale and ruggedized-device companies mostly want the second. Read the posting for 'AOSP', 'board support package', 'HAL' or 'device bringup' before you prepare.

Which Android job you are actually applying to

Three distinct jobs are advertised under Android titles and they do not share an interview. The first and largest is Android application development: Kotlin, Jetpack Compose, a backend you consume over HTTP, and a release that goes through Google Play. The second is Android platform or AOSP engineering: C++ and Java in the framework and below, hardware abstraction layers, SELinux policy, kernel-adjacent debugging, custom system images and device bringup, hired by handset makers, silicon vendors, automotive suppliers building Android Automotive OS, and companies shipping kiosks, point-of-sale terminals and ruggedized handhelds. The third is SDK or library engineering: you ship an AAR that other developers compile into their apps, so binary compatibility, public API design, method count and size budget, and never owning an Activity of your own define the work. Applying to the second with a portfolio of Compose screens wastes everyone's time.

Inside application development, read the title carefully. 'Android Developer' and 'Android Engineer' are usually the same job on different ladders, and the ladder matters: at companies with a unified software engineering job family, mobile engineers are levelled and paid alongside backend engineers, while at companies with a separate 'mobile' family the bands are sometimes lower and almost impossible to change after you accept. 'Mobile Engineer' usually means you are expected to work on both platforms, or on a cross-platform stack, and you should ask in the first call which it is. 'Senior Android Engineer, Platform' inside a product company usually means the internal platform: build system, CI, release tooling, design system, modularization, the shared libraries other app teams depend on. That is a good job and a different interview, weighted toward Gradle, dependency graphs and developer experience rather than screens.

The cross-platform question is real and you should answer it honestly rather than defensively. Flutter and React Native hold a meaningful share of new consumer app work, particularly at startups and agencies where one team must serve both platforms on one budget. Kotlin Multiplatform has moved from curiosity to a defensible choice for sharing the data and domain layers while keeping native UI, and Compose Multiplatform extends that to shared UI for teams willing to take it. None of this removed native Android roles. The companies with the largest, oldest, most regulated or most performance-sensitive apps overwhelmingly stayed native, and they are the ones hiring Android specialists. What shrank is the generic 'build screens from a Figma file' job at small companies, which is now often done cross-platform or by one generalist.

The sector matters more than the title for what your week looks like. Banking and fintech means security review, certificate pinning, device integrity checks, long regression cycles, strict release trains and a lot of existing XML. Retail and commerce means deep links, payments, performance on low-end devices and seasonal code freezes. Delivery and logistics means location, foreground services, battery, and fighting aggressive OEM process killing on devices sold in markets you do not live in. Media and streaming means Media3 and ExoPlayer, DRM, casting, TV and Auto surfaces. Healthcare means privacy controls and audit requirements. Automotive means Android Automotive OS, a different UI situation driven by distraction guidelines, and a hardware release cycle measured in years.

Finally, note whether the posting treats Android as a product surface or as a cost centre. Postings that name Android Vitals, crash-free rate, startup time, experiment frameworks or release ownership come from teams where mobile engineering has authority. Postings that list only 'implement designs', 'fix bugs' and 'work with the team' and name no tooling at all are usually staff-augmentation roles, often through an agency, with a shorter interview and lower pay. Both are legitimate. Know which one you are in before you negotiate.

The 2026 stack: what is expected, and what is still Java and XML

Kotlin is the baseline, not a differentiator, and interviewers probe depth rather than syntax. The parts that come up repeatedly: coroutines and structured concurrency (scopes, cancellation, what happens to a child when a parent is cancelled, why launching in GlobalScope is a smell), Flow versus StateFlow versus SharedFlow and when each is right, cold versus hot streams, what buffer, conflate and collectLatest do to a slow collector, sealed interfaces and exhaustive when for modelling UI state, data classes and immutability, null handling at the boundary with Java and with JSON, and the inline and reified tricks libraries use. The K2 compiler is the normal front end now, so build speed and migration pain are reasonable things to have an opinion about.

Jetpack Compose is the default for new UI and the most common place candidates reveal shallow knowledge. Writing a composable is table stakes. What separates people: understanding that recomposition is driven by state reads rather than by function calls, state hoisting and where state should actually live, remember versus rememberSaveable and what survives process death, LaunchedEffect keys and what happens when one changes, DisposableEffect for cleanup, derivedStateOf for values that should not retrigger, snapshotFlow, Modifier order being significant, keys in LazyColumn, and measuring all of it with the Layout Inspector's recomposition counts and the Compose compiler's stability report rather than by guessing. One detail worth getting right because it dates candidates: strong skipping is on by default in current Compose compiler versions, so a composable with unstable parameters is still skippable using instance comparison, and lambdas are memoized automatically. The modern failure mode is not 'an unstable type broke skipping' but values recreated on every recomposition so instance comparison always fails. Material 3 and theming, adaptive layouts for tablets and foldables, and accessibility semantics belong in the same bucket.

Architecture questions assume Google's app architecture guidance as the shared vocabulary: a UI layer with unidirectional data flow, an optional domain layer, and a data layer with repositories as the single source of truth. ViewModel plus SavedStateHandle, UI state exposed as an immutable data class in a StateFlow, events flowing up, and the UI collecting with collectAsStateWithLifecycle or repeatOnLifecycle so collection stops when the screen is not visible. MVI shows up often enough that you should be able to say what you gain (one state object, replayable events, easier testing) and what it costs (ceremony, and a drift toward one giant state class). Dependency injection is usually Hilt, sometimes Koin at smaller companies, occasionally hand-rolled where a team decided build time matters more.

The data layer is where mobile system design conversations start. Retrofit with OkHttp remains the common HTTP stack, Ktor client in Multiplatform codebases, kotlinx.serialization having largely displaced Gson in new code. Room for local storage, DataStore in place of SharedPreferences, Paging 3 for lists backed by a network source, WorkManager for deferrable background work under Doze and app standby buckets. Know the constraints rather than the API surface: what you may and may not do from the background, which foreground service types must be declared and justified, why exact alarms are restricted, and why your sync works perfectly on a Pixel and dies silently on devices from manufacturers with aggressive battery management.

Build and release knowledge is undervalued by candidates and by nobody else. Gradle with the Kotlin DSL and version catalogs, KSP rather than kapt for annotation processing, build variants and flavours, R8 shrinking and the keep rules you inevitably need for reflection-based libraries, module boundaries and what they do to build times, and the Android Gradle Plugin upgrade treadmill. If you can describe a real build time reduction with a before and after number, that is a stronger senior signal than another screen in your portfolio.

Testing is the other undervalued area. Unit tests with JUnit, Turbine for asserting on Flows, MockK or fakes (and an opinion about preferring fakes), Robolectric where a JVM test needs an Android shim, Compose UI tests with semantics matchers, Espresso in older codebases, Maestro for end to end flows, screenshot testing with Paparazzi or Roborazzi to catch visual regressions, and a device matrix in Firebase Test Lab. Teams that care about quality ask what you test and what you deliberately do not, and the right answer involves a cost argument, not a coverage percentage.

The honest statement about legacy: most paid Android work touches code written before Compose existed. XML layouts, Fragments, RecyclerView with DiffUtil, LiveData, Dagger 2, RxJava, and Activities with a thousand lines in them are the daily reality in banking, insurance, retail, airlines and enterprise tooling. The valuable candidate can work in that and migrate it incrementally: ComposeView inside an existing Fragment, AndroidView inside Compose, strangling one module at a time with a measurable outcome. Candidates who present migration as a rewrite are rejected by every experienced hiring manager, because the rewrite is the thing their last team tried and abandoned.

Shipping proof: getting something real on Google Play

The field has no licence, so distribution does the work a credential does elsewhere. A live Play listing proves things a repository cannot: that you finished, that you handled signing and versioning, that you wrote a privacy policy and a data safety declaration, that you passed policy review, and that you have read your own crash reports. Hiring managers open the link. Several will install it on their own phone before the call.

The administrative path is short but has a trap. You create a Google Play developer account and pay a one-off registration fee, long set at 25 USD. Personal accounts opened in recent years must then run a closed test with a minimum number of testers for 14 continuous days before they can apply for production access, and the count has been revised at least once, so read the current number in Play Console. Plan for it, because it adds weeks between 'my app works' and 'my app is public'. Finding real testers is the part nobody warns you about: opt-in testers must accept the invitation on a Google account and keep the build installed, so recruit from friends and colleagues first, then from the organised tester-exchange threads on r/androiddev and the Android developer Discords, and over-recruit, because some invitations are never accepted. For apps distributed outside Play, Google has announced developer verification requirements for installs on certified Android devices with a staged rollout; treat the timing as something to check in Google's own documentation rather than something to quote.

The publishing requirements are a short list you should be able to recite, because they come up as interview questions. Google Play takes Android App Bundles rather than APKs for new apps, and Play App Signing holds the signing key. Play enforces a target API level policy that moves every year, and apps that fall behind become invisible to new users on newer devices, so 'targets a recent API level' is a maintenance obligation rather than a one-time task. You must complete the data safety form honestly and keep it in sync with what the app actually collects. Sensitive permissions require declared justification, and foreground services require a declared type. Apps targeting recent platform versions must handle edge-to-edge display and the predictive back gesture properly. If your app ships native code, 16 KB memory page size support has become a Play requirement for apps targeting recent platform versions; the effective date has moved, so check it before you assume your NDK dependencies are fine.

What you build matters more than how much. A to-do list app proves nothing because it avoids every hard thing. Build something that forces you through at least five of the following: real third party data over a network, authentication with token refresh, offline reading with a local cache as the source of truth, writes that queue while offline and reconcile on reconnect, at least one runtime permission with a graceful denial path, background work scheduled under WorkManager, push notifications, a list large enough to need paging, media or camera, and a settings surface with DataStore. Then ship it, watch the vitals, fix a real crash, and release again. The second release is where the learning is.

Make the app reviewable. A README that states the architecture in five lines, a module diagram, the test strategy and one honest 'what I would do differently' paragraph is read far more often than the code. Include screenshots from a small phone, a tablet and dark mode. If the code is on GitHub, make sure CI runs the tests on every push and the badge is green, because a red badge is worse than no badge. Keep the Play listing current: a link to an app last updated two years ago reads as abandonment and costs you more than having no link at all.

Three alternatives count if Play is genuinely not available to you. Merged contributions to a well-known open source Android library are strong evidence and sometimes stronger than an app, because a maintainer reviewed your work. Internal or enterprise apps distributed through managed Play or an MDM count fully; describe scale, constraints and outcomes without breaching confidentiality, and bring a redacted architecture sketch. A detailed, reproducible bug report filed against a public app or library, with a minimal reproduction project, demonstrates exactly the diagnostic skill the deep dive round tests.

How Android hiring actually works, stage by stage

Who screens you depends on employer size. At a company with a few dozen engineers, the Android lead reads your application directly and your Play link is the screen. At a mid-size product company, a recruiter filters on keywords first, which is why 'Kotlin', 'Jetpack Compose', 'coroutines' and 'Google Play' must appear as plain text on the resume rather than only inside a logo or a skills graphic. At large standardised employers, you are entering a general software engineering pipeline, and Android depth may be one round of five, with data structures and algorithms carrying most of the weight. At staffing agencies serving banks, automotive and retail, a non-technical recruiter screens on years, frameworks and rate, then a client-side technical call decides.

The modal process at a product company is five steps. Application, then a 20 to 30 minute recruiter call about scope, location, visa and compensation range, then a 45 to 60 minute technical screen, then a loop of three to five rounds, then an offer conversation. The technical screen is the fork in the road: some companies run a shared-editor coding problem, others run an Android fundamentals conversation, a few run a short pair programming exercise in a sample app. Ask which, in writing, in your reply to the scheduling email. A one-line question costs nothing and changes what you do for a week.

Take-homes are more common for Android than for backend, because a small app is a natural brief. The honest version is 4 to 8 hours: consume a public API, show a list, show a detail screen, cache for offline, handle errors and empty states, and write tests. The scoring is rarely about features. It is about whether the architecture is coherent, whether state survives rotation and process death, whether errors are modelled rather than swallowed, whether tests assert behaviour rather than implementation, and whether the README explains your trade-offs. Over-engineering a four screen app with six modules and a custom navigation framework is a failure mode interviewers see constantly. If the brief is open-ended, state your time budget in the README and what you consciously left out; that paragraph often scores higher than the code.

Some companies run a code review round, which is the most informative and the least prepared for. You are given a pull request or an existing file and asked to review it out loud. They are watching for whether you spot the leak (a listener registered without being unregistered, an Activity Context held in a ViewModel, a coroutine launched in the wrong scope), whether you distinguish a correctness bug from a style preference, and whether you can say that something is fine. Candidates who flag everything at equal severity score poorly, because that is what a bad reviewer does to a real team.

Timelines: 3 to 6 weeks end to end at product companies, 1 to 2 weeks for contract roles through agencies, and 6 to 10 weeks at large employers with hiring committees and team matching. Contract to hire is a genuine entry route in enterprise Android and worth taking seriously if you are switching into the field, because the interview tends to weight shipped experience over algorithms. Rates and conditions differ sharply from permanent employment, so price the lack of benefits and notice protection into the number.

One stage-specific warning. If a recruiter cannot tell you the level, the band, the loop format or who you would report to, slow down rather than speeding up. Android teams are small, often a handful of engineers, and the single biggest determinant of whether the job is good is whether mobile has release authority or has to beg for it. Ask directly: who decides when a release ships, and when was the last time a rollout was halted?

What Android interviews actually test, and how to answer

The deep dive round sets your level, and it concentrates on a short list of topics because those topics predict whether you will cause production incidents. Process death is the most common knockout. An interviewer asks what happens when the system reclaims your app's process while it is in the background and the user returns to it, and a surprising share of candidates with years of experience describe a configuration change instead. The right answer separates three things: configuration change (the Activity is recreated, the ViewModel survives), process death (the whole process is gone, the ViewModel does not survive, the system restores the back stack and whatever you saved), and a normal cold start. Then name the mechanisms: SavedStateHandle in the ViewModel, rememberSaveable in Compose, onSaveInstanceState underneath, and the developer option 'do not keep activities' to reproduce it on demand. If you can say you have actually tested with that toggle on, you have answered better than most senior candidates.

Compose questions follow the same pattern: they want the model, not the API. Why did this screen recompose when only one field changed? Usually because state is read too high in the tree, or because a value passed down is recreated on every pass so instance comparison fails. What survives process death, remember or rememberSaveable? What happens to the coroutine LaunchedEffect started when its key changes? Why is derivedStateOf the right tool for a boolean derived from scroll position? Why does Modifier order change the result? Why do keys matter in a LazyColumn? Name your measurement tools, because 'I would check recomposition counts in Layout Inspector and read the compiler's stability report' is the answer that reads as someone who has done it.

Mobile system design is the round that distinguishes Android engineers from people who write Android code, and it has a predictable marking scheme. Given a prompt such as 'design the feed for a social app' or 'design an offline-first notes app with sync', the interviewer wants: the data flow and where the single source of truth sits (almost always the local database, with the network as a writer into it), the caching and invalidation policy, pagination with a cursor rather than an offset, conflict resolution for offline writes, retry and backoff that does not hammer a struggling backend, image loading and memory pressure, what the user sees on a cold start with no network, how the feature is instrumented, and the release mechanics. That last one is where candidates lose the round. On mobile you cannot hot-fix a binary, so the answer must include a feature flag or remote config kill switch, a staged rollout, how you would detect a regression (crash rate, ANR rate, a business metric), and a forced-upgrade or minimum-version path for the case where the shipped client is genuinely broken.

Behavioural rounds for Android have their own recurring question, because the job has a recurring conflict: you depend on a backend you do not control and a design you did not draw. Expect 'tell me about a time the API did not fit the mobile use case', and have a real answer that shows you negotiated a contract change (chatty endpoints, missing pagination cursors, a payload that cannot be cached, a field nullable in practice but not in the schema) rather than one that shows you worked around it silently for a year. Expect 'tell me about a production incident' and answer with the timeline: how you learned about it, how you scoped it, what you shipped, and what changed in the process afterwards.

The resume and the portfolio: what gets read, what gets ignored

Put the Play Store links in the top third, above the work history, each with one line of context: what the app is, roughly how large its user base is if you are allowed to say, what you specifically owned, and one outcome with a number you can defend. A bullet shaped like 'rebuilt the checkout flow in Compose, cut cold start at the 90th percentile by nearly half as measured with Macrobenchmark, and raised crash-free sessions' is read and remembered. 'Worked on various features using modern Android technologies' is skipped. If you cannot share your employer's numbers, say what you measured and what moved in relative terms, which is both truthful and sufficient.

Write the stack in plain text once, grouped, and then never again: Kotlin, Jetpack Compose, coroutines and Flow, Hilt, Room, Retrofit and OkHttp, WorkManager, Paging, Gradle, JUnit, Turbine, Espresso or Maestro, Firebase Crashlytics, Google Play Console. Recruiter and ATS keyword matching is real, and the cost of listing these honestly is one line. The failure mode is the opposite: a wall of thirty library names including every Jetpack component ever shipped, which signals nothing because it cannot distinguish you from anyone who read the documentation index.

Each bullet in your work history should answer three questions: what did you own, what constraint made it hard, and what changed because you did it. Android gives you unusually concrete constraints to name, so use them: a device floor, a size budget, a battery or thermal problem, a flaky network in a specific market, an API that could not be changed, a release train with a two week cadence, a regulated review gate. Hiring managers for mobile read for this, because the thing they cannot teach quickly is judgment about constraints.

What gets ignored, consistently: tutorial clones (another weather app, another to-do app, another movie list built against the same public API everyone uses), 'passionate about mobile technology', certificate badges from online course platforms, 'Android Studio' or 'Git' listed as skills, a GitHub profile full of forty abandoned repositories, and a skills section with proficiency bars. What actively hurts: a Play link to an app whose last update was years ago, a portfolio app that crashes on first launch on the reviewer's phone, an unexplained claim like 'improved performance by 40 percent' that falls apart when asked how it was measured, and claiming sole credit for a team app whose other contributors are visible on the listing.

One page under about ten years of experience, two at most beyond that. Single column, no text inside images or headers, standard section names, plain bullets. Many ATS parsers still mangle multi-column layouts, and the resume that cannot be parsed is not rejected, it is simply never read. Name the file with your name and the role.

Your Play listing is part of the portfolio and is judged as a product. Screenshots that show the app on a real screen rather than a marketing mock, a description written in sentences, a current last-updated date, a privacy policy link that resolves, and replies to a few user reviews all say that you understand shipping as a practice and not just as an action. If you have written publicly about a hard Android problem you actually solved, link that too: a specific post-mortem about a memory leak, an ANR hunt or a migration is worth more than a general tutorial, because it demonstrates the diagnostic process interviewers are trying to detect.

Where the Android jobs are, and how to reach a human

Demand sits in large, long-lived consumer and enterprise apps rather than in new app builds: banking and payments, retail and grocery, delivery and logistics, airlines and travel, telecom, media and streaming, healthcare and insurance, automotive (both in-car Android Automotive OS and companion apps), and the quiet, substantial world of apps for devices rather than phones (point of sale, warehouse scanners, medical devices, kiosks, in-flight entertainment). Agencies and consultancies also hire steadily for client Android work, with less interesting codebases and faster hiring.

Remote Android roles exist and are genuinely remote more often than in many fields, because mobile teams are small and often distributed. The cost is that remote postings attract global competition and their bands are increasingly location-adjusted. Hybrid and onsite roles in your own metro are a less crowded market, particularly in the regulated sectors above, which also tend to be the employers least represented on the job boards engineers actually read.

Reaching a human beats applying. The Android community is small, public and reachable in ways most fields are not. Kotlin's community Slack has active channels for Compose, coroutines and Android where library maintainers answer questions. droidcon events run in many cities and most publish their talks; attending one and following up with two specific questions to a speaker is a better use of an evening than fifty applications. Android Weekly, the Now in Android updates and the issue trackers for widely used libraries are where you see who is working on what. Local Google Developer Group chapters run meetups that hiring managers attend specifically because recruiting Android engineers is hard.

Three outreach approaches work better than a cover letter. First, use the product and write a short, precise message to the mobile lead about something concrete: a reproducible bug with the device, OS version and steps, or an observation about a slow screen with a trace attached. That is literally the job, performed unasked. Second, contribute to an open source library the company depends on and mention it. Third, give a short talk or write up a specific technical problem you solved, then send it to someone whose work it touches. Each of these converts better than volume applying, and each is also preparation.

Referrals carry more weight than any other channel at companies large enough to have a referral system, and the Android world is small enough that two or three conference and Slack relationships put you one hop from many teams. Ask for a referral only once you have something specific to refer: a Play link, a merged pull request, a write-up.

If you are switching into Android from another field, the realistic entry routes are, in rough order of likelihood: an internal move inside your current employer to a mobile team (by far the easiest, because they already trust you), a contract or contract to hire role through an agency serving enterprise clients, an agency or consultancy job, a smaller product company where your Play link is read by the person who would manage you, and last, a graduate or junior programme at a large employer, which is the most competitive of the five.

Pay, levelling, and what to actually say

Do not trust a salary band quoted in an article, this one included. Use three sources instead. US Bureau of Labor Statistics Occupational Employment and Wage Statistics series 15-1252, Software Developers, is the authoritative national and metropolitan reference; BLS does not break out Android separately, so read it for the shape of the occupation and the regional differences rather than as a mobile-specific number. For named employers and ladder levels, levels.fyi has the best public data on large technology companies. For live, employer-stated numbers, read current postings in pay-transparency jurisdictions: Colorado, California, Washington, New York, Illinois, Minnesota, Hawaii, Maryland, Vermont, New Jersey and Massachusetts among others, and the list has kept growing, so check whether your own state now requires it. Searching the same company's postings in a transparency state gives you their real band for your level, which is more useful than any aggregate.

Levelling matters more than negotiation. At companies with a unified software engineering ladder, Android engineers are paid at the same level as backend engineers doing comparable scope, and the lever is which level you are slotted into, not how hard you push on the number afterwards. At companies with a separate mobile job family, ask explicitly whether the mobile ladder tops out lower and where it maps against the software ladder. This is a fair question and the answer tells you a great deal about how the company regards mobile work.

Three structural facts about Android pay. Senior Android engineers at companies with large apps are not cheap, because the supply of people who can own a long-lived mobile codebase, its build and its release is genuinely small. Junior Android roles are scarcer and more competitive than junior backend or web roles, because small teams cannot absorb a trainee easily. Contract rates in enterprise Android often look attractive on the headline number and look very different once benefits, bench time and notice protection are priced in, so compare total compensation rather than day rate against salary.

What to say when asked for your expectations: ask for their band and the level first. 'What is the range for this level, and which level is this requisition?' is a normal question, and in many US jurisdictions the employer must give you the range in the posting or on request. If pressed for a number before you have theirs, give a range anchored on the research above, name your source, then move the conversation back to level and scope. When an offer arrives, negotiate on level if the scope they described exceeds the level they offered, because a level change is worth more over two years than any signing bonus.

Two questions worth asking that are about the job rather than the money, and which experienced interviewers respect. Who decides when a release ships, and when was the last rollout halted? And: what is your current crash-free rate and ANR rate, and what device floor do you support? The answers tell you whether you are joining a team with authority over its own quality or one that will be blamed for a binary it does not control.

Working with AI in this role

What an Android developer needs to know about AI in 2026

Start with the honest part, because an inflated claim here is easy for an interviewer to puncture. AI has not automated the core of Android engineering. Device fragmentation, the activity lifecycle and process death, background execution limits and OEM battery management, Play policy compliance, startup time on cheap hardware, and the fact that a shipped binary cannot be hot-fixed are all exactly as hard as they were three years ago, and none of them is a problem a code generator addresses. Two things did genuinely change: the tooling you write code with, and the features you are now asked to build. Both come up in interviews, and both are answerable with specifics.

On tooling: Gemini is built into Android Studio, and many Android developers use a general coding assistant alongside it. The practical effect is that boilerplate got cheap. Compose scaffolding, previews, data classes, Gradle configuration, Room DAOs, test fixtures and migration drudgery all take less time. The work that grew is review. A team now receives more code per engineer per week and the bottleneck moved to judging it, which is why 'how do you verify generated code' has become a routine interview question for mobile, where a bad merge reaches users' devices and stays there. Ask about the team's policy too, because it varies: some employers in regulated sectors restrict which assistants may see the codebase at all, and knowing to ask reads as someone who has worked under a real security review.

Know the characteristic defects of generated Compose well enough to name the class, because that is what demonstrates real review practice. State hoisted to the wrong level, so a whole subtree recomposes on every keystroke. A value recreated on every pass so skipping never kicks in. remember used where rememberSaveable was needed, so the screen keeps its state on rotation and loses it on process death, which means it passes casual testing and fails on a real device under memory pressure. LaunchedEffect keyed on something that changes constantly, restarting work in a loop. A coroutine launched in a scope that outlives the screen. Missing contentDescription and semantics, so TalkBack reads nothing useful. Hard-coded dp and strings that break at large font scale, on a tablet, or in a right-to-left locale. Touch targets under the 48dp minimum. Each of these is one sentence in an interview and a code review habit in practice.

On product features: the decision that matters is on-device versus hosted inference, and you should be able to argue it from constraints. On-device gives you latency, offline capability, and data that never leaves the handset, at the cost of model size, memory, battery and thermal headroom, and the hard fact that capable hardware is not evenly distributed across your user base. Gemini Nano is reached through AICore and the ML Kit GenAI APIs and exists only on a subset of devices, so any feature built on it needs runtime capability detection and a defined fallback, which is an engineering decision rather than a product footnote. For your own models, LiteRT (the runtime formerly called TensorFlow Lite) and MediaPipe are the usual paths. Hosted inference gives you the strongest models and controllable updates at the cost of latency, connectivity and per-call spend; Firebase AI Logic is the common way to call a hosted Gemini model from an app without embedding a provider key in the binary, which matters because anything shipped in an APK is extractable.

The least glamorous and most widely shipped AI in Android apps is classic on-device ML Kit: text recognition, barcode scanning, face and pose detection, language identification and on-device translation. If a posting mentions document capture, receipt scanning, identity verification or accessibility features, this is probably what the work is. Being specific about it is more credible than talking about large models you have never shipped.

What interviewers actually ask about an AI feature is not about models. It is: where does the user's data go, and does the Play data safety declaration say so. What happens with no network. What is the fallback when the device cannot run the model. How do you keep keys out of the binary. How do you stream tokens into a Compose UI without jank, and cancel the request when the user navigates away. How do you cap cost and rate. How do you ship a kill switch so a bad model release can be disabled without a store update, and how fast can you turn it off. If you can answer those seven for a feature you actually built, you are ahead of most candidates regardless of how large the feature was. Google Play also maintains policy covering apps with generative features, including requirements around in-app reporting of offensive output and prohibited content; read the current policy text rather than a summary, because it is revised.

On testing and triage, the useful changes are modest and worth describing accurately. Crash and ANR triage in App Quality Insights with model assistance can shorten the path from a stack trace to a hypothesis. Agentic UI testing has appeared in Android Studio and in third party tools, and screenshot diffing catches visual regressions cheaply. None of it substitutes for running the app on a genuinely cheap device on a bad network, which remains the test that finds what users will actually hit. The defensible position in an interview is that you use these tools to triage faster and cover more flows, and that you still produce device-level evidence before you call something fixed.

Reviewing generated Compose against recomposition, state restoration and accessibility

A large share of Compose is now drafted with assistance, and the characteristic defects (state read at the wrong scope, values recreated every pass, remember instead of rememberSaveable, missing semantics) look correct on a flagship and fail on a real user's device. On mobile a bad merge ships as a binary you cannot pull back, so review quality is a safety property rather than a style preference.

Show it: Have one specific story ready: a generated or inherited composable you reviewed, the defect class by name, how you found it (Layout Inspector recomposition counts, the compiler stability report, TalkBack, the 'do not keep activities' developer option), what you changed, and what you added to the process so the same class could not pass silently again. Then be ready to do it live on a composable handed to you.

Choosing on-device versus hosted inference and defending the trade-off

This is the one AI architecture decision an Android engineer actually owns, and the constraints are mobile constraints: model size against download and storage budget, memory and thermal headroom, battery, latency, offline behaviour, per-call cost, and the uneven distribution of capable hardware across the device base you support.

Show it: Name the decision and the constraint that drove it for a feature you built or designed. State the device floor, what the fallback path is when the hardware cannot run the model, and how you detected capability at runtime rather than assuming it. If you have not shipped one, design it out loud for a concrete feature and say what you would measure before committing.

Shipping a model-backed feature with a kill switch and a fallback

Model-backed behaviour is non-deterministic and regressions arrive from outside your release cycle, while your client is a binary on a user's phone. A feature without a remote disable and a defined degraded mode is a production incident waiting for a store review queue.

Show it: Describe the flag, where it is evaluated, what the app does when the flag is off, how quickly you can turn it off end to end, and what signal would make you turn it off (crash rate, ANR rate, a latency percentile, a complaint path). Mention the staged rollout and the minimum-version policy for the case where the shipped client is genuinely broken.

Streaming model output into a Compose UI without jank or leaked work

Token streaming is the most common place a model-backed Android feature goes wrong technically: recomposing a large tree on every token, holding the request open after the user navigates away, losing partial output across a configuration change, and burning battery on a long-lived connection.

Show it: Talk through the implementation: where the stream is collected, how state is batched or hoisted so only the text node recomposes, the scope the request runs in and what cancels it, what survives rotation and process death, and how you measured frame timing while it ran.

Keeping credentials and user data out of the binary and off unintended wires

Anything compiled into an APK is extractable, and sending user content to a third party changes what the app must declare in Play's data safety section and in its privacy policy. In regulated sectors this is the first question security review asks about an AI feature.

Show it: Say where the key lives (a backend, or Firebase AI Logic, rather than the client), what data actually leaves the device and what you stripped before it did, what the data safety declaration says, and what the retention position is with the provider. Being able to describe the declaration you wrote is unusual and reads as seniority.

Classic on-device ML with ML Kit, which is where most shipped Android AI actually is

Text recognition, barcode and document scanning, translation and face or pose detection account for far more shipped AI in Android apps than large models do, and they come with real engineering problems: camera pipeline and CameraX integration, frame throttling, accuracy in poor lighting and on low-end sensors, and model download size.

Show it: Describe a capture flow you built end to end: the camera configuration, how you throttled frames to keep the UI smooth, how you handled failure and poor input, the accuracy expectation you set with product, and what the feature added to the download size.

Using AI tooling for triage and test coverage while still producing device-level evidence

The real productivity gain for a mobile team is in triage and test breadth, not in writing screens. But the claims that matter in this job are still empirical: it works on the cheapest device you support, on a congested network, at maximum font scale, in the locale you ship to.

Show it: Describe your loop: assisted crash triage from a stack trace to a hypothesis, a reproduction you then built, a screenshot or UI test that locks the behaviour in, and the physical device run that confirmed the fix. Attach one number you measured before and after.

What a screen is looking for

These are the terms that a resume screen, human or automated, is matching against for this role. Use the ones that are true of you, in the words the posting uses.

Mistakes that cost people this job

Preparing for the wrong technical screen, because you assumed an Android job means an Android interview.

Ask the recruiter in writing which it is: data structures and algorithms in Kotlin, or an Android fundamentals conversation. Large standardised employers frequently run the general software engineering loop for mobile roles, where algorithms carry most of the weight and Android depth is one round of five. Three weeks of the wrong preparation is a failure you will wrongly blame on nerves.

Learning only Compose and refusing to work in XML, Fragments and older stacks.

Learn enough legacy to be useful: Fragments and their lifecycle, RecyclerView with DiffUtil, ViewBinding, LiveData, Dagger 2, and the interop points in both directions (ComposeView inside a Fragment, AndroidView inside Compose). Most paid Android work is maintenance and incremental migration of code written before Compose existed, and candidates who can migrate module by module with a measurable outcome are in demand. Proposing a rewrite is an instant no from any experienced manager.

A portfolio of tutorial clones, or no shipped app at all.

Ship one app that forces real problems: live third party data, authentication with token refresh, an offline cache as the source of truth, writes that queue and reconcile, one runtime permission with a graceful denial path, and background work. Then release it twice and fix a real production crash. One such app beats five weather app clones, and the second release is where the interview material comes from.

Describing a configuration change when the interviewer asked about process death.

Separate the three cases out loud: configuration change (Activity recreated, ViewModel survives), process death (process gone, ViewModel gone, the system restores the back stack and whatever you saved), and cold start. Name the mechanisms (SavedStateHandle, rememberSaveable, onSaveInstanceState) and say that you reproduce it with the 'do not keep activities' developer option. This single answer moves candidates a level in both directions.

Calling a feature done because it works on your own flagship phone.

Run the hostile checklist every time: a genuinely cheap three or four year old device, a throttled network, rotation, dark mode, maximum system font scale, TalkBack, an RTL locale, a tablet or unfolded layout, airplane mode mid-request, and the app backgrounded for an hour then resumed. Each of these is a real user condition and each is a defect class interviewers ask about.

Linking a Play Store app that has not been updated in years, or whose first launch crashes.

Install your own linked app from the store on a clean device before every application round and fix whatever breaks, or remove the link. A stale or broken listing is worse than no portfolio, because it is evidence against you rather than an absence of evidence. Keeping the target API level current is a standing Play obligation anyway, so a neglected app eventually becomes invisible to new users.

Leaving the Play developer account until you need it.

Register it the week you start building. A personal account opened in recent years has to complete a closed test with a minimum number of opt-in testers over 14 continuous days before you can apply for production access, so the gap between working code and a public link is measured in weeks, not hours. Recruit more testers than the minimum, because invitations that are never accepted do not count.

Listing thirty Jetpack libraries instead of saying what you owned and what it cost.

List the stack once, grouped, in plain text for the keyword screen. Then spend the bullets on ownership and constraints: the device floor you supported, the size or battery budget you worked under, the API contract you negotiated, the migration you landed incrementally, and one measured outcome you can defend when asked how you measured it.

Designing a mobile system in the design round as though it were a web service, with no release strategy.

Treat the binary as the constraint. Every mobile system design answer needs the local database as the single source of truth, a caching and invalidation policy, pagination with cursors, offline write reconciliation, retry with backoff, and then the release mechanics: a remote kill switch, a staged rollout, the signal that would make you halt (crash rate, ANR rate, a business metric), and a forced-upgrade path for a genuinely broken client. Candidates who omit the last part lose the round.

Searching only for the exact title 'Android Developer'.

Search also for Mobile Engineer, Software Engineer (Mobile), Kotlin Engineer, Client Engineer and Mobile Platform Engineer, and look in the sectors that hire steadily: banking, retail, delivery and logistics, travel, telecom, media, healthcare, automotive, and device-embedded Android. A large share of real Android work never appears under the literal title.

Questions people ask

What does an Android developer do?

An Android developer builds and maintains the software that runs on Android devices: the user interface (now usually Jetpack Compose, often alongside older XML layouts), screen state and navigation, a data layer that caches and synchronises with a backend, background work scheduled within Android's execution limits, permissions and privacy declarations, and the app's size, startup time, crash rate and ANR rate in production. They also own the release: building an Android App Bundle, publishing through Google Play, running a staged rollout, and watching vitals afterwards. The job's defining constraint is that a shipped build lives on the user's device and cannot be hot-fixed, so release strategy, feature flags and remote kill switches are part of engineering rather than an afterthought.

Do I need a degree or a certificate to become an Android developer?

No. There is no licence, registration or certificate required to be hired as an Android developer, and Google retired its Associate Android Developer exam, the only vendor credential that ever carried weight. A computer science degree helps at large standardised employers whose loops lean on data structures and algorithms, and it is close to irrelevant at product companies where the Android lead reads your Play Store link and your code. The practical gate is distribution rather than accreditation: publishing on Google Play requires a developer account with a one-off registration fee (long set at 25 USD), identity verification, and, for personal accounts opened in recent years, a closed test with a minimum number of testers run over 14 continuous days before you can apply for production access.

Do I need Kotlin and Jetpack Compose, or can I still get hired writing Java and XML?

An Android developer needs Kotlin and Compose for new work, and should not discard Java and XML. Kotlin is the default language for Android and every current Google sample and library is Kotlin-first, so postings assume it. Compose is the recommended UI toolkit and the interview questions about state, recomposition and effects assume it. At the same time, most apps older than about five years are mostly Java or XML layouts, Fragments and RecyclerView, and a large share of actual Android jobs is working in and incrementally migrating that code. The strongest position in 2026-27 is fluency in Kotlin and Compose plus the ability to work in a mixed codebase using ComposeView and AndroidView interop, and to migrate one screen or module at a time with a measurable outcome rather than proposing a rewrite.

How long does it take to become job-ready as an Android developer?

An experienced developer moving from another platform needs roughly 3 to 6 months of deliberate work to be job-ready as an Android developer. The language is the easy part; the time goes into the Android-specific model: the activity and fragment lifecycle, configuration changes versus process death, Compose state and recomposition, coroutine scoping, background execution limits, and the Gradle build. From a standing start with no programming background, 12 to 24 months is realistic. In both cases the limiting factor is not tutorials but having shipped and maintained one real app through at least two releases and one production crash, because that is the experience interview questions are drawn from.

What do Android interviews actually test in 2026?

An Android developer interview usually tests four things. A coding round, which at large standardised employers is general data structures and algorithms in Kotlin and at product companies is often an Android-flavoured problem such as implementing a cache or a debounce. An Android deep dive covering lifecycle, process death and state restoration, Compose recomposition and effects, coroutines and Flow, memory leaks, and sometimes the build system. A mobile system design round, typically an offline-first feature such as a feed, a sync engine or an upload queue, marked on data flow, the local database as the single source of truth, caching, pagination, failure handling and release safety including a kill switch and staged rollout. And a behavioural round that reliably includes a production incident you owned and a time the backend API did not fit the mobile use case. Some companies add a code review round where you review a pull request aloud.

Do I need to publish an app on the Play Store to get hired?

Not strictly, but publishing is the single most effective thing an aspiring Android developer can do, and it is the closest thing this field has to a credential. A live listing proves you finished something, handled signing and versioning, wrote a privacy policy and a data safety declaration, passed policy review and have read your own crash reports. Hiring managers open the link and some install the app before the call. The credible substitutes are merged contributions to a well-known open source Android library, internal or enterprise apps you can describe in terms of scale, constraints and outcomes without breaching confidentiality, or a detailed public write-up of a hard Android problem you diagnosed and fixed.

How much do Android developers earn?

Use sources rather than a quoted band. The US Bureau of Labor Statistics publishes authoritative occupational and metropolitan wage data under OES series 15-1252, Software Developers; BLS has no separate Android code, so it describes the occupation's shape and regional differences rather than a mobile-specific figure. For named employers and ladder levels, levels.fyi has the best public data on large technology companies. For live employer-stated numbers, read current postings from the same company in pay-transparency jurisdictions such as Colorado, California, Washington, New York, Illinois, Minnesota, Maryland, Vermont, New Jersey and Massachusetts. At companies with a unified software engineering ladder, Android engineers are paid alongside backend engineers at the same level, so the level you are slotted into matters more than the negotiation that follows.

Is native Android development dying because of Flutter, React Native and AI coding tools?

No, but the shape of demand changed and it is worth being precise about how. Cross-platform frameworks took a meaningful share of new consumer app work, especially at startups and agencies where one team must serve both platforms on one budget, and the generic 'build screens from a design file' job at small companies is the part that shrank. The companies with the largest, oldest, most regulated or most performance-sensitive apps overwhelmingly stayed native, and they are where Android specialists are hired. AI tooling made boilerplate cheap and moved the bottleneck to review; it has not touched the hard parts of the job, which are device fragmentation, lifecycle and process death, background execution limits, Play policy, performance on low-end hardware, and the fact that a shipped binary cannot be recalled.

Should I learn Kotlin Multiplatform?

Learn it second, after you are solid as a native Android developer. Kotlin Multiplatform has become a defensible production choice for sharing the data and domain layers across Android and iOS while keeping native UI on each platform, and Compose Multiplatform extends that to shared UI for teams willing to take it on. It appears on a growing minority of postings, mostly at companies that already have strong native teams on both platforms and want to stop writing networking and caching twice. It is a differentiator, not a prerequisite, and it is a poor first thing to learn because its hard parts assume you already understand both platforms' constraints. If a posting names it, having built even one shared module with real tests is enough to discuss it credibly.

What is the difference between an Android app developer and an Android platform or AOSP engineer?

They are different careers that share a word. An Android app developer writes Kotlin and Compose, consumes a backend over HTTP, and ships through Google Play. An Android platform or AOSP engineer works below the app layer in C++ and Java framework code: hardware abstraction layers, SELinux policy, device bringup, custom system images, board support packages, and debugging that reaches into the kernel. Platform engineers are hired by handset manufacturers, silicon vendors, automotive suppliers building Android Automotive OS, and companies shipping point-of-sale terminals, kiosks, warehouse scanners and medical devices, and Google Play is often not involved at all. Read a posting for 'AOSP', 'HAL', 'SEPolicy', 'device tree' or 'board support package' before you prepare, because a portfolio of Compose screens does not address that interview.

Put this on a resume in about a minute

Paste your history once and point it at the Android Developer posting you are looking at. No account, no card.

Build my resume free More roles