Move System Apps to an Adoptable SD Card Using ADB (No Root)

13 min read Learn how to safely move pre‑installed Android system apps to an adoptable SD card using ADB, without rooting. Step‑by‑step guide with warnings and troubleshooting. October 07, 2026 12:30 How to Move System Apps to an Adoptable SD Card Using ADB (No Root)

Many Android devices ship with a handful of pre‑installed apps that sit in the system partition. They consume internal storage, appear in the app drawer, and cannot be uninstalled without root. If you have an adoptable SD card (Android 6.0+), you can relocate the data of many of those apps to the card, freeing precious internal space while keeping the apps functional. This guide walks you through the entire process using only ADB – no rooting, no custom recoveries, and no third‑party “move‑to‑SD” hacks.

Before You Start

  • Back up important data. Moving apps can affect app data; use adb backup or a cloud backup for contacts, messages, and any app‑specific data you cannot afford to lose.
  • Charge your phone to at least 70%. A power loss during the procedure could leave the device in an unstable state.
  • Use a high‑speed Class 10 or UHS‑I SD card. Adoptable storage formats the card as internal storage; a slow card will make apps sluggish.
  • Install the latest platform‑tools. Download the ADB binary from the official Android developer site and extract it to a convenient folder.
  • Enable USB debugging. Settings > About phone > tap Build number seven times, then go to Settings > System > Advanced > Developer options > toggle USB debugging on.

Understanding System Apps vs. User Apps

System apps reside in the /system partition, which is read‑only at runtime. Android treats them as part of the OS, so the package manager does not allow them to be moved directly. However, you can disable a system app for the current user and then re‑install it as a user app. Once it lives in the user space, Android’s normal Move to SD UI works.

Key points:

  • Disabling a system app does not delete its APK; it merely hides it for the selected user.
  • Re‑installing the app as a user app creates a copy of the APK in /data/app, which can be relocated.
  • Only apps that support external storage can be moved. Core services (Google Play Services, System UI, etc.) cannot.

Step 1 – Verify That Your Device Supports Adoptable Storage

  1. Insert the SD card into your phone.
  2. Open Settings > Storage.
  3. If you see an option called Format as internal (or Adoptable storage), your device supports it. Tap it and follow the prompts to format the card. Warning: This erases all data on the card.
  4. After formatting, the card will appear as part of internal storage (e.g., "Internal shared storage").

If the option is missing, your manufacturer has disabled adoptable storage. In that case, the method described here cannot be used.

Step 2 – Connect Your Phone to the PC and Verify ADB

  1. Connect the phone via USB and choose the File Transfer (MTP) mode.
  2. Open a command prompt (Windows) or terminal (macOS/Linux) and navigate to the folder containing adb.
  3. Run adb devices. You should see a device serial number followed by device. If you see unauthorized, accept the RSA key prompt on the phone.

Successful connection is essential; all subsequent commands run on the phone via this channel.

Step 3 – Identify the System Apps You Want to Move

Not every system app is a good candidate. Focus on bloatware that you actually use (e.g., a manufacturer’s gallery, music player, or note‑taking app). Use the following command to list all system packages:

adb shell pm list packages -s

The -s flag limits the output to system packages. To find a specific app, pipe the output through grep (Linux/macOS) or findstr (Windows):

adb shell pm list packages -s | grep "gallery"

Note the full package name (e.g., com.samsung.android.gallery).

Step 4 – Disable the System App for the Current User

  1. Run the disable command, replacing PACKAGE_NAME with the actual name:
    adb shell pm disable-user --user 0 PACKAGE_NAME
  2. You should see Package PACKAGE_NAME new state: disabled-user. The app disappears from the launcher.

If the command fails with "Error: not allowed to disable package", the app is a core system component and must stay enabled. Skip it.

Step 5 – Re‑install the App as a User‑Installed Package

Now ask the package manager to install the disabled system app for the current user. This creates a copy in /data/app that can be moved.

  1. Execute:
    adb shell cmd package install-existing PACKAGE_NAME
  2. On success you’ll see Success: installed existing package PACKAGE_NAME.

At this point the app is treated like any user‑installed app. Verify it appears in Settings > Apps.

Step 6 – Change the Default Install Location to “External”

