Provo ad importare jna.jar nel mio progetto dal JNA è uno strumento molto utile per chiamare la libreria nativa che è basata su JNI.Impostazione di JNA in Android Studio
SO: Windows 10
IDE: Android 1.5.1 Studio
JDK: 1.8.0_73
NDK: r10e
Quello che ho fatto (AS = Android Studio)
- Creare un nuovo progetto di AS con API18.
- scarica jna.jar dal proprio GitHub.
- copia jna.jar nella cartella del progetto.
JNATest \ app \ libs \ jna.jar
- In AS, fare clic destro sull'icona del jna.jar, scegliere Aggiungi come Biblioteca
- Attendere pochi secondi, controllare la File-> Struttura del progetto-> app-> Dipendenze. Abbiamo il jna.jar. (Idem come app \ build.gradle) build gradle
- Implementare codice Java su JNA in MainActivity.java
- Run app sul dispositivo vero e proprio Sony Z3 (braccio)
- Crash di
CLibrary.Instance.printf("Hello, JNA");
errore Messaggio sul monitor Android
E/AndroidRuntime: FATAL EXCEPTION: main
Process: i3d.jnatest, PID: 1068
java.lang.UnsatisfiedLinkError: Native library (com/sun/jna/android-arm/libjnidispatch.so) not found in resource path (.)
at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:866)
at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:826)
at com.sun.jna.Native.<clinit>(Native.java:140)
..
... so on
codice Java
package i3d.jnatest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.sun.jna.Library;
import com.sun.jna.Native;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CLibrary.Instance.printf("Hello, JNA");
}
public interface CLibrary extends Library
{
CLibrary Instance = (CLibrary) Native.loadLibrary("msvcrt", CLibrary.class);
void printf(String format, Object... args);
}
}
Domanda
Secondo messaggio di errore, mi manca /android-arm/libjnidispatch.so
in fase di esecuzione.
- Ho posto il posto sbagliato per jna.jar?
- Come devo ottenere e utilizzare
/android-arm/libjnidispatch.so
?
Sono un principiante di Android Studio, quindi forse fraintendere qualcosa di fondamentale. Sentitevi liberi di darmi un suggerimento, grazie.
quale file JNA.jar hai usato? Ho provato 4.1.0 e 4.2.2 ma ho ancora ottenuto errori di costruzione per Android –
Anche io sto affrontando lo stesso problema .. hai qualche soluzione? – Parth