Ubuntu - Erro: Falha ao criar o cartão SD

84

Vejo muitas postagens sobre como gravar no cartão SD, mas acredito que meu problema seja diferente. Não consigo criar o cartão SD durante o processo de construção de um AVD.

Inicialmente tentei usar o Android SDK e o AVD Manager para fazer isso, selecionando
Nome : my_avd
Alvo : Android 2.2 - API Nível 8
Cartão SD : Tamanho: 1024 MiB
Skin : Integrado: Padrão (HVGA)
Hardware : Propriedade: LCD abstraído Densidade, valor: 160

Isso abre uma janela com a mensagem:
"Resultado da criação do AVD 'my_avd':
Erro: Falha ao criar o cartão SD."

Tentei repetir o processo na linha de comando, recebendo um erro semelhante:

alex@alex-desktop:~$ android create avd -n my_avd -t 1 -c 1024M
Android 2.2 is a basic Android platform.
Do you wish to create a custom hardware profile [no]no
Error: Failed to create the SD card.

Tentar seguir as instruções para usar o mksdcard foi igualmente improdutivo; Acho que minha falta básica de experiência em Linux pode estar me causando um problema aqui. Quando tento usar o mksdcard, ele apenas informa que não consegue encontrar o arquivo ou diretório. A ferramenta mksdcard está disponível para uso dessa forma no Linux?

alex@alex-desktop:~$ mksdcard 1024M ./sdcard.iso
bash: /home/alex/android-sdk-linux_x86/tools/mksdcard: No such file or directory
alex@alex-desktop:~$ sudo android create avd -n my_avd -t 1 -c 1024M

Eu adicionei o diretório de ferramentas do Android à minha variável PATH, mas sinto que obviamente há algo mais que estou perdendo. Talvez algum tipo de direito de acesso?

Tentar executar o comando android com sudo também não pareceu ajudar:

alex@alex-desktop:~/android-sdk-linux_x86/tools$ sudo ./android create avd -n my_avd -t 1 -c 1024M
Android 2.2 is a basic Android platform.
Do you wish to create a custom hardware profile [no]no
Error: Failed to create the SD card.

Eu até tentei instalar o Eclipse e o plugin ADT e executar o gerenciador de lá sem sucesso. Qualquer dica seria muito apreciada. Aviso avançado de que sou um usuário novato do Linux, então, mesmo que pareça uma coisa óbvia e acéfala de verificar, eu ainda poderia ter perdido.

