Security

    Can someone decompile my APK? What's recoverable

    A 2026 view of an APK being unpacked and its Dalvik bytecode decompiled to readable code, with hardcoded keys and endpoints recovered from strings and resources

    Yes, your APK can be decompiled, and assuming otherwise is how secrets end up exposed. An APK is essentially a zip archive, and the compiled code inside, Dalvik bytecode, can be turned back into readable code with freely available tools, while the manifest, resources, and strings come out almost directly. So anything shipped inside the app, an API key, an endpoint, proprietary logic, should be treated as visible to a determined person. Here is what is recoverable, what obfuscation does and does not change, and what that means for how you build.

    Short answer

    Yes, an APK can be decompiled. It is a zip archive whose compiled Dalvik bytecode can be converted back to readable code with common tools, and its manifest, resources, and strings are easily extracted. Per OWASP MASVS resilience guidance, this means anything in the app, including hardcoded keys, endpoints, and logic, is recoverable, so secrets must not ship in the binary. Obfuscation with R8 or ProGuard raises the effort by renaming symbols and stripping unused code, but it is not encryption and does not make the app unreadable. The real protection is keeping secrets on your backend and enforcing security server-side, with obfuscation as a deterrent, not a barrier.

    What you should know

    • An APK is decompilable: its bytecode converts back to readable code.
    • Resources and strings extract easily: the manifest and assets come out directly.
    • Anything shipped is recoverable: keys, endpoints, and logic included.
    • Obfuscation raises effort, not impossibility: it is not encryption.
    • Keep secrets off the app: server-side is the real protection.

    Can your APK be decompiled?

    Yes, and it does not take specialized resources. An APK is a package, effectively a zip, containing your compiled code as Dalvik bytecode, plus the manifest, resources, and assets. Freely available tools can unpack the archive and decompile the bytecode back into readable Java-like source, and the manifest and resource files are recoverable almost as-is. This is inherent to how Android apps are distributed: the device has to be able to run your code, so the code is present in a form that can be read back. An AAB does not change this, since Google Play generates installable APKs from it that are equally recoverable. So the realistic assumption is that anything in your app can be inspected by someone who wants to.

    What is recoverable from an APK?

    More than most developers expect. The table lists the categories.

    ArtifactRecoverability
    Compiled codeDecompiled to readable Java-like source
    ManifestExtracted directly, including components and permissions
    Strings and resourcesReadable, including hardcoded values
    API keys and endpointsExposed if embedded in code or resources
    Third-party SDKsIdentifiable from the code and libraries

    The line that matters for security is the hardcoded values: an API key, a secret, or a backend URL embedded in the code or resources is recoverable in plain form, regardless of how the rest of the app is structured. So decompilation is not just an intellectual-property concern about someone reading your logic; it is a direct exposure of any secret you shipped inside the app.

    What does this mean for secrets and intellectual property?

    That secrets do not belong in the app, and obfuscation is a deterrent, not a vault. Because anything in the APK is recoverable, a real secret like an API key or a credential must live on your backend, with the app authenticating to your server, which holds the key, rather than embedding it. For proprietary logic and to slow reverse engineering, obfuscation with R8 or ProGuard helps by renaming classes and methods and removing unused code, which makes the decompiled output harder to follow, but it does not encrypt anything and a determined analyst can still work through it. So use obfuscation to raise the cost of reverse engineering, keep genuine secrets server-side, and enforce security on the server so a recovered client cannot do anything it should not.

    What to watch out for

    The first trap is assuming compilation hides your code or secrets, when decompilation makes both recoverable. The second is trusting obfuscation as protection for a secret, when it raises effort but is not encryption; a string is still findable. The third is shipping an API key in resources or code thinking it is safe inside the package. A pre-submission scan such as PTKD.com (https://ptkd.com) reads the compiled APK or AAB against OWASP MASVS and surfaces exactly what is recoverable, the strings, keys, endpoints, and SDKs in your build, so you see what someone decompiling your app would find before you ship. Moving secrets to your backend is the response.

    What to take away

    • Yes, your APK can be decompiled; the bytecode converts to readable code and the manifest, resources, and strings extract easily.
    • Anything shipped in the app, including hardcoded keys, endpoints, and logic, is recoverable, and an AAB does not change this.
    • Obfuscation with R8 or ProGuard raises the effort of reverse engineering but is not encryption and does not hide a secret.
    • Keep real secrets on your backend, enforce security server-side, and use a pre-submission scan such as PTKD.com to see what is recoverable from your build.
    • #android
    • #apk
    • #decompilation
    • #reverse-engineering
    • #obfuscation
    • #owasp-masvs
    • #app-security

    Frequently asked questions

    Can my APK be decompiled?
    Yes. An APK is essentially a zip archive containing your compiled code as Dalvik bytecode, plus the manifest, resources, and assets. Freely available tools unpack it and decompile the bytecode back into readable Java-like source, while the manifest and resources come out almost directly. This is inherent to how apps are distributed, since the device must run your code. An AAB does not change it, because Google Play generates equally recoverable APKs from it.
    What can someone recover from my APK?
    More than most expect: the compiled code decompiles to readable source, the manifest extracts with its components and permissions, and strings and resources are readable, including any hardcoded values. That means API keys, secrets, and backend URLs embedded in the code or resources come out in plain form. So decompilation is not just about someone reading your logic; it directly exposes any secret you shipped inside the app, which is why secrets do not belong in the binary.
    Does obfuscation stop APK decompilation?
    No, it raises the effort but does not stop it. Obfuscation with R8 or ProGuard renames classes and methods and removes unused code, which makes the decompiled output harder to follow, but it is not encryption and a determined analyst can still work through it. Importantly, it does not hide a string, so a hardcoded key remains findable. Use obfuscation to slow reverse engineering of your logic, not to protect a secret that should be server-side.
    How do I protect secrets if the APK is decompilable?
    Keep real secrets out of the app entirely. An API key or credential should live on your backend, with the app authenticating to your server, which holds the key, rather than embedding it where it can be recovered. Enforce security server-side so a recovered or tampered client cannot do anything it should not. Obfuscation can protect proprietary logic somewhat, but the foundation is that nothing confidential ships inside the binary.
    How do I see what's recoverable from my app?
    Scan the build. A pre-submission scan such as PTKD.com reads the compiled APK or AAB against OWASP MASVS and surfaces exactly what is recoverable, the strings, keys, endpoints, and SDKs present, so you see what someone decompiling your app would find before you ship. If it surfaces a hardcoded secret, the fix is to move it to your backend, since you cannot hide a value that is inside a decompilable package.

    Keep reading

    Scan your app in minutes

    Upload an APK, AAB, or IPA. PTKD returns an OWASP-aligned report with copy-paste fixes.

    Try PTKD free