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.
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?
I have the solution. adb server must be restarted as root:
adb kill-server
sudo adb start-server
Then everything goes smootly.
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.
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?
Daivde
I do not have access to a Windows PC right now. I will check this and post an update in a few hours.
Davide
Just to know, did you launch ‘Command Prompt’ as an administrator or as a normal user?
Davide
I haven’t had a problem doing it on Win 7. Can you please check if you have necessary privileges?
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?
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
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.
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.
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.
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.
after i did this am not able to install skype from android market. pls help
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!
as i read davides’ post i’m installing now the sdk for android. hope i can go somewhere with this. i’m following your post in relation in installing the softwares.
Pingback: Panasonic HDC-SD40K HD SD Card Camcorder (Black) | Camera Geeks | Best Deal Cheap Digital Cameras
so happy cause from many days searching for such tool. In the end this helped me lot. thank you so much.
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.
Does this method work for the Samsung Galaxy SIII do you know?
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
No clues about the SGS3 / Android 4.* devices.
Does this method work for the Samsung Galaxy SIII do you know?
I do not know whether it works for SGS3 or devices running Android 4+
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!!
Do you have the necessary privileges to run adb from terminal? try ‘sudo adb shell’ or login as super user and try again
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.
I also have HTC Desire like Danny but I have Mac 10.7.5.
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.