Engineering

Android app security

Otukan protects your Android app inside your existing build and release: DEX, native libraries and framework code, Play App Signing and store delivery.

  • Android
  • Your whole build output

    Otukan protects what your build actually ships: DEX from Kotlin and Java, native libraries for every ABI, and Flutter or React Native code.

  • Signing stays with you

    Integrity checks are bound to the certificate your users receive, including under Play App Signing. Your keys never leave your team.

  • Validated on real devices

    Android behaviour varies by manufacturer, so Otukan validates each control on physical devices from several manufacturers, not only on emulators.

What Otukan adds to your Android app

Static and runtime protection for the artefact you ship, with a response you control for every sensitive flow.

  • Code obfuscation

    Renames symbols, encrypts strings and reshapes control flow across DEX and native code, so decompiled output is hard to read or reuse.

  • Anti-tampering

    Verifies code, resources and the signing certificate at runtime, and responds when a repackaged copy starts.

  • Runtime self-protection

    Detects hooking frameworks, debuggers and emulators while the app runs and applies the response you set.

  • Root detection

    Combines independent signals to flag devices whose operating system no longer enforces Android's security model.

  • App attestation

    Gives your backend evidence with each request that it comes from your genuine, unmodified app.

  • Malware and fraud signals

    Reports signs of malware and fraud tooling on the device, so your backend can step up or refuse a risky session.

How it works

  1. Share your build profile

    Tell us your package formats, ABIs, frameworks and delivery channels. No binaries or keys are needed.

  2. Set your policy

    Choose the controls and the response for each sensitive flow: observe, warn, restrict or terminate.

  3. Protect every release

    Protection fits your existing build and release pipeline and covers every release artefact you ship.

  4. Sign and ship

    You sign with your own keys; integrity checks match the certificate on your users' devices.

  5. Act on signals

    Threat signals reach your backend and security team, so risky sessions are handled where decisions belong.

Free for app publishers

Check your app's exposure

A passive review of your published app by an Otukan engineer. No files, no access to your systems. Findings go by email to the verified publisher.

You finish the request on the next page.

Otukan fits into your Android build and release process without changing how you ship. It protects what your build actually produces: app bundles and APKs, DEX compiled from Kotlin and Java, native libraries for each ABI, and the code inside Flutter and React Native apps. Integrity checks are bound to the certificate your users receive, including under Play App Signing, and your signing keys stay with your team. While the app runs, Otukan detects rooted devices, hooking, debuggers, emulators and repackaged copies, and applies the response you set for each flow. iOS is protected on its own terms and has its own page, iOS app security.

Build inputs Otukan protects

Android apps differ more in their build output than in their source language. Otukan protects the artefacts your pipeline really ships, including code your team did not write.

InputWhat it isHow Otukan handles it
Package formatGoogle Play requires new apps as Android App Bundles; other channels often still take APKsProtects the release artefact each channel needs, bundle or APK
Kotlin and Java codeCompiled to DEX, usually after R8 shrinking and renamingAdds obfuscation, string encryption and integrity checks alongside R8, and keeps your mapping workflow intact
Native librariesNDK code shipped as shared libraries, one set per ABI (for example arm64-v8a, armeabi-v7a, x86_64)Protects your native code for every ABI you ship
Cross-platform frameworksFlutter ships compiled Dart in a native library; React Native ships a JavaScript or Hermes bytecode bundleProtects the framework’s own code, not only the Android shell around it
Third-party SDKsAnalytics, payments and identity SDKs run in the same processTunes runtime checks so that SDKs which inspect the app do not trip your policy
Build variantsFlavours and build types produce several release artefacts from one codebaseApplies one consistent protection profile to every artefact you release
API levelsminSdk and targetSdk decide which platform features and restrictions applyValidates each control per API level on physical devices

Framework-specific detail is on Flutter app security, React Native app security and .NET MAUI app security.

Release workflow

Signing that stays yours

Android signing decides which certificate the installed app carries, and that is what a re-signing check must verify. With Play App Signing, Google holds the app signing key and you hold an upload key, so the certificate on users’ devices is Google’s app signing certificate, not your upload certificate. Otukan binds its integrity checks to the certificate your users actually receive. If you also sign builds yourself for other channels, Otukan accepts each valid certificate, so legitimate installs pass and repackaged copies do not.

You sign every release with your own keys, in your own pipeline. Otukan does not need them.

Step-by-step guidance is in how to sign a protected Android app, and key handling is covered on app signing security.

Every delivery channel

The same app often reaches users through Google Play, a managed enterprise channel and a device maker’s own store. Each channel processes and signs releases differently. Otukan verifies the protected build for each channel you use, so the checks that protect your app on one store do not break it on another.

Protected-build testing

Otukan works with your team on a test plan for the protected artefact, not only the unprotected one:

  • a clean install and an update from the previous release
  • sign-in and your most sensitive flows, such as payments or account changes
  • the same journeys on physical devices from several manufacturers and OS versions
  • the same journeys on a legitimate device with developer options enabled, to confirm your customers see no false alarms

Coverage on Android

Each protection family has its own page. On Android, each is validated per API level on physical devices.

Protection familyWhat Otukan does on Android
Code obfuscationHardens DEX, native libraries and framework bundles against reverse engineering
Anti-tamperingChecks code, resources and the signing certificate your users receive
Root detectionCombines independent signals and feeds them to your response policy
Runtime protection (RASP)Detects hooking, debugging and emulators while the app runs, and responds per flow
App attestationGives your server evidence of a genuine app, complementing Google’s Play Integrity verdicts
Malware detectionReports signs of malware and fraud tooling on the device to your backend

Android runs on a very wide range of hardware, and manufacturers change system behaviour. A check that behaves well on one manufacturer’s build can behave differently on another. That is why Otukan validates on devices from several manufacturers, and why your policy can treat each signal differently for each flow. How to judge where protection works across OS versions, devices and distribution channels is covered on supported environments.

For how Android fits the wider protection model, return to mobile app security. If your Android app is already on Google Play, a free App Exposure Check reviews the public store release.

Common questions

  • Does Otukan work with Play App Signing?

    Yes. With Play App Signing, Google holds the app signing key and the certificate on users' devices is Google's app signing certificate, not your upload certificate. Otukan binds its integrity checks to the certificate your users actually receive, and it can accept more than one valid certificate when you also sign for other channels. Your upload and signing keys stay with your team throughout.

  • Does Otukan replace R8?

    No, it works alongside it. R8 shrinks and renames Kotlin and Java code to make your app smaller. Otukan adds protection that R8 does not aim to provide, such as string encryption, control-flow obfuscation, integrity checks and runtime detection, and it keeps your existing shrinking and crash-report mapping workflow in place.

  • What happens when a legitimate customer uses a rooted phone?

    That is your decision, per flow. Some teams let rooted devices browse but restrict payments; others only record the signal and let the backend weigh it with other risk data. Otukan detects the condition and applies the response you configured, so you protect sensitive actions without turning away customers who have simply customised their phone.

Ship protected Android releases with confidence

Tell us your package format, framework, native components and how you sign and deliver releases. We never ask for binaries, signing keys or production credentials.

Or request a technical demo