Android SDK na 64-bitowej maszynie z systemem Linux

97

Czy można programować za pomocą zestawu SDK systemu Android na komputerze z 64-bitowym systemem Linux? Wydaje się, że dostępne pliki do pobrania SDK dotyczą tylko 32-bitowych wersji systemu Linux.

DR
źródło

Odpowiedzi:

42

Tak to jest. Musisz zainstalować biblioteki ia32. Sprawdź sekcję rozwiązywania problemów z systemem Ubuntu Linux .

apt-get install ia32-libs
apt-get install sun-java6-jdk
Matt Huggins
źródło
5
ia32-libs nie zainstaluje się na moim komputerze. Zobacz odpowiedź notz poniżej.
Matthew Gilliard
5
Jest to odpowiednie tylko dla wersji Ubuntu przed wprowadzeniem obsługi Multiarch. Poprawne podejście to teraz zainstalowanie właściwych pakietów i386
Jacob
Ironiczne jest to, że „poprawna” odpowiedź jest poprawna tylko dla tej części 64-bitowych maszyn z systemem Ubuntu / Gnome. Fragmentacja Linuksa sugeruje, że „poprawna” odpowiedź to bardziej ogólna odpowiedź lub kombinacja wszystkich następujących częściowo poprawnych odpowiedzi. Ja na przykład wolę bardziej uogólnioną odpowiedź, ponieważ istnieje zbyt wiele możliwych odmian i aktualizacji, aby mieć pewność, że są one kompletne i nieaktualne. Mój głos byłby za miłą odpowiedzią „Tak, to możliwe. RTFM i zainstaluj pakiety 32-bit / i386.”, Neutralną dla dostawcy odpowiedź. FYI - nie naprawią tego, ponieważ chcą, abyśmy zamiast tego używali Android Studio.
Sinthia V
Brak sekcji rozwiązywania problemów pod tym linkiem, prowadzi to do aktualnych instrukcji instalacji: developer.android.com/studio/install.html wybierz „linux” w prawym górnym polu wyboru platformy.
amotzg
182

W (K) Ubuntu potrzebujesz następujących 32-bitowych pakietów:

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

do uruchomienia emulatora potrzebny jest dodatkowy pakiet:

sudo apt-get install libsdl1.2debian:i386
notz
źródło
12
Wielkie DZIĘKUJĘ za tę odpowiedź, uratowałeś mój komputer przed instalacją ia32-libs (zalecane wszędzie), co wraz z pakietami, o których wspomniałeś, przynosi szereg innych bezużytecznych zależności. Twoje rozwiązanie zadziałało dla mojej Linux Mint 13.
pavel_kazlou
Zgadzam się z komentatorem powyżej, ubuntu 12.04 64bit
Matthew Gilliard
4
Pracował dla mojego Ubuntu 12.10 64bit. Dzięki wielkie!
1
Ubuntu 13.04 64 bit nadal ma ten sam problem z ADT SDK i to rozwiązanie też tam działało.
GrandOpener
2
Działa również na Ubuntu 14.04 64bit. Bardzo dziękuję!
Langley
34

Android SDK wymaga:

  • Fedora 17 64-bitowa z zestawem SDK systemu Android:

    sudo yum install glibc.i686 zlib.i686 libstdc++.i686 ncurses-libs.i686
  • Fedora 20 64-bitowa z zestawem SDK systemu Android

    sudo yum install glibc zlib libstdc++ ncurses-libs mesa-libGL-devel adb
Mariusz S.
źródło
1
dzięki za informacje o Fedorze. w oficjalnej pomocy wymienione są tylko pakiety ubuntu
gspatel
2
Kiedy pierwszy raz spróbowałem tego, otrzymałem komunikat „Błąd: chronione wersje multilib: libstdc ++ - 4.7.2-2.fc17.i686! = Libstdc ++ - 4.7.0-5.fc17.x86_64”. Naprawiono za pomocą aktualizacji yum libstdc ++
pinoyyid
1
wiersz poleceń używany w Fedorze 17 nadal działa w Fedorze 21
Sombriks,
@MariuszS, w tym drugim scenariuszu, czy możesz wyjaśnić, co masz na myśli przez „64-bitowy zestaw SDK systemu Android”. Rozumiem, że Android SDK ma 32-bitowe pliki binarne, dlatego przede wszystkim mamy ten problem.
Carlos Macasaet
Nie jestem pewien, ale prawdopodobnie jakiś czas temu były dwie wersje (prawdopodobnie w pakiecie z eclipse 64bit). Odpowiedź zaktualizowana
MariuszS
15

W przypadku Debian Wheezy musisz włączyć multiarchę, a następnie zainstalować zależne biblioteki wymienione w innych odpowiedziach lub w razie potrzeby przez pliki binarne z katalogu tools lub platform-tools:

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

