Instalando no SDCard por padrão

29

Gostaria de saber se existe uma maneira de dizer ao Android para instalar aplicativos no cartão micro SD por padrão, em vez de ter que baixar aplicativos para a memória interna primeiro e depois movê-los para o cartão SD manualmente.

obrigado

user2239505
fonte
especificamente por causa da @Yeradis resposta android.stackexchange.com/a/4976/156
GAThrawn
4
@ GAThrawn Não, isso não é uma bobagem disso. A pergunta que você vinculou é bastante "pode-se mover aplicativos para SD". Este é "como especificar o local de instalação padrão". Mesma rua, casa diferente.
11553 Izzy

Respostas:

33

Este artigo no HowtoGeek descreve uma maneira possível de utilizar o :

  • ativar o USB depuração
  • Conecte o dispositivo ao computador
  • executar o comando adb shell pm setInstallLocation 2
    (ou, nova sintaxe , adb shell pm set-install-location 2)
  • desconectar, feito.

Este comando definirá o destino de instalação padrão do dispositivo para o seu SDCard. Isso não significa necessariamente que tudo é instalado lá: apenas os aplicativos que suportam isso vão para lá, e os desenvolvedores podem "anular" isso no manifesto de seus aplicativos, se acharem necessário. Na referência da API vinculada :

Altera o local de instalação padrão. Valores de localização:

  • 0: Automático - deixe o sistema decidir a melhor localização.
  • 1: Interno - instale no armazenamento interno do dispositivo.
  • 2: Externo - instale em mídia externa.

Nota: Destina-se apenas à depuração; usar isso pode causar a quebra de aplicativos e outro comportamento indesejável.

Para obter mais detalhes sobre o ADB e como você pode, por exemplo, obter uma versão mínima dele no seu computador (sem o excesso de instalação do SDK inteiro), você pode dar uma olhada no tag-wiki .


Atualização: Para evitar confusão com a resposta de t0mm13b , algumas folgas no processo de instalação:

  1. você encontra algum aplicativo no e decide instalá-lo
  2. depois de clicar em "instalar" e concordar com os termos / permissões, o é baixado para/data/local , ou seja, para seu . Você não pode mudar isso.
  3. Quando o download estiver concluído, o programa .apkserá instalado automaticamente. Para onde depende de várias coisas:
    • se o desenvolvedor não especificou a android:installLocationpropriedade em seus aplicativos Manifest, o aplicativo será instalado na história interna. Ponto final, sem outra opção (consulte: referência da API ).
    • se android:installLocationestiver definido como preferExternale o armazenamento externo estiver disponível, ele será direcionado para lá.
    • se estiver definido como auto, depende novamente:
      1. o aplicativo contém widgets, serviços, deseja iniciar na inicialização e várias outras coisas, vai para o armazenamento interno. Ponto final, nenhuma outra escolha.
      2. vai para onde o dispositivo "local de instalação padrão" aponta para
Izzy
fonte
pode ajudar a incluir um aviso - não é garantido para trabalhar, especialmente se um aplicativo tem seus próprios widgets ... :)
t0mm13b
Como eu escrevi: somente os aplicativos que suportam isso irão para lá :) Widgets, serviços, etc. estão dizendo que não suportam :) :)
Izzy
depois de executar o comando adb shell pm setInstallLocation 2 erro: dispositivo não encontrado
moudrick 1/15
1
Parece que você pulou as duas primeiras etapas (ativando a depuração USB e conectando o dispositivo depois disso) - ou você está no Windows e não instalou os drivers correspondentes. Por favor, siga o link correspondente e ir a partir daí, @moudrick.
Izzy
5

Isso não pode ser mudado! É assim que o Android funciona.

Todos os downloads do Google Play vão para o sistema de arquivos interno e, em seguida:

  • Configurações> Gerenciar aplicativos
  • Toque no aplicativo, verifique se o botão Mover para SDCard está ativado e você pode fazê-lo.

Se o botão Mover para SDCard estiver desativado ou acinzentado, é provável que isso impeça o funcionamento do aplicativo - como seus próprios widgets na tela inicial.

Além disso, consulte esta resposta na barra lateral relacionada à direita desta página. :)

t0mm13b
fonte
1
Você tem certeza, t0mm13b? Não havia algum comando ADB para adb shell pm setInstallLocation 2(ou seja, SDCard), conforme descrito aqui ?
Izzy
1
Um desenvolvedor pode especificar isso no Manifest para fornecer ao aplicativo a capacidade de ser movido para o SDCard. android:installLocation="auto"Não vi adb shell pm setInstallLocation 2, provavelmente você especificar o nome do pacote nesse caso ...
t0mm13b
1
Não, t0mm13b - veja minha resposta e o artigo vinculado. Isso define o local de instalação padrão do dispositivo . Então, se Manifestdiz "auto", é para onde vai. Se o Manifestdiz diferente de "auto", vai para onde Manifestdiz. Consulte também: API ref , também aqui para o pm set-install-locationcomando (new syntax).
Izzy
1
Izzy - o que eu especificado sobre AndroidManifest de android:installLocation- na verdade permite que o Mover para SDCard a partir das configurações de aplicativos gerem ... alguns devs não especificá-lo e torna o botão que está sendo desativado, mas reconheço - nunca vi o comando adb para fazer o que quer
t0mm13b
1
Ah, agora entendi - foco diferente: você estava dizendo "se um aplicativo não se destina a ser instalado no SD, você não pode fazê-lo" - enquanto eu estava focando em onde ele vai por padrão, a menos que seja especificado o contrário . Mas verifique as primeiras 4 linhas da sua resposta, pois elas dizem algo diferente. No entanto, você está correto: o download primeiro vai para /data/locale a partir daí o aplicativo é instalado. Mas, dependendo das configurações e do manifesto, ele é instalado para interno ou diretamente para externo a partir daí. // Se você gosta de discutir isso em detalhes: lembra do nosso pub, ahem, bate-papo? :)
Izzy
4

Instale o "Emulador de Terminal para Android" no seu celular e abra

$ su
# pm get-install-location
0[auto]
# pm set-install-location 2
# pm get-install-location
2[external]
Abhilash
fonte
2
Interessante, mas você tem que ter raiz para que isso funcione
Robert S. Barnes
-2

Vá para "Gerenciar aplicativos", selecione a guia "Todos" e localize "Google Play Store". Toque nele e pressione o botão "Desinstalar atualizações". Depois disso, vá para a Play Store todos os aplicativos serão instalados no seu cartão SD. Foi o que fiz no meu QMobile A110 (Android 4.2).

zulqarnain
fonte
1
Eu acho que você está perdendo o passo do meio em algum lugar onde você define o local de instalação padrão como o cartão SD e, mesmo assim, nem sempre funciona dessa maneira para todos os aplicativos.
Enigma
-3

O problema é que você pode alterar o diretório de instalação padrão se o telefone estiver enraizado. Faça o download do patcher da sorte e toque nas ferramentas. Você pode encontrar a opção para alterar o directort de instalação padrão. ** Não faça isso para o Android 4 ou superior, pois isso pode causar alterações irreversíveis. **

Vibhor
fonte
2
De acordo com a Android Market Market Version 2016, 97,7% de todos os usuários do Android estão usando o Android 4.0 ou posterior na data em que esta resposta foi publicada e, portanto, o Lucky Patcher pode causar alterações irreversíveis em quase todos os usuários atuais do Android.
Karel
2
Quais seriam as "mudanças irreversíveis"? Eu não os notei nos meus dispositivos Kitkat :) Mas como o @karel apontou: se você acha que não deve ser usado, por que o recomenda?
Izzy