APK extraction
Android apps
without root
app backup
file management

How do I get the APK of an installed app without root access?

Master System Design with Codemia

Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.

Introduction

On a non-rooted Android device, you usually cannot browse private app data freely, but you can often still extract the installed APK package itself. The most reliable method is to use adb, ask the package manager for the installed APK path, and then pull that file to your computer. This works for many apps, although modern Android packaging and store protections introduce a few details you need to understand.

Use adb to Find the Installed Package Path

The core command is pm path. It asks Android where the package files for an installed app live.

First, list packages if you do not know the exact package name:

bash
adb shell pm list packages | grep example

Then query the APK location:

bash
adb shell pm path com.example.myapp

Typical output looks like this:

text
package:/data/app/~~abc123/com.example.myapp-XYZ/base.apk

That base.apk file is the installed package. On many devices, adb pull can copy it without needing root:

bash
adb pull /data/app/~~abc123/com.example.myapp-XYZ/base.apk ./com.example.myapp.apk

This is the most direct and repeatable approach because it uses Android's own package manager instead of depending on a third-party file explorer.

Handle Split APKs Correctly

Many modern apps are not a single APK anymore. They may be installed as split packages with files such as base.apk, split_config.arm64_v8a.apk, and language or density-specific splits.

In that case, pm path returns multiple lines:

bash
adb shell pm path com.example.myapp

Example output:

text
package:/data/app/~~abc123/com.example.myapp-XYZ/base.apk
package:/data/app/~~abc123/com.example.myapp-XYZ/split_config.arm64_v8a.apk
package:/data/app/~~abc123/com.example.myapp-XYZ/split_config.en.apk

If you need a faithful backup of what is installed, pull all of them:

bash
1adb shell pm path com.example.myapp | sed 's/^package://' > /tmp/apk-paths.txt
2
3mkdir -p ./apk-export
4while read -r apk_path; do
5  adb pull "$apk_path" ./apk-export/
6done < /tmp/apk-paths.txt

That gives you the actual installed artifacts. Reinstalling them later usually requires adb install-multiple rather than a plain single-file install.

bash
adb install-multiple base.apk split_config.arm64_v8a.apk split_config.en.apk

Why Third-Party Extractor Apps Sometimes Work

APK extractor apps on the Play Store typically do not bypass Android security. Instead, they use APIs and file access that are already available to normal apps. They are convenient, but they are less transparent than adb and often hide whether you are getting a full split package or only the base APK.

For development or reproducible backups, adb is the better tool because:

  • it shows the real package paths
  • it works without extra apps on the device
  • it makes split APK behavior visible
  • it integrates into local tooling

That said, if the goal is simply to save one APK for a device you own, a reputable extractor app can be acceptable.

Know the Limits

Getting the APK is not the same as getting the entire app state. Without root, you generally cannot extract private data from data/data, and you may not be able to recover licensing state, account data, or encrypted app assets.

Also, some apps rely on Play Asset Delivery, expansion files, or downloaded content that is not inside the APK itself. Extracting the APK alone will not capture those pieces.

For apps installed from the Play Store, you should also think about legality and licensing. Extracting an APK for your own device backup is one thing; redistributing it may violate the app's terms or the author's rights.

Useful End-to-End Example

This short shell session shows a typical workflow:

bash
1PACKAGE=com.example.myapp
2
3adb devices
4adb shell pm path "$PACKAGE"
5adb shell pm path "$PACKAGE" | sed 's/^package://' > /tmp/apk-paths.txt
6
7mkdir -p ./apk-export
8while read -r apk_path; do
9  adb pull "$apk_path" ./apk-export/
10done < /tmp/apk-paths.txt
11
12ls -1 ./apk-export

If the output folder contains only base.apk, the app is packaged as a single APK on that device. If you see several files, keep them together.

Common Pitfalls

The most common mistake is assuming every app has only one APK. Split packages are common, so extracting only base.apk may give you an incomplete backup.

Another mistake is confusing the installed package with private application data. Without root, you can often copy the APK, but not the app's internal databases or settings.

People also sometimes copy the path incorrectly from pm path. Strip the package: prefix before using adb pull.

Finally, extraction can fail if USB debugging is not enabled, the device is unauthorized, or the package name is wrong. Always check adb devices and verify the package identifier first.

Summary

  • The standard non-root method is adb shell pm path followed by adb pull
  • 'base.apk is often the main package file, but many apps include split APKs too'
  • Pull every returned APK path if you want a faithful backup of the installed package set
  • Third-party extractor apps are convenient, but adb is more explicit and reliable
  • APK extraction does not include private app data or all downloaded assets
  • Verify USB debugging, device authorization, and the exact package name before troubleshooting further

Course illustration
Course illustration

All Rights Reserved.