Aby uzyskać więcej bibliotek, sprawdź w ldd, do których odwołują się pliki .so.

narzędzia platformy $ ldd adb                       
    linux-gate.so.1 => (0xf77bb000)
    librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xf779b000)
    libncurses.so.5 => nie znaleziono
    libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xf7781000)
    libstdc ++. so.6 => nie znaleziono
    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)

Więc kontynuuj instalację libncurses5: i386 i libstdc ++ 6: i386, aby móc uruchomić

narzędzia platformy $ ./adb 
Android Debug Bridge w wersji 1.0.31
...
sebastianwagner
źródło
Dzięki @ user2255304! To zadziałało dla mnie. Próbowałem zainstalować Android Studio i android-studio/sdk/tools/mksdcardbył to 32-bitowy plik wykonywalny. Wykonano powyższe kroki i zainstalowano libc6:i386i libstdc++6:i386. Plik binarny działa teraz dobrze.
Rajkumar S
9

Dla Ubuntu 13.1 ia32-libs nie jest już dostępne. Możesz więc wypróbować ten:

sudo apt-get install lib32z1 lib32ncurses5 lib32stdc++6
user1079877
źródło
Te nazwy pakietów działają również w systemie Ubuntu 14.04. Wydaje mi się, że jest to „poprawne” podejście, ponieważ te pakiety pochodzą z repozytorium architektury amd64. Wcześniejszy komentarz sugerujący instalację: 386 pakietów łączy pakiety architektury, co wydaje się ryzykowne.
Don Park
@DonPark Nie, to nie jest ryzykowne. Nazywa się to multiarchą.
Léo Lam
5

W CentOS 6.2 mam to działające z następującymi:

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

khagler
źródło
3
Działa też na CentOS 7!
Philippe David,
4

Dla tych, którzy używają Slackware, kliknij tutaj.

Wypróbowałem to z prądem i działa.

Krótko mówiąc, musisz włączyć obsługę wersji 32-bitowej, instalując pakiety multilib.

Kroki:

1) Pobierz pakiet:

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

2) zainstaluj pakiety:

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

3) zainstaluj pakiety zgodności:

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

Uruchom ponownie system i voila.

Milan Krstic
źródło
1

W przypadku openSUSE możesz zainstalować 32-bitowy pakiet wzorców

su zypper install -t pattern 32bit

Steffen Christensen
źródło
1

W systemie Ubuntu 13.10

sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0

Venky
źródło
0

Możesz samodzielnie zbudować sdk. Spróbuję. Wersja 32-bitowa jest bardzo wolna.

imcaptor
źródło
0

Założenie: zainstalowana jest 32-bitowa wersja Android SDK

W moim 64-bitowym systemie operacyjnym Ubuntu 12 nie musiałem instalować żadnego z pakietów wymienionych w poprzednich komentarzach. Zainstaluj następujące elementy za pomocą Android SDK Manager-
Pod Tools:
Android SDK Tools
Android SDK Platform-tools
Latest Android SDK Build-tools

Zgodnie z najnowszym Androidem API (w moim przypadku Android 4.3 (API 18)):
SDK Platform
ARM EABI v7a System Image

Pod Extras:
Android Support Library

Ostrzeżenie - wcześniej próbowałem użyć ia32-libspakietu. Zainstalował się pomyślnie i mogłem uruchamiać moje aplikacje na Androida. Jednak gdybym ponownie uruchomił maszynę, nigdy się nie uruchomi. Dlatego proponuję powstrzymać się od instalowania ia32-libspakietu. Jeśli to zadziałało, to świetnie. Może wtedy był to problem ograniczony do mojego komputera.

Arunraj Nair
źródło
0

Niewielka zmiana w powyższych pytaniach i odpowiedziach: Używam Debiana Wheezy (7.0) na 64-bitowym laptopie System76, już włączyłem multiarchę i większość natywnych narzędzi Androida wydawała się działać dobrze ... dopóki nie spróbowałem zbudować Aplikacja. Kompilacja nie powiodła się, ponieważ potrzebne było jedno z narzędzi zasobów (32-bitowy) libz.so.1.

apt-get install lib32z1

... naprawiłem to dla mnie.

kramer
źródło
0

W przypadku AWS Linux rozwiązanie znalazłem w starym poście na forum AWS .

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

Lee Han Kyeol
źródło
0

Dla użytkowników Arch:
Musisz zainstalować pakiety lib32-gcc-libs i lib32-ncurses, które znajdują się w repozytorium Multilib. (Które musisz włączyć )

pacman -S lib32-gcc-libs  
pacman -S lib32-ncurses
Grrrben
źródło
1
„pakiet nie został znaleziony”
fungusanthrax