Android SDK на 64-битной Linux-машине


97

Можно ли разрабатывать с помощью Android SDK на 64-битной машине Linux. Доступные загрузки SDK, похоже, предназначены только для 32-разрядных версий Linux.

Ответы:


42

Да, это так. Вам необходимо установить библиотеки ia32. Ознакомьтесь с разделом устранения неполадок Ubuntu Linux .

apt-get install ia32-libs
apt-get install sun-java6-jdk

5
ia32-libs не установился на моем компьютере. См. Ответ notz ниже.
Мэтью Гиллиард,

5
Это подходит только для версий Ubuntu до того, как они добавили поддержку Multiarch. Правильный подход теперь - установить правильные пакеты i386
Джейкоб

Как ни странно, «правильный» ответ верен только для той части 64-битных машин, на которых работает Ubuntu / Gnome. Фрагментация Linux предполагает, что «правильный» ответ - это более общий ответ или комбинация всех следующих частично правильных ответов. Я, со своей стороны, предпочитаю более обобщенный ответ, поскольку существует слишком много возможных вариантов и обновлений, чтобы быть уверенным в полноте и не устаревании. Я бы проголосовал за хороший "Да, это возможно. RTFM и установите 32-битные / i386 пакеты.", Стиль ответа, нейтральный к производителю. К вашему сведению - они не будут это исправлять, потому что хотят, чтобы мы вместо этого использовали Android Studio.
Sinthia V

Раздела устранения неполадок по этой ссылке больше нет, это относится к текущим инструкциям по установке: developer.android.com/studio/install.html выберите "linux" в правом верхнем поле выбора платформы.
amotzg 06

182

В (K) Ubuntu вам понадобятся следующие 32-битные пакеты:

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

для запуска эмулятора вам понадобится этот дополнительный пакет:

sudo apt-get install libsdl1.2debian:i386

12
Большое СПАСИБО за этот ответ, вы спасли мой компьютер от установки ia32-libs (рекомендуется везде), которая, наряду с упомянутыми вами пакетами, приносит массу других бесполезных зависимостей. Ваше решение сработало для моего Linux Mint 13.
pavel_kazlou

Согласен с комментатором выше, ubuntu 12.04 64bit
Мэтью Гиллиард

4
Работал на моем 64-битном Ubuntu 12.10. Спасибо!

1
64-разрядная версия Ubuntu 13.04 по-прежнему имеет ту же проблему с ADT SDK, и это решение также работало для меня там.
GrandOpener 03

2
Также работает с Ubuntu 14.04 64bit. Большое спасибо!
Лэнгли

34

Android SDK требует:

  • Fedora 17 64bit с Android SDK:

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

    sudo yum install glibc zlib libstdc++ ncurses-libs mesa-libGL-devel adb

1
спасибо за конкретную информацию о Fedora. в официальной справке перечислены только пакеты ubuntu
gspatel

2
Когда я впервые попробовал это, я получил сообщение «Ошибка: защищенные мультибиблиотечные версии: libstdc ++ - 4.7.2-2.fc17.i686! = Libstdc ++ - 4.7.0-5.fc17.x86_64». Исправлено с обновлением yum libstdc ++
pinoyyid

1
командная строка, используемая для Fedora 17, по-прежнему работает для Fedora 21
Sombriks

@MariuszS, в этом втором сценарии, можете ли вы пояснить, что вы подразумеваете под «64-битным Android SDK». Насколько я понимаю, Android SDK имеет 32-разрядные двоичные файлы, поэтому в первую очередь у нас есть эта проблема.
Карлос Макасет

Я не уверен, но, вероятно, некоторое время назад было две версии (возможно, в комплекте с eclipse 64bit). Ответ обновлен
MariuszS

15

Для Debian Wheezy вы должны включить мультиархив, а затем установить зависимые библиотеки, как указано в других ответах, или по мере необходимости в двоичных файлах из каталога инструментов или инструментов платформы:

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

Для получения дополнительных библиотек проверьте с помощью ldd ссылки на .so-файлы.

платформенные инструменты $ ldd adb                       
    linux-gate.so.1 => (0xf77bb000)
    librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xf779b000)
    libncurses.so.5 => не найдено
    libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xf7781000)
    libstdc ++. so.6 => не найден
    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)

Итак, продолжайте установку libncurses5: i386 и libstdc ++ 6: i386, чтобы иметь возможность запускать

платформенные инструменты $ ./adb 
Android Debug Bridge версии 1.0.31
...

Спасибо @ user2255304! Это сработало для меня. Пытался установить Android Studio и android-studio/sdk/tools/mksdcardбыл 32-битным исполняемым файлом. Выполнили шаги выше и установили libc6:i386и libstdc++6:i386. Теперь двоичный файл работает нормально.
Rajkumar S

9

Для Ubuntu 13.1 ia32-libs больше не доступен. Итак, вы можете попробовать это:

sudo apt-get install lib32z1 lib32ncurses5 lib32stdc++6

Эти имена пакетов также работают в Ubuntu 14.04. Мне кажется, что это «правильный» подход, потому что эти пакеты взяты из репозитория архитектуры amd64. Предыдущий комментарий, предлагающий установку: 386 пакетов смешивает пакеты архитектуры, что кажется рискованным.
Don Park

@DonPark Нет, это не опасно. Это называется мультиархитектурным.
Лео Лам

5

В CentOS 6.2 я работал со следующим:

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


3
Работает и на CentOS 7!
Philippe David


4

Для тех, кто использует Slackware, нажмите здесь.

Пробовал с током, работает.

Короче говоря, вам нужно включить 32-битную поддержку, установив мультибиблиотечные пакеты.

Шаги:

1) Скачайте пакет:

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

2) установить пакеты:

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

3) установить пакеты совместимости:

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

Перезагрузите систему и вуаля.



1

В Ubuntu 13.10

sudo apt-get установить lib32z1 lib32ncurses5 lib32bz2-1.0


0

Вы можете собрать SDK самостоятельно. Я постараюсь. 32-битная версия работает очень медленно.


0

Предположение: установлена ​​32-разрядная версия Android SDK

В моей 64-битной ОС Ubuntu 12 мне не нужно было устанавливать какие-либо пакеты, упомянутые в предыдущих комментариях. Установите следующее, используя Android SDK Manager-
Под Tools:
Android SDK Tools
Android SDK Platform-tools
Latest Android SDK Build-tools

В последней версии Android API (в моем случае Android 4.3 (API 18)):
SDK Platform
ARM EABI v7a System Image

Под Extras:
Android Support Library

Предупреждение. Ранее я пробовал использовать ia32-libsпакет. Он успешно установлен, и я смог запустить свои приложения для Android. Однако, если я перезапущу машину, она никогда не загрузится. Поэтому я предлагаю воздержаться от установки ia32-libspackage. Если это сработало для вас, тогда отлично. Возможно, тогда это была проблема, связанная с моим компьютером.


0

Небольшой поворот в приведенных выше вопросах и ответах: я запускаю Debian Wheezy (7.0) на 64-разрядном ноутбуке System76, я уже включил многоархивность, и большинство собственных инструментов Android, казалось, работали нормально ... пока я не попытался собрать приложение. Сборка не удалась, потому что одной из утилит ресурсов требовалась (32-разрядная) libz.so.1.

apt-get установить lib32z1

... исправил это для меня.



0

Для пользователей Arch:
вам необходимо установить пакеты lib32-gcc-libs и lib32-ncurses, которые находятся в репозитории Multilib. (Что вы должны включить )

pacman -S lib32-gcc-libs  
pacman -S lib32-ncurses

1
«пакет не найден»
грибок антракс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.