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.

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

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

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

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
...

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

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


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.



1

W systemie Ubuntu 13.10

sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0


0

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


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.


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.



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

1
„pakiet nie został znaleziony”
— fungusanthrax
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.