Após instalar o update do Android Studio 2.1 no meu PC Linux, e este me pedir para actualizar as SDK tools, deparei-me com um erro:
“No space left on device…”
Reparei que haviam mais pessoas a reportar este problema que se deve ao facto de a JVM usar, por defeito, a directoria /tmp como directoria temporária. Tendo encontrado a solução, decidi escrever este artigo e tentar ajudar quem se depare também com este problema.
A causa está no espaço que normalmente é reservado para esta directoria temporária: /tmp. Muitas das distribuições de Linux usam esta directoria para armazenamento temporário e monta-a numa partição RAM FS (digamos que um disco RAM) com cerca de metade do tamanho da memória instalada. Se, por exemplo, o computador tiver 4Gb de RAM, a directoria /tmp terá 2Gb. Ora, alguns dos ficheiros das actualizações do Android Studio têm cerca deste tamanho, ou mais e, durante o download, a directoria /tmp enche e fica sem espaço livre.
A solução: Indicar outra directoria como directoria temporária. Para tal, passamos à VM do JAVA o argumento:
-Djava.io.tmpdir=/caminho/para/temporária
No meu caso, decidi criar uma directoria “tmp” na minha “home” e indicar este argumento nos ficheiros de configuração do Android Studio.
Para o efeito, dentro do Android Studio, vamos ao menu “Help > Edit Custom VM Options”.
O AS irá abrir um documento com o nome “studio64.vmoptions” que se situa em:
~/.AndroidStudio2.1/studio64.vmoptions
(O caminho poderá ser diferente, conforme a versão do AS).
Neste ficheiro, temos as opções que são enviadas à JVM para executar o AS. Neste ficheiro, adicionamos a linha, por exemplo, para um user com o nome carlos:
-Djava.io.tmpdir=/home/carlos/tmp
Deve-se evitar o uso do “~”. Por exemplo, se colocar ~/tmp, será criada uma directoria ‘~’ na sua home!
Depois de reiniciar o Android Studio, as actualizações já deverão correr com sucesso! Porém, certifique-se que tem espaço suficiente na sua directoria “home”! Pode sempre optar por outra directoria, desde que tenha permissões de acesso a esta.
NOTA: Se tiver problemas idênticos durante a compilação com o “gradle”, esta solução também poderá resolver o problema!
Este artigo foi escrito com a antiga grafia.