Ubuntu 64 с Android 64 Bundle не может найти исполняемый файл adb
Я испытываю следующую проблему при попытке запустить adb
в Ubuntu 12.10, x86_64:
[2013-02-19 20:56:04 - adb] Unexpected exception 'Cannot run program
"/home/user/adt-bundle-linux-x86_64/sdk/platform-tools/adb": error=2,
No such file or directory' while attempting to get adb version from
'/home/user/adt-bundle-linux-x86_64/sdk/platform-tools/adb'
Я нашел adb, попробовал chmod +x adb
и это просто не работает. Я тоже пробовал chmod +x platform-tools/
а также chmod +x tools/
, После этого я попробовал ./adb
Я погуглил проблему. Они говорили о пакете ia32. Ubuntu не может найти ни этот пакет, ни ia32 multi arch.
Система Ubuntu 12.10 64, и я скачал пакет adt-bundle-linux-x86_64.zip и просто распаковал его.
Что я делаю неправильно? Спасибо!
5 ответов
На Debian 7 я столкнулся с той же проблемой.
Диагноз:
edb@lapelidb:~/today$ ldd /opt/adt-bundle-linux-x86_64-20130729/sdk/platform-tools/adb
not a dynamic executable
edb@lapelidb:~/today$ file /opt/adt-bundle-linux-x86_64-20130729/sdk/platform-tools/adb
/opt/adt-bundle-linux-x86_64-20130729/sdk/platform-tools/adb: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped
Решение: добавлена поддержка 32-битной поддержки и необходимые 32-битные библиотеки:
edb@lapelidb:~/today$ sudo dpkg --add-architecture i386
edb@lapelidb:~/today$ sudo apt-get update
edb@lapelidb:~/today$ sudo apt-get install libc6:i386 libstdc++6:i386
И вуаля:
edb@lapelidb:~/today$ ldd /opt/adt-bundle-linux-x86_64-20130729/sdk/platform-tools/adb
linux-gate.so.1 => (0xf772a000)
librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xf770a000)
libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xf7706000)
libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xf76ec000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf7600000)
libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xf75da000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf75bd000)
libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xf745a000)
/lib/ld-linux.so.2 (0xf772b000)
Я использую версию Ubuntu 12.04 LTS. Я пробовал шаги, предложенные amo-ej1, но у моего dpkg не было опций add или architect.
Однако у меня сработало следующее:
1) Установите 'adb' и 'fastboot', предоставляемые следующим сторонним PPA.
sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install android-tools-adb android-tools-fastboot
2) Замените копии 'adb' и 'fastboot', предоставленные официальным Android SDK, на копии, установленные на предыдущем шаге:
cp /usr/bin/adb <path-to-your-adt-sdk-package>/sdk/platform-tools/adb
cp /usr/bin/fastboot <path-to-your-adt-sdk-package>/sdk/platform-tools/fastboot
3) Перезапустите (повторите) ваш бинарный файл затмения.
Полные кредиты: http://www.webupd8.org/2012/08/install-adb-and-fastboot-android-tools.html
ВАЖНОЕ РЕДАКТИРОВАНИЕ (АЛЬТЕРНАТИВНОЕ РЕШЕНИЕ):
Несмотря на то, что вышеизложенное устранит вашу ошибку (и вы можете перейти к учебнику по Android App), как я обнаружил, ADT также понадобится aapt (еще один 32-разрядный двоичный файл), расположенный в
<path-to-your-adt-sdk-package>/sdk/build-tools/android-x.x/
И, к сожалению, ссылка, которую я предоставил выше, не предоставляет этот двоичный файл.
Итак, вот мое другое решение:
1) Обновите свою систему
Open 'Update Manager' => 'Settings' => 'Updates
Check "Recommended Updates (precise updates)"
Update the updates that are being shown
2) Установите ia32-libs
sudo apt-get install ia32-libs
И я наконец смог установить 'ia32-libs'. Чтобы узнать, почему ia32-libs не может быть установлен в первую очередь, прочитайте ответ, опубликованный slangasek, здесь: https://askubuntu.com/questions/136394/cannot-install-ia32-libs
В Ubuntu 12.10 x86_64 для запуска 32- битных пакетов используются ia32-libs и ia32-libs-multiarch.
Если вы печатаете
file adb
Вы увидите, что adb - это 32-битный файл в 64-битной системе. Вам нужны пакеты ia32 для эмуляции и запуска этого файла. Но ты не можешь!
Проблема сейчас в том, что вы не можете загрузить эти пакеты, они пытаются преобразовать их во что-то, я думаю, x86_64. Здесь вы можете прочитать о конвертации в пакете NEWS:
Краткое описание конверсии:
"ia32-libs (20090808ubuntu27) точный; срочность = низкая
ia32-libs теперь является переходным пакетом в зависимости от ia32-libs-multiarch, пакета i386-only, который зависит от всех 32-битных библиотечных пакетов, ранее включенных в сам ia32-libs. В результате ia32-libs будут неустановлены в течение некоторого времени в течение точного цикла, в то время как зависимые библиотеки будут обновлены, чтобы их можно было установить с помощью multiarch. Разработчикам рекомендуется помочь с процессом преобразования этих библиотек, описанным по адресу:
http://wiki.debian.org/Multiarch/Implementation
- Стив Лангасек "
Поэтому, если вы попытаетесь отредактировать файл source.list, чтобы извлечь его из более раннего репозитория, вы сломаете пакеты. Так что Ubuntu 12.10 люди должны ждать или ADB компилируется или что-то еще до 64 бит.
редактировать:
Debian 7.0 будет поддерживать multiarch, где версия x64 может запускать двоичный файл x32. источник: http://www.debian.org/News/2013/20130504
Я использую debian_x64
добавить i386 lib
dpkg --адд-архитектура i386 sudo apt-get update sudo apt-get install libc6:i386 libncurses5:i386 libstdC++ 6: i386
ldd / home / yourname / adt-bundle-linux-x86_64-20130729 / sdk / platform-tools / adb
когда вы обнаружили "android-sdks/build-tools/17.0.0/aapt: ошибка при загрузке общих библиотек: libz.so.1: не удается открыть файл общего объекта: нет такого файла или каталога"
вы можете попробовать sudo apt-get установить ia32-libs sudou apt-get установить zlib.i686
перезагрузите компьютер и попробуйте снова
Распакуйте этот файл с этим:
sudo tar xvfz adt-bundle-linux-x86.zip -C /opt/android
чем запустить этот код:
sudo chown -R your_user_name /opt/android
я думаю это сработает