Posso alterar a localização do cache do dalvik, por exemplo, com um link simbólico?

9

Atualmente, uso o Link2SD, pois o armazenamento on-line do meu telefone é insuficiente para mais do que alguns aplicativos essenciais. É muito eficaz, mas limitado a quando o telefone está ligado.

Ao alterar as ROMs, o cache do dalvik é limpo e, quando o telefone reinicia, você vê uma barra de progresso dizendo que o Android está otimizando aplicativos. Portanto, dado um número razoável de aplicativos, o cache do dalvik preenche o armazenamento muito antes que o link2sd possa fazer algo a respeito.

Portanto, existe uma maneira de montar uma pasta de cartão SD como o local apropriado do cache antes que o sistema inicie e faça seus negócios? Eu sei que isso pode envolver a criação de um link simbólico, mas simplesmente não sei quando as coisas estão montadas e em que ordem.

Eshwar
fonte

Respostas:

2

Claro que você pode. Embora pareça que não há problema em migrar o dalvik-cache para um sistema de arquivos normal de cartão SD (o mais comum, vfat), ainda é altamente recomendável que você formate seu cartão SD para ext4 (ou o mesmo que o seu /data) para garantir que tudo funcione bem.

Então vamos. É recomendável fazer um backup completo de todos os seus aplicativos antes de prosseguir, mas se você tiver sorte, não será necessário. Supondo que você tenha um emulador de terminal para executar as tarefas necessárias.

Primeiro, crie uma pasta para a qual você deseja migrar seu dalvik-cache. Em seguida, chmode chowna nova pasta para combinar /data/dalvik-cache. Se você estiver executando um sistema operacional Android habilitado para SELinux, não se esqueça de alterar os contextos de segurança correspondentemente. Corre

ls -dlZ /data/dalvik-cache
ls -lZ /data/dalvik-cache

para ver as permissões originais, proprietário / grupos e contextos de segurança da pasta dalvik-cache.

Em seguida, copie todos os arquivos /data/dalvik-cachepara seu novo local, por exemplo /storage/sdcard1/dalvik-cache. Você pode usar o cp -acomando para preservar os atributos do arquivo, o que tornaria as coisas mais simples.

Verifique se nenhum novo aplicativo é iniciado durante o processo da etapa a seguir.

Em seguida, rm -r /data/dalvik-cachecrie um link simbólico para o novo local usando

ln -s /storage/sdcard1/dalvik-cache /data/dalvik-cache

Isso é tudo. Foram realizadas. Reinicie o seu telefone (não obrigatório, mas recomendado).

Alguns avisos sobre esse processo:

  1. O busybox nem sempre funciona bem, pois o Android é baseado em um kernel Linux altamente modificado. Por exemplo, quase todas as funções relacionadas ao SELinux não funcionam corretamente. Você pode testá-lo como mostrado abaixo.

    toolbox ls -Z /data
    busybox ls -Z /data
    toolbox getenforce
    busybox getenforce
    

    No entanto, eles podem funcionar corretamente, dependendo da versão do Android:

    busybox chcon <context> <files...>
    busybox runcon <context <program> [args...]
    
  2. Nunca remova o seu cartão SD. Se você reformatar o cartão SD, verifique se ele ainda está ext4 E crie a pasta dalvik-cache novamente antes de inicializar o telefone pela primeira vez.

iBug
fonte
Eu não tinha ideia de como escrevi essa resposta abrangente quando a vejo novamente depois de um ano. Acho que esqueci muito do Android (o que é obviamente impossível).
iBug 16/01/19
1

Existem alguns Howtos disponíveis, que podem ser úteis para resolver seu problema:

De acordo com vários tópicos do fórum, A2SDGUI - Darktremor A2SD GUI deve ser o aplicativo de escolha para mover o cache Dalvik para o seu cartão SD.

Izzy
fonte
11
Seria bom se você pudesse adicionar algumas informações dos links em seu post
Flow
Isso é demais para integrar com a minha resposta - e é por isso que extraí apenas a dica básica, ou seja, o aplicativo para fazer o trabalho.
Izzy