2010-07-27 4 views
10

Salut, je viens d'installer le SDK android avec Eclipse 3.5 sur mon i686 Thinkpad T60 fonctionnant sous Ubuntu 10.04 (Lucid). (Eclipse a été installé via synaptic, c'est-à-dire un paquet provenant du référentiel.) J'ai installé l'extension eclipse et tout semble bien se passer à la fin d'Eclipse. J'ai également mis le répertoire d'outils android-sdk sur mon utilisateur PATH. Maintenant, le lancement des outils/android sans aucun argument est censé apporter le SDK et l'interface graphique du gestionnaire AVD, mais je reçois l'erreur suivante:Problème de lancement android AVM/SDK gui en utilisant les outils/android exécutable dans le SDK android. Ubuntu 10.04, i686

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) 

La chose étrange I est ont certainement toutes les conditions préalables installé, sun-java6 -jdk, et open-java6-jdk et ont essayé de basculer entre eux. Aussi, si je regarde dans synaptic j'ai installé libswt-gtk-3.5java. De plus, le gestionnaire AVM/SDK se lance bien lorsque je le lance avec eclipse.

(vous pouvez vous demander pourquoi je me soucie, mais j'aime travailler à partir de la ligne de commande, et envisage d'utiliser emacs comme mon IDE plutôt que Eclipse.)

Si quelqu'un sait comment je peux résoudre ce problème s'il vous plaît laissez-moi savoir.

+0

Hey - La réponse de marque Bart comme acceptée! :) Ça marche. – Konklone

Répondre

3

Jetez un oeil à

android <command> --no-ui

Cela ne nécessite pas SWT/GTK du tout.

43

(copié à partir ubuntuforums http://ubuntuforums.org/showthread.php?t=1540054)

J'ai eu la même question 12 mois de suite. J'ai découvert que c'était parce que j'avais fait le répertoire/tmp "noexec" dès que je l'ai rendu exécutable, nous allions bien.

sudo mount -o remount,exec /tmp 

Espérons que cela aide quelqu'un.

+0

Merci qui m'a aidé! m'a pris un certain temps pour arriver à votre réponse – charroch

+0

Wowza. C'est le sort magique d'Harry Potter. DDMS s'exécute à partir de la ligne de commande (pas à travers eclipse) sur mon installation Kubuntu 11.10 AMD64. Je vous remercie. –

+0

juste là! une autre raison de détester java encore plus dur qu'avant ... il essaie d'exécuter '/ tmp/swtlib-32/libswt-gtk-3550.so' va figurer ... donc si vous avez vraiment besoin de RO/tmp (et vous devriez) juste symlink ce dir à un autre endroit ... – gcb

0

juste une meilleure façon de montrer le code .. Considérez ceci comme un commentaire de réponse @Bart ...

pour une raison quelconque, il essaie de exec SWT-lib de/tmp. c'est faux et idiot et je n'ai aucune idée de qui est le coupable ici (android ou java lib lui-même)

donc, si vous ne voulez pas remonter/tmp comme RW, il suffit de symlink ce swtlib dir à un autre endroit. Je l'ai déplacé vers le répertoire 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 
4

De plus à ce que dit bien et correctement l'utilisateur Bart je suggère de prêter attention à la pointe ci-dessous:

utilisateurs de Linux Advanced ou geeks plus souvent face à ce problème. Un "tweak" (généralement pour obtenir plus de vitesse) appliqué dans/etc/fstab making/tmp car noexec provoquera ce problème. Il suffit d'ouvrir fstab et modifier l'entrée comme suit ci-dessous:

sudo gedit/etc/fstab

Si vous avez quelque chose comme ça vient commenter la ligne ou modifier le contenu:

tmpfs/tmp tmpfs par défaut , noexec, nodev, nosuid 0 0

À:

tmpfs/tmp tmpfs par défaut, signe de tête ev, nosuid 0 0

1

J'ai aussi eu ce problème. Je l'ai résolu en changeant la propriété du répertoire de base android sdk (que j'ai installé dans '/ opt') pour moi. Cela a été fait avec quelque chose comme:

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

Et il a bien fonctionné!

2

Ceci est une vieille question, mais je veux proposer une moins « drastique » réponse ...

Si vous ne voulez pas changer votre système de fichiers de montage, une alternative est que vous pouvez changer la android script de démarrage des outils pour spécifier explicitement le répertoire temporaire que Java doit utiliser.

par exemple. dans le répertoire android-studio/sdk/tools, juste à la fin du fichier script android est la commande qui exécute 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]" 

Dans cet exemple, je l'utilise « /home/me/android-studio/.tmp » mais bien sûr vous changer cela à tout ce que vous voulez.

Malheureusement, cette modification sera écrasée si vous mettez à jour vos outils Android, vous devrez donc le réappliquer à chaque mise à jour. Vous pouvez le remplacer par export dans votre profil en tant que propriété d'environnement globale (pour toutes les applications Java) au lieu de modifier ce script.

0

Il suffit de supprimer le contenu de tmp rép.

sudo rm -rf /tmp/* 

Essayez ensuite de lancer le gestionnaire android sdk. Ça a marché pour moi.

0

Si vous voulez lancer sdk-manager via commandline, une autre option est, essayez d'exécuter:

> sudo android sdk 

Cela fonctionne en mode admin vous donnant requis autorisations

Questions connexes