2010-07-27 11 views
10

Ciao, ho appena installato l'SDK Android insieme a Eclipse 3.5 sul mio i686 Thinkpad T60 con Ubuntu 10.04 (Lucido). (Eclipse è stato installato tramite Synaptic, ovvero un pacchetto dal repository.) Ho installato l'add-on di eclipse e tutto ciò che si trova all'estremità di Eclipse sembra soddisfacente. Ho anche inserito la directory degli strumenti di android-sdk sul mio utente PATH. Ora gli strumenti di lancio/android senza argomenti si suppone per far apparire l'SDK e AVD Manager GUI, ma invece ho il seguente errore:Problema di avvio gui AVM/SDK Android utilizzando gli strumenti/eseguibile Android nell'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 cosa strana è che sicuramente sono tutti i prerequisiti installati, sun-java6 -jdk e open-java6-jdk e hanno provato a passare da una all'altra. Inoltre se guardo in synaptic ho installato libswt-gtk-3.5java. Anche lui manager AVM/SDK si avvia bene quando lo lancio con eclipse.

(si potrebbe chiedere perché i care, ma mi piace lavorare da linea di comando, e considerare l'uso di emacs come il mio IDE piuttosto che Eclipse.)

Se qualcuno sa come posso risolvere questo problema per favore fatemelo sapere.

+0

Hey - risposta segno di Bart come accettato! :) Funziona. – Konklone

risposta

3

Dai un'occhiata alla

android <command> --no-ui

Questo non richiede SWT/GTK a tutti.

43

(copiato da UbuntuForums http://ubuntuforums.org/showthread.php?t=1540054)

Ho avuto lo stesso problema 12 mesi su. Ho scoperto che era perché avevo creato la directory/tmp "noexec" non appena l'ho reso eseguibile, stavamo bene.

sudo mount -o remount,exec /tmp 

Spero che questo aiuti qualcuno.

+0

Grazie che mi ha aiutato! mi ci è voluto un po 'di tempo per arrivare alla tua risposta – charroch

+0

Wowza. Questo è il magico incantesimo di Harry Potter. Ciò ha permesso a DDMS di essere eseguito dalla riga di comando (non attraverso l'eclissi) sulla mia installazione di Kubuntu 11.10 AMD64. Grazie. –

+0

proprio lì! un'altra ragione per odiare java ancora più difficile di prima ... prova ad eseguire '/ tmp/swtlib-32/libswt-gtk-3550.so' vai a capire ... quindi se hai davvero bisogno di RO/tmp (e dovresti) basta collegare questo file in un altro punto ... – gcb

0

solo un modo migliore per mostrare il codice .. considerano questo un commento da @Bart risposta ...

per qualche motivo si cerca di exec SWT-lib da/tmp. è sbagliato e stupido e non ho idea di chi sia il colpevole qui (android o java lib in sé)

quindi, se non si desidera rimontare/tmp come RW, basta collegare simbolicamente la directory swtlib ad un altro posto. l'ho spostato nella directory di 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

In aggiunta a ciò che l'utente Bart bene e correttamente ha detto suggerisco di prestare attenzione nella punta muggito:

utenti Linux avanzati o geek più spesso si troveranno ad affrontare questo problema. Un "tweak" (di solito per ottenere più velocità) applicato in/etc/fstab making/tmp come noexec causerà questo problema. Basta aprire fstab e modificare la voce come segue muggito:

sudo gedit/etc/fstab

Se hai qualcosa di simile solo commentare la linea o modificare il contenuto:

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

TO:

tmpfs/tmp tmpfs defaults, cenno del capo ev, nosuid 0 0

1

ho anche avuto questo problema. Ho risolto il problema modificando la proprietà della directory home di sdk di Android (che ho installato in "/ opt"). Ciò è stato fatto con qualcosa di simile:

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

e ha funzionato bene!

2

Questa è una vecchia questione, ma voglio proporre una risposta meno 'drastico' ...

Se non si desidera modificare il file system montare, in alternativa è che si può cambiare la android script di avvio degli strumenti per specificare esplicitamente la directory temporanea che Java dovrebbe utilizzare.

ad es. nella directory android-studio/sdk/tools, proprio alla fine del file di script android è il comando che esegue 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]" 

In questo esempio io uso "/home/me/android-studio/.tmp" ma ovviamente si cambialo in qualunque cosa tu voglia.

Sfortunatamente questa modifica verrà sovrascritta se si aggiornano gli strumenti Android in modo da doverli riapplicare ogni volta che si aggiorna. Potresti invece inserire export nel tuo profilo come proprietà di un ambiente globale (per tutte le applicazioni Java) invece di modificare questo script.

0

Basta eliminare il contenuto di tmp dir.

sudo rm -rf /tmp/* 

Provare a lanciare il gestore sdk di Android in seguito. Ha funzionato per me.

0

Se si desidera avviare sdk-manager tramite riga di comando, un'altra opzione è, provare a eseguire:

> sudo android sdk 

Questo sarebbe eseguito in modalità amministratore dandovi richieste le autorizzazioni