Подтвердить что ты не робот

Проблема запуска андроида AVM/SDK gui с использованием инструментов /android, исполняемых в SDK android. Ubuntu 10.04, i686

Привет, я только что установил SDK android вместе с Eclipse 3.5 на моем i686 Thinkpad T60, работающем под Ubuntu 10.04 (Lucid). (Eclipse был установлен через synaptic, т.е. Пакет из репозитория.) Я установил eclipse, и все на конце Eclipse кажется прекрасным. Я также разместил каталог инструментов android-sdk на моем пользователе PATH. Теперь запускающие инструменты/андроид без каких-либо аргументов должны отображать GUI менеджера SDK и AVD, но вместо этого я получаю следующую ошибку:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-gtk-3550 or swt-gtk in swt.library.path, java.library.path or the jar file
    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
    at org.eclipse.swt.internal.C.<clinit>(Unknown Source)
    at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
    at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
    at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source)
    at com.android.sdkmanager.Main.showMainWindow(Main.java:265)
    at com.android.sdkmanager.Main.doAction(Main.java:249)
    at com.android.sdkmanager.Main.run(Main.java:94)
    at com.android.sdkmanager.Main.main(Main.java:83)

Странно, что у меня определенно установлены все необходимые предварительные условия: sun-java6-jdk и open-java6-jdk, и я попытался переключиться между ними. Кроме того, если я смотрю в синаптическом, у меня установлен libswt-gtk-3.5java. Кроме того, менеджер AVM/SDK запускает отлично, когда я запускаю его с помощью eclipse.

(Вы можете задаться вопросом, почему мне все равно, но мне нравится работать из командной строки и рассматривать использование emacs как моей IDE, а не Eclipse.)

Если кто-нибудь знает, как я могу это исправить, пожалуйста, дайте мне знать.

4b9b3361

Ответ 1

(скопировано из Ubuntuforums http://ubuntuforums.org/showthread.php?t=1540054)

У меня была та же проблема 12 месяцев. Я обнаружил, что это произошло потому, что я сделал каталог /tmp "noexec", как только я сделал его исполняемым, мы были в порядке.

sudo mount -o remount,exec /tmp

Надеюсь, это поможет кому-то.

Ответ 2

В дополнение к тому, что пользователь Bart хорошо и правильно сказал, я предлагаю обратить внимание на подсказку:

Дополнительные пользователи linux или geeks чаще сталкиваются с этой проблемой. "Tweak" (обычно для получения большей скорости) применяется в /etc/fstab making/tmp, поскольку noexec вызовет эту проблему. Просто откройте fstab и измените запись, как описано ниже:

sudo gedit/etc/fstab

Если у вас есть что-то вроде этого, просто прокомментируйте строку или измените содержание:

tmpfs/tmp tmpfs defaults, noexec, nodev, nosuid 0 0

TO:

tmpfs/tmp tmpfs defaults, nodev, nosuid 0 0

Ответ 3

Посмотрите

android <command> --no-ui

Это вовсе не требует SWT/GTK.

Ответ 4

Это старый вопрос, но я хочу предложить менее "решительный" ответ...

Если вы не хотите изменять монтирование файловой системы, альтернативой является то, что вы можете изменить запуск android tools script, чтобы явно указать временный каталог, который должен использовать Java.

например. в каталоге android-studio/sdk/tools, в конце файла android script находится команда, выполняющая java:

exec "$java_cmd" \
    -Djava.io.tmpdir=/home/me/android-studio/.tmp \
    -Xmx256M $os_opts $java_debug \
    -Dcom.android.sdkmanager.toolsdir="$progdir" \
    -classpath "$jarpath:$swtpath/swt.jar" \
    com.android.sdkmanager.Main "[email protected]"

В этом примере я использую "/home/me/android-studio/.tmp", но, конечно, вы меняете это на все, что хотите.

К сожалению, это изменение будет перезаписано, если вы обновите свои инструменты Android, поэтому вам придется повторно использовать его каждый раз при обновлении. Вместо этого export это в вашем профиле как глобальное свойство среды (для всех приложений Java) вместо редактирования этого script.

Ответ 5

У меня также возникла эта проблема. Я решил это, изменив права собственности на домашний каталог android sdk (который я установил в '/opt') для меня. Это было сделано с помощью:

sudo chown -R <username> /opt/android-sdk-linux 

И все получилось отлично!

Ответ 6

просто лучший способ показать код.. рассмотрите этот комментарий из ответа @Bart...

по какой-то причине он пытается выполнить exec swt-lib из /tmp. что не так и глупо, и я понятия не имею, кто здесь виновник (андроид или сам java lib)

поэтому, если вы не хотите перемонтировать /tmp как RW, просто добавьте символическую ссылку на swtlib в другое место. Я переместил его в директорию Android.

(0) ~
hobo$ mv /tmp/swtlib-32 android/

(0) ~
hobo$ ln -sf ~/android/swtlib-32 /tmp/swtlib-32

(0) ~
hobo$ android/android-sdk-linux/tools/android 

Ответ 7

Просто удалите содержимое файла tmp.

sudo rm -rf /tmp/*

Попробуйте запустить менеджер Android sdk. Это сработало для меня.

Ответ 8

Если вы хотите запустить sdk-manager через командную строку, выберите другой вариант, попробуйте запустить:

> sudo android sdk

Это будет работать в режиме администратора, предоставляя требуемые разрешения