Android Tip : Moving applications to your SD card

One of the best things that could happen to a smart phone owner is the variety of applications (both paid and free) available. Android Market has a huge catalogue of applications that fit your every need. The bad part is running out of space on your phone – most of these applications directly install on to the phone memory and not to your memory card.

A few applications provide a feature where you can move them to the SD card [Application Manager, Select Application, and Select 'Move to SD Card'] and free up space on your phone memory. Some of the applications can not be moved, as the button is not disabled. If your phone runs OEM firmware, it will have a lot of crapware that you can’t uninstall or move to SD card. Also, one has A2SD (Apps 2 SD), which involves creating an EXT3 partition on your memory card. Though rooting is easy, most people don’t do it. So here’s a simple trick that you can use, without rooting your phone, to move all your applications to the SD Card, and this also ensures that whatever new applications you install, go directly to your memory card, thereby saving precious phone memory.

First, you would need to Download the Android SDK kit and tools. This is free, and don’t worry – we will not be writing any code. The kit contains a few essential tools that we need to set our preferences. Extract the contents of the ZIP file. Now here are the steps:

1. Set your phone on USB Debugging mode [Settings, Programs, Development Settings, USB Debugging - Select this option if it is not selected already]
2. Open a terminal shell (On Windows, open a command prompt session), and navigate to ‘Tools’ folder in the extracted contents.
3. Type “adb shell” (On Windows) ["./adb shell" on Linux/Mac systems]
4. If you set the phone in the correct mode, you will get a ‘#’ prompt.
5. On the prompt, type

pm setInstallLocation 2

6. Wait for the ‘#’ prompt to appear. Type ‘exit’ to quit adb prompt. You can exit the shell window now.

You’re done. You will be able to move most of the applications to SD Card now. All new applications that are installed will go directly to the SD card.

A few things to take care of:
1. If the application provides Widgets and you use them, DO NOT move them to SD card – the widgets will not function correctly if you move them to the SD Card. If it provides Widgets, and you are not going to use them, or the app does not provide widgets, it is safe to move them.
2. If you’re planning to root your phone using Unrevoked Forever, you will have to reset the default install location to phone memory (Details on that below).

Restoring the install location back to phone memory:
Follow the steps listed above, when you get to Step 5, use this command instead:

pm setInstallLocation 0

This will not void your phone warranty, your phone does not need to be rooted. I’ve checked this with FroYo (Android 2.2) and Gingerbread (Android 2.3) and it works beautifully.

Notes:
1. I did not discover this method. Most websites talk about moving apps to memory card, but do not talk about how to restore it back in the same page. Also the note on being unable to use Unrevoked Forever for rooting is missing. It took me a while to figure it out that I couldn’t root my phone because the apps were being installed on my memory card, and to use Unrevoked Forever, you have to reset this.
2. I’ve done this several times, never facing any problems. If you do follow the steps mentioned here to the ‘T’ and end up screwing up your phone, I can not be held responsible.

About these ads