Alex Pritchard
fonte
@Alex Pritchard: Você provavelmente não precisa de um cartão SD falso de 1024M. Tente 32M em vez disso e veja se você tem melhor sorte.
CommonsWare,
@CommonsWare Infelizmente, o cartão SD de 32M ainda não consegue criar. :(
Alex Pritchard,
@Alex Pritchard: Isso é muito estranho. As imagens são criadas no mesmo diretório que o resto do AVD ( ~/.android/avd/whateveryoucalledit/), então não consigo entender como você pode criar um AVD, mas não um AVD com um cartão SD.
CommonsWare
@CommonsWare Tenho lido um pouco mais e acho que posso ter encontrado algo. Suspeito que pode haver algum problema porque estou usando a instalação do Linux de 64 bits e pode ser necessário instalar o ia32-libs. Vou tentar fazer isso quando voltar para casa e ver se ajuda.
Alex Pritchard,
@Alex Pritchard: Sim, acredito que você precisa disso. Surpreso que funcione sem eles, na verdade. Tive que passar por alguns giros para fazer o Android rodar na minha configuração do Ubuntu de 64 bits, embora isso tenha sido há muito tempo que eu esqueci os detalhes.
CommonsWare,

Respostas:

101

Então eu encontrei o problema. Eu estava usando uma instalação do Linux de 64 bits, que não tinha o pacote ia32-libs instalado por padrão. O utilitário mksdcard não será executado sem este pacote. Depois de instalá-lo, consegui construir o AVD sem problemas usando o gerenciador de AVD.

Alex Pritchard
fonte
1
Obrigado, ubuntu 12.04 x64, resolveu o problema. Eu apenas observaria que essas ia32-libs têm aproximadamente
260 MB
43
Sim! Eu encontrei o caminho sem todos aqueles pacotes horríveis de 240 dependências! Em vez de ia32-libsinstalar libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386. Parabéns a esse cara, que salvou meu computador (e espero que outros) de todo o lixo: stackoverflow.com/a/10473415/998772 PS Estou usando o Linux Mint 13
pavel_kazlou
4
No Fedora,dnf install glibc.i686 libstdc++.i686
Dominic Cleal
obrigado. Eu uso Ubuntu 14.04 LTS amd e resolve o problema. Instalei pacotes separados como @pavel_kazlou sugerido
João Polo
1
@nimrodm Estou continuamente surpreso com a atividade neste post (meu post de SO mais popular até agora, hah).
Alex Pritchard
80

No Ubuntu 16.04 LTS x64, usando o Android Studio 2.1 (também testado no 2.3.3), execute a partir de um terminal:

sudo apt-get install lib32stdc++6
GeekLei
fonte
Instalei o SDK manualmente (sem Android Studio) e funcionou para mim.
CTodea
1
Além disso, tive que renomear ~ / Android / Sdk / emulator / lib64 / libstdc ++ / libstdc ++. So.6 e libstdc ++. So.6.0.18 para algo diferente para fazer o emulador funcionar. Só consegui fazê-lo funcionar sem abrir força. --------------- ./emulator @ Nexus_4_API_23 falhou ao criar drawGLES2ExtensionString: Não foi possível criar GLES 2.x Pbuffer! Falha ao obter a string de extensões GLES 2.x! Não foi possível inicializar o emulador de framebuffer emulado: ERRO: Não foi possível inicializar a emulação OpenglES, use '-gpu off' para desativá-lo.
Francisco Junior
1
Bingo. Ubuntu 17.04.
piratemurray
22

Eu tive o mesmo erro que você e acabei de resolvê-lo, então talvez ele possa ajudá-lo (embora eu não ache que seu erro seja causado pelo mesmo problema que eu).

Descobri que todas as ferramentas em ../tools não têm permissão para funcionar, então usei

chmod -R 777 ../tools

da linha de comando e finalmente funciona

cynicholas
fonte
1
Obrigado por contribuir com uma resposta. O Stack Overflow fornece formatação para melhorar a legibilidade de sua resposta. Você pode usar a formatação de código para identificar o comando shell e diferenciá-lo de seu outro texto.
this.josh
Obras, mas isso resulta em .txt, .xmlarquivos etc que têm permissão de execução ... seria bom saber os arquivos individuais envolvidos
funkybro
10

Como outros já escreveram, o problema é que sua distribuição Linux é de 64 bits e, no momento, o Android Virtual Device ( AVD ) precisa da biblioteca x86 para funcionar corretamente.

Alguém sugeriu instalar ia32-libs . No entanto, no Ubuntu 14.04 LTS você não encontrará esta biblioteca. Resolvi usando essas libs alternativas: lib32z1 , lib32ncurses5 , lib32bz2-1.0 e lib32stdc ++ .

sudo apt-get update
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++
Paolo Rovelli
fonte
3
O único que eu precisava era lib32stdc ++ 6.
Big McLargeHuge
6

Acabei de encontrar o mesmo problema. NENHUMA das ferramentas SDK será executada no Ubuntu de 64 bits sem instalar ia32-libs (EXEMPLO: sudo apt-get install ia32-libs).

paulsm4
fonte
5

No sistema operacional elementar e no Ubuntu, a solução foi instalar os seguintes pacotes

sudo apt-get install lib32ncurses5 lib32z1
sudo apt-get install libgcc1:i386
Lugty
fonte
Isso funcionou para mim no Kubuntu 17.04. Mas libstdc ++ ainda deve ser removido.
Avamander
4
alex@alex-desktop:~$ mksdcard 1024M ./sdcard.iso
bash: /home/alex/android-sdk-linux_x86/tools/mksdcard: No such file or directory
alex@alex-desktop:~$ sudo android create avd -n my_avd -t 1 -c 1024M

Eu encontrei este problema e primeiro encontro uma maneira:

cd /home/alex/android-sdk-linux_x86/tools/

então escreva isto:

sudo chmod 755 mksdcard
mksdcard 1024M ./sdcard.iso
sudo android create avd -n my_avd -t 1 -c 1024M

deve funcionar :)

imon_iut
fonte
4

Se você estiver usando Kali, Debian Jessie (ou Ubuntu 13.10+), tente

sudo apt-get install lib32stdc ++ 6

em vez das ia32-libs mencionadas acima.

Larry_C
fonte
4
sudo apt-get install lib32stdc++6

Depois disso, você pode obter os seguintes erros

