Android SDK em uma máquina Linux de 64 bits

97

É possível desenvolver usando o Android SDK em uma máquina Linux de 64 bits. Os downloads de SDK disponíveis parecem ser apenas para versões de 32 bits do Linux.

dzhelil
fonte

Respostas:

42

Sim, ele é. Você precisa instalar as bibliotecas ia32. Confira a seção de solução de problemas do Ubuntu Linux .

apt-get install ia32-libs
apt-get install sun-java6-jdk
Matt Huggins
fonte
5
ia32-libs não podia ser instalado em minha máquina. Veja a resposta de notz abaixo.
Matthew Gilliard,
5
Isso só é apropriado para versões do Ubuntu antes de trazerem o suporte Multiarch. A abordagem correta agora é instalar os pacotes i386 certos
Jacob,
Irônico que a resposta "correta" seja correta apenas para aquela fração de máquinas de 64 bits rodando Ubuntu / Gnome. A fragmentação do Linux sugere que a resposta "correta" é mais geral ou uma combinação de todas as seguintes respostas parcialmente corretas. Eu, pelo menos, prefiro a resposta mais generalizada, pois há muitas variações e atualizações possíveis para garantir a integridade e a não obsolescência. Meu voto seria por uma boa resposta "Sim, é possível. RTFM e instale os pacotes de 32 bits / i386." Para sua informação - eles não vão consertar porque querem que usemos o Android Studio.
Sinthia V
Nenhuma seção de solução de problemas neste link, vai para as instruções de instalação atuais: developer.android.com/studio/install.html selecione 'linux' na caixa de seleção de plataforma superior direita.
amotzg
182

No (K) Ubuntu, você precisa dos seguintes pacotes de 32 bits:

sudo apt-get install libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386

para executar o emulador, você precisa desse pacote adicional:

sudo apt-get install libsdl1.2debian:i386
notz
fonte
12
Muito obrigado por esta resposta, você salvou meu computador de instalar ia32-libs (recomendado em todos os lugares), que junto com os pacotes que você mencionou traz um vagão de outras dependências inúteis. Sua solução funcionou para o meu Linux Mint 13.
pavel_kazlou
Concordar com o comentador acima, ubuntu 12.04 64 bits
Matthew Gilliard
4
Funcionou para meu Ubuntu 12.10 64bit. Muito obrigado!
1
Ubuntu 13.04 64 bits ainda tem o mesmo problema com o SDK do ADT, e essa solução também funcionou para mim lá.
GrandOpener
2
Funciona para Ubuntu 14.04 64 bits também. Muchas Gracias!
Langley
34

Android SDK requer:

  • Fedora 17 64 bits com Android SDK:

    sudo yum install glibc.i686 zlib.i686 libstdc++.i686 ncurses-libs.i686
  • Fedora 20 64 bits com Android SDK

    sudo yum install glibc zlib libstdc++ ncurses-libs mesa-libGL-devel adb
MariuszS
fonte
1
obrigado pela informação específica do fedora. a ajuda oficial só tem os pacotes do ubuntu listados
gspatel
2
Quando tentei pela primeira vez, recebi "Erro: Versões multilib protegidas: libstdc ++ - 4.7.2-2.fc17.i686! = Libstdc ++ - 4.7.0-5.fc17.x86_64". Corrigido com yum upgrade libstdc ++
pinoyyid
1
a linha de comando usada para o fedora 17 ainda funciona para o fedora 21
Sombriks
@MariuszS, nesse segundo cenário, você pode esclarecer o que você quer dizer com "SDK do Android de 64 bits". Meu entendimento é que o Android SDK tem binários de 32 bits, e é por isso que temos esse problema em primeiro lugar.
Carlos Macasaet de
Não tenho certeza, mas provavelmente há algum tempo atrás, houve duas versões (junto com o eclipse 64bit provavelmente). Resposta atualizada
MariuszS
15

Para o Debian Wheezy, você deve habilitar o multiarch e, em seguida, instalar as bibliotecas dependentes, conforme listado nas outras respostas ou conforme necessário pelos binários do diretório tools ou platform-tools:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386

Para obter mais libs, verifique com ldd os arquivos .so referenciados.

plataforma-ferramentas $ ldd adb                       
    linux-gate.so.1 => (0xf77bb000)
    librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xf779b000)
    libncurses.so.5 => não encontrado
    libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xf7781000)
    libstdc ++. so.6 => não encontrado
    libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xf775b000)
    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf773e000)
    libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xf75db000)
    libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xf75d6000)
    /lib/ld-linux.so.2 (0xf77bc000)

