Sto tentando di eseguire Android sdk su una casella che deve avere noexec
su /tmp
.Come installare manualmente le librerie java e mantenere/tmp come noexec?
Potrei indicare java tmp come un altro posto in cui posso eseguire exec, ma ciò annullerebbe lo scopo della polizia che richiede noexec
in tmp. Quindi non voglio farlo ancora.
Volevo installare correttamente le librerie che sdk richiede ma il mio java è arrugginito.
Quando provo a farlo funzionare, ottengo:
$ Android/Sdk/tools/android
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.showSdkManagerWindow(Main.java:403)
at com.android.sdkmanager.Main.doAction(Main.java:391)
at com.android.sdkmanager.Main.run(Main.java:151)
at com.android.sdkmanager.Main.main(Main.java:117)
Il mio primo tentativo per aggirare questo era:
$ sudo aptitude install libswt-gtk-3-java...
Selecting previously unselected package libswt-gtk-3-jni.
(Reading database ... 199270 files and directories currently installed.)
Preparing to unpack .../libswt-gtk-3-jni_3.8.2-3_amd64.deb ...
Unpacking libswt-gtk-3-jni (3.8.2-3) ...
Selecting previously unselected package libswt-gtk-3-java.
Preparing to unpack .../libswt-gtk-3-java_3.8.2-3_amd64.deb ...
Unpacking libswt-gtk-3-java (3.8.2-3) ...
Setting up libswt-gtk-3-jni (3.8.2-3) ...
Setting up libswt-gtk-3-java (3.8.2-3) ...
Ma ancora ottengo lo stesso errore. Ciò significa che il programma non cerca le librerie predefinite ma cerca intenzionalmente di usare qualcosa che decomprime in/tmp? O java decomprimerà un jar sempre in/tmp, e proverai ad eseguirlo da lì, e non c'è nulla che io possa fare?
MODIFICA: Per cancellare che la causa è noexec
. Se eseguo l'applicazione con -Djava.io.tmpdir=Android/tmp
, allora tutto funziona. E ho il seguente contenuto nella nuova directory tmp:
Android/tmp/
└── swtlib-64
├── libswt-gtk-3550.so
└── libswt-pi-gtk-3550.so
Edit 2:
$ ANDROID_SWT=/usr/lib/java/
$ ls $ANDROID_SWT/
swt-gtk-3.8.2.jar
$ Android/Sdk/tools/android
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
...same...
Cosa ti ha dato l'idea che '/ tmp' sia coinvolto? – Siguza
@Siguza che è la ragione di tale errore. se lo rintracciare è dove mi ha preso. posso aggirare questo errore rimuovendo 'noexec' o impostando' java.io.tmpdir =/home/me/tmp' – gcb
Questo era qui prima: https://stackoverflow.com/questions/3344903/problem-launching- android-avm-sdk-gui-using-the-tools-android-eseguibile-in-the, anche se il vero motivo per cui l'SDK di Android copia le librerie SWT in '/ tmp' è ancora un mistero. – dhke