adb shell pm でアプリのインストール先を指定する

FroyoでSDカードにアプリがインストールできるということなのだが、
Androidのアプリのインストール先を指定できるらしい。

$ adb shell pm setInstallLocation 2

The setInstallLocation command changes the default install location
  0 [auto]: Let system decide the best location
  1 [internal]: Install on internal device storage
  2 [external]: Install on external media

この「pm」というコマンド、
PackageManager の略だと思うのだが、こんなかんじ。

usage: pm [list|path|install|uninstall]
       pm list packages [-f]
       pm list permission-groups
       pm list permissions [-g] [-f] [-d] [-u] [GROUP]
       pm list instrumentation [-f] [TARGET-PACKAGE]
       pm list features
       pm path PACKAGE
       pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] PATH
       pm uninstall [-k] PACKAGE
       pm enable PACKAGE_OR_COMPONENT
       pm disable PACKAGE_OR_COMPONENT
       pm setInstallLocation [0/auto] [1/internal] [2/external]

The list packages command prints all packages.  Options:
  -f: see their associated file.

The list permission-groups command prints all known
permission groups.

The list permissions command prints all known
permissions, optionally only those in GROUP.  Options:
  -g: organize by group.
  -f: print all information.
  -s: short summary.
  -d: only list dangerous permissions.
  -u: list only the permissions users will see.

The list instrumentation command prints all instrumentations,
or only those that target a specified package.  Options:
  -f: see their associated file.

The list features command prints all features of the system.

The path command prints the path to the .apk of a package.

The install command installs a package to the system.  Options:
  -l: install the package with FORWARD_LOCK.
  -r: reinstall an exisiting app, keeping its data.
  -t: allow test .apks to be installed.
  -i: specify the installer package name.
  -s: install package on sdcard.
  -f: install package on internal flash.

The uninstall command removes a package from the system. Options:
  -k: keep the data and cache directories around.
after the package removal.

The enable and disable commands change the enabled state of
a given package or component (written as "package/class").

The getInstallLocation command gets the current install location
  0 [auto]: Let system decide the best location
  1 [internal]: Install on internal device storage
  2 [external]: Install on external media

The setInstallLocation command changes the default install location
  0 [auto]: Let system decide the best location
  1 [internal]: Install on internal device storage
  2 [external]: Install on external media

いくつアプリを入れているのか分かっていなかったのだが。

$ adb shell pm list packages -f | wc -l
151

どのアプリがどこにインストールされているか。