30 thoughts on “Android Tip : Moving applications to your SD card

  1. I have tried this on HTC Wildfire S A510e, Android 2.3.3 and got:
    k….s@s….a:/opt/software/apps/android-sdk-linux_x86/platform-tools$ ./adb shell
    error: insufficient permissions for device
    k….s@s….a:/opt/software/apps/android-sdk-linux_x86/platform-tools$ sudo ./adb shell
    error: insufficient permissions for device
    both as normal and root user. Any suggestions? Should I root my phone? Do You know the method for rooting for mentioned phone?

  2. I have the solution. adb server must be restarted as root:
    adb kill-server
    sudo adb start-server
    Then everything goes smootly.

  3. krzys : I was just about to say that. Looks like the user account you are using doesn’t have sufficient privileges. There’s no need to root the phone. I run adb from a user account that has administrator rights and that works well for me.

  4. I am on Windows 7 connecting with HTC Wildfire. In the PC command window I have to go into the directory where adb.exe is to run the command. “adb shell” returns no errors; it also returns no # or $. It remains in the same directory D:\etc where I ran the command. When I run the pm command I get ‘pm’ is not recognized as an internal or external command. Can you help please?

  5. Yes I’m running with Administrator rights.
    The latest Android-SDK does not download adb with it. You now have to install the SDK to get the adb and it now gets installed in platform-tools. I have the tools directory, platform-tools, and platform-tools/bin in my environment variables so I no longer have to go to the platform-tools directory in my command window to run adb shell.
    It’s as if the shell commands don’t exist. Am I missing a library or environment path? Do you know where the shell commands reside in the SDK?

  6. 0. Ensure your phone is disconnected from the PC unless otherwise mentioned below.
    1. Use the installer for SDK. The new version of SDK has a few changes where they have moved out adb.exe from within the .\tools folder. Follow the instructions (like installing Java SDK, etc) on screen.
    2. Once the installation is complete, launch Android SDK Manager (this happens automatically). In case it does’t, do it manually. It shows you a set of options, you can install ONLY “Android SDK Platform-tools” and ignore the others.
    3. Once Step 2 is completed, from the SDK Manager, select “Available Packages”->”Third Party Addons”->”Google Inc”->”Google USB Driver Package, Revision 4″ and click on “Install selected”. This will install the necessary drivers for your phone.
    4. Now connect your phone. And follow the instructions mentioned here to install the driver – http://developer.android.com/sdk/win-usb.html [This seems like the most probably cause why adb doesn't work - your phone needs an ADB driver for Windows 7 and this is causing all the problems]. [If you run into problems getting the right driver, let me know over a comment if you want me to help you over eMail - I can provide you with workaround in getting the Google driver to work]

    Once your driver installation is OK, you can go to \platform-tools and run adb shell.

    Just to let you know I’m not BS-ing you around, here’s a screenshot of my PC running ADB shell on Windows 7 (I have a HTC Desire)

    http://dl.dropbox.com/u/15821797/Photos/Blog/Win7_adb_shell.jpg

  7. Wow! Thanks for info Jnarin. I do appreciate your time and effort to help me. I have to take time out with the wife this evening so I’ll give it a run through tomorrow and get back to you.

  8. You’re welcome :) The only issue you may face is when installing the adb driver for Windows. You *don’t* have to install HTC Sync on your PC. If the Google driver doesn’t work, you can get it to work with a few simple tweaks (i.e, by modifying a text file) that won’t cause any damage. HTC’s software is bloated and has stuff that we don’t need – and even if you do install it, I’m not really sure if it will work. I’m quite positive that the ADB driver for HTC Wildfire on Windows 7 is the culprit here.

    And I have no clues why Google suddenly decided to knock off adb in their latest releases of SDK kit.

    Have a nice evening. :)

  9. Some clarification before I attempt the above:
    1. Prior to step 4, connecting the phone and installing the driver; should I close the SDK tool on the PC or does it not matter? I would assume that I could close it and that the SDK manager is not required any further.
    2. When I connect my phone I have the options to connect, a:for charge only; b:for sync contacts and calendar (requires HTC sync on machine); or c:to mount as disc drive. I would assume that I should mount as a disk drive; is that correct?
    3. To install the Android USB driver on Windows 7 for the first time; bullet 3 says to click on Devices: there is no Devices!; there is a Device Manager but it does not look as if the following instructions would apply here! Doh!
    Can you advise please? Thanks.

  10. 1. You can close the SDK tool once the driver download is completed. It is no longer needed.
    2. You don’t need to mount the phone as disk drive. You have to enable USB debugging on the phone. For this, on the phone, please go to Settings->Applications->Development Settings and select ‘USB Debugging’ option
    3. There has to be. Google gave me this link – http://pcsupport.about.com/od/windows7/f/open-device-manager-windows-7.htm which talks several ways about getting the device manager screen. There will be a section titled ‘Others’ which will have your phone listed as ‘Android Phone’ or something on similar lines.

  11. hi! good morning! i’m new on my htc wildfire. and i want to connect my phone via internet to download my pictures. what can i do access my phone to save my pics/videos to my pc. is thre any installer needed? whn they gave me the htc, there’s no software just the accessories, and warranty leaflet. tnx. good day! :)

  12. Pingback: Panasonic HDC-SD40K HD SD Card Camcorder (Black) | Camera Geeks | Best Deal Cheap Digital Cameras

  13. can we do it thru mac by installing only anriod-sdk_r20-macosx or we reqd. more programme for moving application from my HTC desire internal memory to sd card.

    • You will need the SDK *AND* tools. You will need the SDK to install tools – adb program is part of Android SDK tools now, and yes, you can do it with a Mac. I did it with a Mac.

  14. OK, tested it and setting location to 2 does not work on the Samsung Galaxy S3, indeed, if you set Location to 2, you will get an out of memory Error :-(

  15. Hi.

    I’m running Mac OSX 10.5.8 and have an HTC Desire. I’ve tried following your directions but get stuck after typing in adb shell. It opens in terminal and then gives a list of commands the phone recognises and then leaves a line saying Process complete and won’t give a command prompt. I’ve tried linking the phone with USB debugging, mounted as a disk drive, even charge only. I am obviously missing out on one simple step. Heelp!!

  16. Please, help me. I want to move apps to my SD card because it keeps telling me there’s insufficient space on my phone. I deleted all photos, music and videos and most of my apps. I only have the usual apps I cannot delete. I have a 32 GB SD card on my phone. How can I put most of my apps on my SD card or download apps directly to my SD card? I already downloaded the SDK (android-sdk-macosx), moved it to my Applications folder, and installed the platform tools. Every other tutorial or description gets me confused because it’s for a Windows PC or it stops describing further steps for Mac OSX. I have opened the Terminal and wrote the command that I read online which is “cd android-sdk-macosx”. It says: “No such file or directory”. Sadly, I don’t know much about technology and I have no idea what to do next.

    If you have more information regarding this matter, please write. Thank you for helping.

    • You will first have to navigate to your “Applications” folder. Open terminal, and type “cd /Applications”
      Now you should be able to navigate to your android sdk folder. Just type ‘cd and’ (no space) and key in tab for auto complete, and follow the rest of the instructions.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s