Several readers have recently reported that they’ve managed to run out of free space, even with the Froyo implementation of Apps2SD. The way Google implemented it was poor to start with, but what makes it worse is that many apps in the Market still haven’t been updated to allow installation to SD card.
This guide shows you how to force all applications to be installed to your SD card.
- Phone running Froyo
- ADB installed – how to
- Ensure you have debugging enabled on your phone (Settings > Applications > Development > USB Debugging > Turn On)
- Connect your phone to USB
- Open Command Prompt/Terminal
- Type: adb shell pm setInstallLocation 2
- Press Enter
- That’s it!
- My widgets keep disappearing, help!
To prevent widgets from being removed, you’ll have to move their associated application back onto phone memory – to do this see FAQ #2
- How do I move certain apps back onto phone memory?
You can move any application onto phone memory by going to Settings > Applications > Manage Applications > On SD card, select the app you want and press Move to Phone
- How can I revert to the original settings?
Just open Command Prompt/Terminal and type: adb shell pm setInstallLocation 0
- Any other hidden commands?
There’s one more to force all apps to install to phone memory, but I doubt you’ll ever want to use it: adb shell pm setInstallLocation
Today I received my 16GB MicroSD to replace my now full 8GB. Normally to transfer contents it’s quite straightforward – just copy everything to computer then back onto the SD card (or from SD to SD if you’ve got a card reader). However, if you’ve got a rooted phone running apps2sd (also known as Apps2Ext) then there’s slightly more work involved to make sure that you end up transferring all your apps too. The method below describes how I managed it, and under that I’ve listed a few alternatives…
- Rooted phone
- SD card with ext partition
- ADB installed – how to
- Make sure you’ve still got your old SD card in
- Create a new folder on your computer called SD Card Backup
- Create 2 subfolders, one called FAT and another called EXT
- Connect your phone to computer and set to Disk Drive mode
- Copy all your SD card contents (FAT partition) into the FAT folder
- Open Command Prompt/Terminal on your computer
- Type: cd<space>
Make sure you use a space character, don’t type <space> and don’t press Enter yet!
- Drag and Drop the EXT folder into your command window, and you’ll notice that the full path to your EXT directory appears
- Press Enter
- Set your phone USB connection to Charge Only
- Type: adb pull /sd-ext/app .
Don’t forget that “.“!
- Wait while all your apps are copied into your EXT folder
- Once copied, insert your new SD card and use the same method you previously used to partition your new SD card as you want
I use the Amon RA recovery, flashed using Unrevoked. My partitions are: 4GB ext, 32MB swap (not really needed) and the rest as FAT
- Connect your phone via USB again
- In the command window, type: adb push . /sd-ext/app/
- Wait whilst all your apps are copied back to your ext partition
- Copy all your FAT files back onto the FAT partition
- Use Linux. Mounting your SD card in Linux will mount your ext partition too. It’s then a simple case of just copy and pasting your files from old SD to computer, then computer to new SD
- Titanium Backup. You can use Titanium Backup’s Batch feature to backup all the apps to the phones Fat partition, then copy the backups to new SD and do a batch restore
- MyBackupPro – similar to Titanium Backup, MyBackupPro allows you to backup all apps and their data, then restore them.
Why My Method?
I chose doing it the adb way because it doesn’t involve copying everything onto the SD card first – otherwise you’re waiting for everything to be backed up to SD, then to computer, then back to SD and then restoring using Titanium/MyBackupPro. It’s also good to have a copy of your apps saved on your computer just in case something goes wrong with your phone or SD card. If you already have adb installed, then it’s really quick to just run the adb command and grab all your apps.
Yesterday I was trying to install the adb drivers on my work computer, which runs Windows XP. Naturally, I tried the steps I posted up in a previous article but when it tried finding the drivers I got an error saying “Cannot install this hardware” because it could not find the necessary software. I correctly assumed that the problem was with the drivers themselves (which worked on my home XP install), and a quick search led me to a topic on XDA-Developers where one of the users has uploaded working ADB Drivers for HTC phones.
You can download the drivers from here. Use the instructions in this guide to install them (skip steps 8-12)
sh500 on XDA-Developers. That’s the post which contained the working drivers.
This guide was initially part of the How to Take Screenshots tutorial but has been separated out because it’s going to be referenced in a few upcoming tutorials.
Instructions – Mac users can skip to step 5
- Go to the Java Runtime Environment (or the JDK if you intend to develop your own apps) page
- Select your Operating System, agree to terms and click Continue
- Download the file shown below (the version number may differ, this is the latest at time of writing this article)
- When the download completes run the file to install it
- Get the Android SDK – free download available from here. Downloads are at the top of the page, just choose your relevant operating system – no need to follow the instructions on that page!
- When the download has completed extract the file:
- Windows – Right Click -> Extract All -> Follow the onscreen prompt.
- Mac – Double click the file
- Open the extract android-sdk-rXX-<os> folder, the android-sdk-<os> subfolder within it (if it’s there). You should see something like this:
- Windows: install the latest Android phone drivers using the instructions here
- That’s it. You’ve now got the Android SDK setup on your computer.
There’s no easy way to take screenshots with an Android phone. This is due to security issues that could arise if applications were capable of taking screenshots. For example, imagine an app that would run in the background, take a screenshot every 2 minutes and upload the image to a remote server. For now, two methods exist but neither are as straightforward as we’d like them to be:
1) Use a rooted phone. Rooting your phone gives you full access to your phone system and therefore it’s possible to access the screenshot functionality. If you’ve rooted your phone just download ShootMe from the Market and all you need to do is shake the phone to capture a screenshot.
2) Using the Android SDK and a USB cable.
This method involves a few steps but once you’ve completed the setup, taking future screenshots is very easy.
- Install the Android SDK using the instructions provided here
- On your HTC Desire go on Settings > Applications > Development. Check the USB debugging option
- Browse to your SDK locations and open the tools folder
- Make sure your phone is connected via USB, and run the ddms tool. You should see something like this:
- Make sure you select your device from the box on the right, then go on Device > Screen Capture
- The new window will grab your current phone screenshot and display it:
- You can use the Refresh, Rotate, Save and Copy options to take the respective action with your screenshot.
Every time you want to take a new screenshot, just follow the 3 steps in the Taking Screenshots section.