$ adb shell pm list packages -f | sort
package:/data/app-private/com.gmail.nagamatu.radiko.apk=com.gmail.nagamatu.radiko
package:/data/app-private/com.polarbit.rthunderlite.apk=com.polarbit.rthunderlite
package:/data/app-private/jp.sakura_hoaru.Menu0-1.apk=jp.sakura_hoaru.Menu0
package:/data/app/com.adamrocker.android.input.simeji-1.apk=com.adamrocker.android.input.simeji
package:/data/app/com.adobe.flashplayer-1.apk=com.adobe.flashplayer
package:/data/app/com.adobe.reader-1.apk=com.adobe.reader
package:/data/app/com.appspot.swisscodemonkeys.apps-1.apk=com.appspot.swisscodemonkeys.apps
package:/data/app/com.aurorasoftworks.quadrant.ui.standard-2.apk=com.aurorasoftworks.quadrant.ui.standard
package:/data/app/com.benigumo.siteshot-1.apk=com.benigumo.siteshot
package:/data/app/com.benigumo.useragentswitcher-1.apk=com.benigumo.useragentswitcher
package:/data/app/com.blogspot.fareastsky.latte.apk=com.blogspot.fareastsky.latte
package:/data/app/com.bwx.bequick-1.apk=com.bwx.bequick
package:/data/app/com.chnavi.android2ch.apk=com.chnavi.android2ch
package:/data/app/com.codesector.speedview.free-1.apk=com.codesector.speedview.free
package:/data/app/com.curvefish.widgets.autorotateonoff-1.apk=com.curvefish.widgets.autorotateonoff
package:/data/app/com.dropbox.android-2.apk=com.dropbox.android
package:/data/app/com.eclipsim.gpsstatus2.apk=com.eclipsim.gpsstatus2
package:/data/app/com.electricsheep.mtp-1.apk=com.electricsheep.mtp
package:/data/app/com.evernote-1.apk=com.evernote
package:/data/app/com.farproc.wifi.analyzer-2.apk=com.farproc.wifi.analyzer
package:/data/app/com.fede.launcher-1.apk=com.fede.launcher
package:/data/app/com.fring-1.apk=com.fring
package:/data/app/com.fsck.k9-2.apk=com.fsck.k9
package:/data/app/com.google.android.apps.chrometophone-1.apk=com.google.android.apps.chrometophone
package:/data/app/com.google.android.apps.localdirectory-1.apk=com.google.android.apps.localdirectory
package:/data/app/com.google.android.apps.maps-1.apk=com.google.android.apps.maps
package:/data/app/com.google.android.maps.mytracks-2.apk=com.google.android.maps.mytracks
package:/data/app/com.google.code.apndroid.apk=com.google.code.apndroid
package:/data/app/com.google.code.appsorganizer-1.apk=com.google.code.appsorganizer
package:/data/app/com.google.zxing.client.android-1.apk=com.google.zxing.client.android
package:/data/app/com.greatbytes.fastreboot-1.apk=com.greatbytes.fastreboot
package:/data/app/com.hatena.android.accounts.apk=com.hatena.android.accounts
package:/data/app/com.luke.worldcup2010-2.apk=com.luke.worldcup2010
package:/data/app/com.madcowsolutions.NavLauncher-1.apk=com.madcowsolutions.NavLauncher
package:/data/app/com.md.search-2.apk=com.md.search
package:/data/app/com.meebo-1.apk=com.meebo
package:/data/app/com.metago.astro-1.apk=com.metago.astro
package:/data/app/com.metago.astro.network.bluetooth-1.apk=com.metago.astro.network.bluetooth
package:/data/app/com.metago.astro.smb-1.apk=com.metago.astro.smb
package:/data/app/com.mixzing.basic-2.apk=com.mixzing.basic
package:/data/app/com.newsrob-1.apk=com.newsrob
package:/data/app/com.nubinews.japanreader-2.apk=com.nubinews.japanreader
package:/data/app/com.popczar.music-1.apk=com.popczar.music
package:/data/app/com.qik.android-2.apk=com.qik.android
package:/data/app/com.roflharrison.agenda-2.apk=com.roflharrison.agenda
package:/data/app/com.seesmic-1.apk=com.seesmic
package:/data/app/com.spodtronic.radio.jazzfm-1.apk=com.spodtronic.radio.jazzfm
package:/data/app/com.trans.music.find.apk=com.trans.music.find
package:/data/app/com.youtube_ripper-2.apk=com.youtube_ripper
package:/data/app/it.medieval.blueftp-1.apk=it.medieval.blueftp
package:/data/app/jp.co.bii.android.app.cnv.apk=jp.co.bii.android.app.cnv
package:/data/app/jp.meloncake.mydocomo-2.apk=jp.meloncake.mydocomo
package:/data/app/jp.ne.gate.calpad-1.apk=jp.ne.gate.calpad
package:/data/app/lysesoft.andftp-1.apk=lysesoft.andftp
package:/data/app/net.grandnature.android.imodenotifier-2.apk=net.grandnature.android.imodenotifier
package:/data/app/net.rgruet.android.g3watchdog-1.apk=net.rgruet.android.g3watchdog
package:/data/app/net.uhmaro.android.rosen.apk=net.uhmaro.android.rosen
package:/data/app/nextapp.systempanel-1.apk=nextapp.systempanel
package:/data/app/org.appaware-2.apk=org.appaware
package:/data/app/org.connectbot.apk=org.connectbot
package:/data/app/org.paulmach.textedit.apk=org.paulmach.textedit
package:/data/app/org.satok.gweather.apk=org.satok.gweather
package:/data/app/org.sevenleaves.android.androidmanifestreader-1.apk=org.sevenleaves.android.androidmanifestreader
package:/data/app/org.zwanoo.android.speedtest.apk=org.zwanoo.android.speedtest
package:/data/app/sg.ruqqq.quickdesk-1.apk=sg.ruqqq.quickdesk
package:/data/app/tv.ustream.player-1.apk=tv.ustream.player
package:/data/app/tv.ustream.usclient.apk=tv.ustream.usclient
package:/data/app/vStudio.Android.GPhoto-1.apk=vStudio.Android.GPhoto
package:/data/app/ymst.android.homeswitcher.apk=ymst.android.homeswitcher
package:/mnt/asec/brut.googlemaps-1/pkg.apk=brut.googlemaps
package:/mnt/asec/com.NamcoNetworks.PacMan-1/pkg.apk=com.NamcoNetworks.PacMan
package:/mnt/asec/com.benigumo.popupbookmarks-1/pkg.apk=com.benigumo.popupbookmarks
package:/mnt/asec/com.ccpcreations.android.MarioLiveWallpaprer-1/pkg.apk=com.ccpcreations.android.MarioLiveWallpaprer
package:/mnt/asec/com.lookout-1/pkg.apk=com.lookout
package:/mnt/asec/com.quoord.tapatalkxda.activity-1/pkg.apk=com.quoord.tapatalkxda.activity
package:/mnt/asec/com.replica.replicaisland-1/pkg.apk=com.replica.replicaisland
package:/mnt/asec/com.shazam.android-1/pkg.apk=com.shazam.android
package:/mnt/asec/since2006.apps.droidhb-1/pkg.apk=since2006.apps.droidhb
package:/mnt/asec/souvey.musical-1/pkg.apk=souvey.musical
package:/system/app/AccountAndSyncSettings.apk=com.android.providers.subscribedfeeds
package:/system/app/ApplicationsProvider.apk=com.android.providers.applications
package:/system/app/Bluetooth.apk=com.android.bluetooth
package:/system/app/Browser.apk=com.android.browser
package:/system/app/Calculator.apk=com.android.calculator2
package:/system/app/CalendarGoogle.apk=com.google.android.calendar
package:/system/app/CalendarProvider.apk=com.android.providers.calendar
package:/system/app/CameraGoogle.apk=com.google.android.camera
package:/system/app/CarHomeGoogle.apk=com.google.android.carhome
package:/system/app/CarHomeLauncher.apk=com.android.cardock
package:/system/app/CertInstaller.apk=com.android.certinstaller
package:/system/app/Contacts.apk=com.android.contacts
package:/system/app/ContactsProvider.apk=com.android.providers.contacts
package:/system/app/DefaultContainerService.apk=com.android.defcontainer
package:/system/app/DeskClockGoogle.apk=com.android.deskclock
package:/system/app/DownloadProvider.apk=com.android.providers.downloads
package:/system/app/DrmProvider.apk=com.android.providers.drm
package:/system/app/EmailGoogle.apk=com.android.email
package:/system/app/Facebook.apk=com.facebook.katana
package:/system/app/Gallery3DGoogle.apk=com.cooliris.media
package:/system/app/GenieWidget.apk=com.google.android.apps.genie.geniewidget
package:/system/app/Gmail.apk=com.google.android.gm
package:/system/app/GoogleBackupTransport.apk=com.google.android.backup
package:/system/app/GoogleCalendarSyncAdapter.apk=com.google.android.syncadapters.calendar
package:/system/app/GoogleContactsSyncAdapter.apk=com.google.android.syncadapters.contacts
package:/system/app/GoogleFeedback.apk=com.google.android.feedback
package:/system/app/GoogleGoggles.apk=com.google.android.apps.unveil
package:/system/app/GooglePartnerSetup.apk=com.google.android.partnersetup
package:/system/app/GoogleQuickSearchBox.apk=com.google.android.googlequicksearchbox
package:/system/app/GoogleServicesFramework.apk=com.google.android.gsf
package:/system/app/HTMLViewer.apk=com.android.htmlviewer
package:/system/app/HtcCopyright.apk=com.htc.copyright
package:/system/app/HtcEmailPolicy.apk=com.android.email.policy
package:/system/app/HtcSettings.apk=com.android.htcsettings
package:/system/app/LatinImeGoogle.apk=com.google.android.inputmethod.latin
package:/system/app/LatinImeTutorial.apk=com.google.android.latinimetutorial
package:/system/app/Launcher2.apk=com.android.launcher2
package:/system/app/LiveWallpapers.apk=com.android.wallpaper
package:/system/app/LiveWallpapersPicker.apk=com.android.wallpaper.livepicker
package:/system/app/MagicSmokeWallpapers.apk=com.android.magicsmoke
package:/system/app/MarketUpdater.apk=com.android.vending.updater
package:/system/app/MediaProvider.apk=com.android.providers.media
package:/system/app/MediaUploader.apk=com.google.android.apps.uploader
package:/system/app/Mms.apk=com.android.mms
package:/system/app/MusicGoogle.apk=com.android.music
package:/system/app/NetworkLocation.apk=com.google.android.location
package:/system/app/OneTimeInitializer.apk=com.google.android.onetimeinitializer
package:/system/app/PackageInstaller.apk=com.android.packageinstaller
package:/system/app/PassionQuickOffice.apk=com.qo.android.htcgep
package:/system/app/Phone.apk=com.android.phone
package:/system/app/PicoTts.apk=com.svox.pico
package:/system/app/Protips.apk=com.android.protips
package:/system/app/Settings.apk=com.android.settings
package:/system/app/SettingsProvider.apk=com.android.providers.settings
package:/system/app/SetupWizard.apk=com.android.setupwizard
package:/system/app/SoundRecorder.apk=com.android.soundrecorder
package:/system/app/Street.apk=com.google.android.street
package:/system/app/Talk.apk=com.google.android.talk
package:/system/app/TelephonyProvider.apk=com.android.providers.telephony
package:/system/app/TtsService.apk=android.tts
package:/system/app/Twitter.apk=com.twitter.android
package:/system/app/UserDictionaryProvider.apk=com.android.providers.userdictionary
package:/system/app/Vending.apk=com.android.vending
package:/system/app/VisualizationWallpapers.apk=com.android.musicvis
package:/system/app/VoiceDialer.apk=com.android.voicedialer
package:/system/app/VoiceSearch.apk=com.google.android.voicesearch
package:/system/app/VpnServices.apk=com.android.server.vpn
package:/system/app/YouTube.apk=com.google.android.youtube
package:/system/app/com.amazon.mp3.apk=com.amazon.mp3
package:/system/app/googlevoice.apk=com.google.android.apps.googlevoice
package:/system/app/kickback.apk=com.google.android.marvin.kickback
package:/system/app/soundback.apk=com.google.android.marvin.soundback
package:/system/app/talkback.apk=com.google.android.marvin.talkback
package:/system/framework/framework-res.apk=android