Expertise

Android Software Expert

Android is the world's most widespread mobile operating system, but writing an app and shipping a scalable, secure, maintainable Android product are not the same thing. Native development with Kotlin and Java, device diversity, offline field scenarios and Google Play processes are at the centre of this work.

What does an Android software expert do?

An Android app is a whole made up of screens, business logic, local data, a network layer and store processes. An Android software expert owns both the technical architecture of this whole and its behaviour on the device.

  • Sets up the architecture. Separates the layers (interface, business logic, data); builds a testable structure that is open to growth.
  • Develops with Kotlin or Java. In new projects Kotlin is the default choice; in existing Java codebases a migration plan is made.
  • Manages device diversity. Accounts for different screen sizes, Android versions, manufacturer additions and hardware differences.
  • Solves offline and weak-network scenarios. Local database, queue, retries and synchronisation conflicts.
  • Sets up security. Session management, encrypted on-device storage, signing, code obfuscation and app integrity checks.
  • Publishes to Google Play and maintains. Store rules, release notes, staged rollout and post-release maintenance.

Kotlin or Java?

If we are starting a new Android project today, the answer is almost always Kotlin. Shorter code, null safety, asynchronous work with coroutines and Google's official recommendation all support this.

Java is still real in projects with an ageing codebase. Here the decision is not "rewrite everything"; it is writing new modules in Kotlin while gradually migrating the old code. Moving forward without breaking the app overnight is the most critical part of this transition.

When is native Android the right choice?

Not every project has to be native. If the goal is a single codebase, Flutter is usually more efficient. The situations where native Android stands out are these:

  • Deep hardware access: camera, Bluetooth, NFC, barcode reader, sensors or custom device integrations.
  • Performance limits: intensive image processing, real-time audio/video or screens working with large datasets.
  • Platform-specific behaviour: background services, notification channels and flows that work tightly with Android's own lifecycle.
  • Existing Android team and codebase: enterprise projects where the investment must be preserved.

The decision between native and cross-platform is not a matter of religion; it is an engineering decision made according to hardware needs, team structure and the product's lifetime. I compared the two approaches in detail in the article Flutter or native.

The topics that determine quality on Android

An Android app can look like it "works" while causing problems in the field. That is why I track the following from the very start of a project:

  • Battery and background work: unnecessary wake-ups, location tracking and synchronisation frequency should not strain the device.
  • Network behaviour: what happens when the connection drops, the retry limit and the state shown to the user.
  • Data storage: keeping sensitive data encrypted on the device and clearing it when the session ends.
  • Update compatibility: behaviour changes and the permission model in new Android versions.
  • Store compliance: the data safety form, permission justifications and version rejection risks.
  • Observability: crash reports, logging in critical flows and version-based bug tracking.

Android in field and enterprise apps

One of the areas where Android is strongest is enterprise field operations: team management, form collection, orders, audits and stock counting. In these scenarios the app is often used on a weak network, with gloves on, under the sun and across long shifts.

I developed survey and location-based reporting apps for Açık Deniz Bilgi's FMCG field team; running on native Android, iOS and Swift, these apps were used in the field with ERP integration and the ability to keep working offline. On DoktorAsistan's mobile side, user flows, notifications and secure session management came to the fore.

How does an Android project progress?

  1. Discovery and technical plan. Roles, screens, integrations and out-of-scope items are written down.
  2. Technology and architecture decision. Kotlin/Java, native/Flutter and how it will talk to existing systems become clear.
  3. Skeleton and first flow. A working, testable vertical slice is produced.
  4. Development and testing. Unit tests, device tests and automation of critical flows.
  5. Release and handover. Play Store process, source code, documentation and a maintenance plan.

I explained how the stages work in the article why work should be done in stages; I covered the cost side in the article mobile app prices.

Common mistakes

  • Testing on only one device. In the field, different manufacturers and Android versions appear.
  • Leaving the offline scenario until later. Adding it afterwards requires rebuilding the architecture from scratch.
  • Requesting permissions without justification. This risks both user trust and store approval.
  • Not making an update plan. Android versions and store rules change constantly.
  • Skipping log and crash tracking. Problems stay invisible until users report them.

Frequently asked questions

Should I use Kotlin or Java for an Android app?

For new projects Kotlin is recommended: it offers shorter code, null safety and modern asynchronous structures. Java can be preserved in projects with an existing codebase through gradual migration.

Native Android or Flutter?

If deep hardware access, high performance or platform-specific behaviour is required, choose native; if shipping to two platforms at once and there is no special hardware need, Flutter is usually more efficient.

How long does Google Play release take?

Once technical preparation is complete, store review usually takes a few days. For a first release, account verification, the data safety form and permission justifications can add extra time.

Can new features be added to an existing app?

Yes. First the existing codebase and architecture are reviewed; risky areas are identified and the new feature is added without breaking the existing structure.

Is an offline field app possible?

It is possible. It requires a layer that handles a local database, a work queue and synchronisation conflicts. This is an architectural decision that must be planned from the start.

How does Android app maintenance work?

Store rule changes, new Android versions and security patches require regular attention. The maintenance plan covers a release calendar, crash tracking and critical updates.