Cannot launch AVD in emulator.
Output:
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
X Error of failed request:  GLXBadContext
  Major opcode of failed request:  154 (GLX)
  Minor opcode of failed request:  6 (X_GLXIsDirect)
  Serial number of failed request:  49
  Current serial number in output stream:  48
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
X Error of failed request:  GLXBadContext
  Major opcode of failed request:  154 (GLX)
  Minor opcode of failed request:  6 (X_GLXIsDirect)
  Serial number of failed request:  49
  Current serial number in output stream:  48
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
emulator: WARNING: VM heap size set below hardware specified minimum of 228MB
X Error of failed request:  BadValue (integer parameter out of range for operation)
emulator: WARNING: Setting VM heap size to 384MB
  Major opcode of failed request:  154 (GLX)
  Minor opcode of failed request:  24 (X_GLXCreateNewContext)
  Value in failed request:  0x0
  Serial number of failed request:  33
  Current serial number in output stream:  34
QObject::~QObject: Timers cannot be stopped from another thread

Use estes 3 comandos para resolver aqueles

mv ~/Android/Sdk/tools/lib64/libstdc++/libstdc++.so.6{,.bak}
mv ~/Android/Sdk/tools/lib64/libstdc++/libstdc++.so.6.0.18{,.bak}
ln -s /usr/lib/libstdc++.so  ~/Android/Sdk/tools/lib64/libstdc++/**
Kumar Ayush
fonte
3

Também tive esse problema e depois de instalar o pacote i386 fui capaz de criar um cartão SD para meu emulador de Android, tive que fazer duas etapas

sudo apt-get update
sudo apt-get install ia32-libs

Depois que isso foi concluído, fui capaz de criar um emulador com um cartão SD anexado

rubenj
fonte
2

Eu tinha um problema diferente: as ferramentas da plataforma estavam no meu caminho, mas as ferramentas não. Então, tudo funcionou, exceto que a imagem SDCard não foi criada. Não houve aviso disso quando criei o avd no eclipse e o dispositivo virtual foi criado com um cartão SD realmente pequeno, fazendo com que ele gerasse constantemente o erro de mídia não disponível na instalação do aplicativo.

Andrew Paul Simmons
fonte
1

Tive um problema diferente ao usar o Ubuntu de 32 bits. Quando tentei executar o mksdcard manualmente, recebi um erro de arquivo não encontrado.

O problema era open-jre / jdk. Instalei o oracle java e o problema foi corrigido. Infelizmente, você não pode mais instalar o oracle java por meio do apt / synaptic e precisa passar por alguns obstáculos extras:

https://github.com/flexiondotorg/oab-java6

CosmicCat
fonte
1

No teste debian, quando tentei executar ./tools/mksdcards, recebi o erro:

error while loading shared libraries: libstdc++.so.6: 
cannot open shared object file: No such file or directory

Instalar lib32stdc ++ 6 resolve o problema e foi possível criar o avd.

David Carlos
fonte
0

MyOS is Oracle Unbreakable Linux 6 - para resolver este problema tive que instalar o pacote libstdc ++ - 4.4.6-3.el6.i686.

SerVel
fonte
0

Depois de muito instalar e não conseguir nenhum resultado achei isso e funcionou.

Isso acontece porque alguns arquivos executáveis ​​em sdk/toolsnão podem ser executados. Vá para as pastas do Android Studio e do Android SDK e torne todos os diretórios e arquivos executáveis ​​por este comando:

chmod +x -R *
Ahmed Mubarak
fonte
Racha-me que 9 anos depois este problema ainda surge. Bons tempos. Obrigado por compartilhar sua experiência.
Alex Pritchard
-1

Tente mover a pasta sdk do Android para a pasta inicial. Funciona.

user3133745
fonte
-1

Eu tive o mesmo problema. Depois de solucionar o problema, descobri que era porque meu Windows é de 32 bits e meu mksdcard é compatível apenas com 64 bits. Então, copiei um mksdcard de 32 bits para a pasta de ferramentas e excluí o mais antigo. Isso resolveu meu problema.

Jomia
fonte
-1

Para as pessoas que enfrentaram o mesmo problema no Windows. Para mim, foi porque a ferramenta mksdcard.exe não conseguiu funcionar com êxito. Algumas ferramentas do SDK, como mksdcard.exe, requerem o tempo de execução do Microsoft Visual C ++. Portanto, vá para as propriedades do sistema e verifique o tipo de sistema:

insira a descrição da imagem aqui

Então, com base no seu tipo de sistema, (para mim era x64) baixe / atualize o Microsoft Visual C ++ Redistributable para Visual Studio 2019 mais recente no link https://visualstudio.microsoft.com/downloads/

insira a descrição da imagem aqui

Depois de instalar o Microsoft Visual C ++, meu problema foi corrigido. Consegui criar o AVD com sucesso.

miserável
fonte