This article at HowtoGeek describes a possible way utilizing the adb:
- enable USB debugging
- connect your device to your computer
- execute the command
adb pm setInstallLocation 2
(or, new syntax,adb pm set-install-location 2
) - disconnect, done.
This command will set the devices default installation target to your SDCard. That doesn't necessarily mean everything gets installed there: only apps supporting this will go there, and devs can "overrule" this in their apps manifest if they think it's needed. From the linked API reference:
Changes the default install location. Location values:
0
: Auto—Let system decide the best location.
1
: Internal—install on internal device storage.2
: External—install on external media.
Note: This is only intended for debugging; using this can cause applications to break and other undesireable behavior.
For more details on ADB, and how you can e.g. get a minimal version of it to your computer (without the overkill of installing the entire SDK), you can take a look at the adb tag-wiki.
Update: To avoid confusion with t0mm13b's answer, some clearance on the installation process:
- you find some app on google-play-store and decide to install it
- after you've clicked "install" and agreed on terms/permissions, the apk is downloaded to
/data/local
, i.e. to your internal-storage. You can't change that. - when the download is completed, the
.apk
will be installed automatically. Where to, depends on multiple things:
- if the dev did not specify the
android:installLocation
property in his appsManifest
, the app will be installed to internal story. Full stop, no other choice (see: API reference). - if this
android:installLocation
is set topreferExternal
, and external storage is available, it will go there. - if it's set to
auto
, it again depends:
- does the app contain widgets, services, wants to start at boot, and several other things, it goes to internal storage. Full stop, no other choice.
- it goes where the devices "default install location" points to