Android’s package manager respects a global install‑location setting. Setting it to 2 (external) tells the system that new installations should prefer the SD card. Existing user apps can then be moved manually.

  1. Run:
    adb shell pm set-install-location 2
  2. Confirm the change with:
    adb shell pm get-install-location
  3. The output should be 2 [external].

If you later want to revert to internal‑only installs, repeat the command with 1 (internal).

Step 7 – Move the App to the SD Card via the UI

Android does not expose a direct ADB command to move an app to external storage, but once the app is a user app the standard UI works.

  1. Open Settings > Apps & notifications.
  2. Tap See all apps and locate the app you just re‑installed.
  3. Tap Storage. If the app supports external storage, you’ll see a Change button.
  4. Select SD card and confirm. The system copies the app’s data to the adoptable storage and updates the app’s location flag.

After the move, the app’s storage usage will be reflected under the SD‑card section in Settings > Storage.

Step 8 – Verify the Move

Run the following command to see where the package lives:

adb shell pm get-app-ops PACKAGE_NAME

While this command shows permission ops, a more direct check is:

adb shell dumpsys package PACKAGE_NAME | grep -i "codePath"

If the path points to /data/app/… and the app’s storage summary shows the SD card, the move succeeded. You can also open the app and confirm it launches without errors.

Step 9 – Optional – Automate the Process for Multiple Apps

If you have several bloatware packages, you can script the steps. Below is a minimal Bash snippet (Linux/macOS) that disables, reinstalls, and attempts to move a list of packages:

#!/bin/bash
PACKAGES=(
  "com.samsung.android.gallery"
  "com.samsung.android.messaging"
  "com.samsung.android.app.contacts"
)
for PKG in "${PACKAGES[@]}"; do
  echo "Processing $PKG"
  adb shell pm disable-user --user 0 $PKG
  adb shell cmd package install-existing $PKG
  # UI move must be manual; we only set location flag here
  echo "Package $PKG ready to be moved via Settings > Apps > Storage"
done

Run the script while your phone is connected. Remember that the UI step cannot be fully automated without root.

Step 10 – Troubleshooting

10.1 App Fails to Launch After Move

  • Cause: The app was not designed to run from external storage and relies on native libraries that remain in /system.
  • Fix: Move the app back to internal storage (Settings > Apps > Storage > Change > Internal) and consider disabling it instead of moving.

10.2 “Error: not allowed to disable package”

  • Cause: Core framework or Google Play services.
  • Fix: Skip these packages; they cannot be moved or disabled without root.

10.3 ADB Returns “device offline”

  • Cause: USB connection issue, stale RSA key, or the phone entered sleep mode.
  • Fix: Re‑plug the USB cable, ensure the phone stays awake (Settings > Developer options > Stay awake), and re‑authorize the computer.

10.4 The “Change” button is Greyed Out

  • Cause: The app does not support external storage, or the global install location is still set to internal.
  • Fix: Verify pm get-install-location returns 2. If not, re‑run the command. If the button remains disabled, the app simply cannot be moved.

Step 11 – Post‑Move Maintenance

Adoptable storage behaves like internal storage: the system may encrypt it and move data around during OTA updates. Keep the following in mind:

  • Do not remove the SD card while the device is powered on. Doing so can corrupt the moved apps.
  • When performing a major OS upgrade, the system may re‑format the adoptable card. Back up any app data you cannot afford to lose.
  • Periodically check Settings > Storage to ensure the SD card still shows the expected free space. A sudden drop could indicate a misbehaving app.

When Not to Use This Method

If your device does not support adoptable storage, or if you rely on fast internal flash for performance‑critical apps (games, camera, etc.), moving apps may degrade responsiveness. In those cases, consider disabling the unwanted system apps instead of moving them.

Wrap‑Up

By leveraging ADB’s ability to disable system packages and reinstall them as user apps, you can safely relocate many pre‑installed apps to an adoptable SD card without ever rooting your phone. The process is reversible: simply re‑enable the original system package with adb shell pm enable --user 0 PACKAGE_NAME and uninstall the user copy if desired.

With the steps, warnings, and troubleshooting tips above, you should now have a clearer path to reclaiming internal storage on Android devices that otherwise feel cramped by manufacturer bloatware.

User Comments (0)

Add Comment
We'll never share your email with anyone else.