Portanto, continue a instalar libncurses5: i386 e libstdc ++ 6: i386 para poder executar

ferramentas de plataforma $ ./adb 
Android Debug Bridge versão 1.0.31
...
sebastianwagner
fonte
Obrigado @ user2255304! Isso funcionou para mim. Estava tentando instalar o Android Studio e android-studio/sdk/tools/mksdcardera um executável de 32 bits. Seguiu as etapas acima e instalou libc6:i386e libstdc++6:i386. O binário agora está funcionando bem.
Rajkumar S
9

For Ubuntu 13.1 ia32-libs não está mais disponível. Então, você pode tentar este:

sudo apt-get install lib32z1 lib32ncurses5 lib32stdc++6
user1079877
fonte
Esses nomes de pacote também funcionam no Ubuntu 14.04. Esta me parece ser a abordagem 'correta' porque esses pacotes vêm do repositório de arquitetura amd64. O comentário anterior sugerindo instalação: 386 pacotes misturam pacotes de arquitetura que parecem arriscados.
Don Park
@DonPark Não, não é arriscado. É chamado de multiarca.
Léo Lam
5

No CentOS 6.2, funcionei com o seguinte:

yum install glibc.i686 glibc-devel.i686 libstdc++.i686 zlib-devel.i686 ncurses-devel.i686 libX11-devel.i686 libXrender.i686 libXrandr.i686

khagler
fonte
3
Funciona no CentOS 7 também!
Philippe David
4

Para quem está usando o Slackware clique aqui.

Eu tentei com a corrente e funciona.

Resumindo, você precisa habilitar o suporte a 32 bits instalando pacotes multilib.

Passos:

1) Baixe o pacote:

> wget -np -nH -r -A txz,tgz \
> http://slackware.com/~alien/multilib/14.0/

2) instalar pacotes:

~/multilib$ \
> cd \~alien/multilib/14.0/
~/multilib/~alien/multilib/14.0/$ \
> su -c "upgradepkg --reinstall --install-new *.t?z"

3) instalar pacotes de compatibilidade:

~/multilib/~alien/multilib/14.0/$ \
> su -c "upgradepkg --reinstall --install-new *-compat32/*/*.t?z"

Reinicie o sistema e voila.

Milan Krstic
fonte
1

Para o openSUSE você pode instalar o pacote padrão de 32 bits

su zypper install -t padrão de 32 bits

Steffen Christensen
fonte
1

No Ubuntu 13.10

sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0

Venky
fonte
0

Você mesmo pode construir o SDK. Eu vou tentar. A versão de 32 bits é muito lenta.

imcaptor
fonte
0

Presunção: a versão do Android SDK de 32 bits está instalada

No meu sistema operacional Ubuntu 12 de 64 bits, não precisei instalar nenhum dos pacotes mencionados nos comentários anteriores. Instale o seguinte usando Android SDK Manager-
Em Tools:
Android SDK Tools
Android SDK Platform-tools
Latest Android SDK Build-tools

De acordo com a API Android mais recente (no meu caso Android 4.3 (API 18)):
SDK Platform
ARM EABI v7a System Image

Sob Extras:
Android Support Library

Aviso- eu já havia tentado usar o ia32-libspacote. Foi instalado com sucesso e consegui executar meus aplicativos Android. No entanto, se eu reiniciasse a máquina, ela nunca inicializaria. Portanto, sugiro evitar a instalação do ia32-libspacote. Se funcionou para você, ótimo. Talvez fosse um problema restrito ao meu PC na época.

Arunraj Nair
fonte
0

Uma pequena variação nas perguntas e respostas acima: estou executando o Debian Wheezy (7.0) em um laptop System76 de 64 bits, já habilitei o multiarch e a maioria das ferramentas nativas do Android parecia funcionar bem ... até que tentei compilar um aplicativo. A compilação falhou porque um dos utilitários de recursos precisava de libz.so.1 (de 32 bits).

apt-get install lib32z1

... consertou para mim.

Kramer
fonte
0

Para AWS Linux, encontrei a solução na antiga postagem do AWS Forum .

sudo yum install mesa-libGL.i686 libXrender.i686 libSM.i686 freetype.i686 libstdc++.i686

Lee Han Kyeol
fonte
0

Para usuários do Arch:
Você deve instalar os pacotes lib32-gcc-libs e lib32-ncurses que estão no repositório Multilib. (Que você deve habilitar )

pacman -S lib32-gcc-libs  
pacman -S lib32-ncurses
Grrrben
fonte
1
"pacote não encontrado"
fungusanthrax