Einrichten von JNA in Android Studio

Ich versuche, jna.jar in mein Projekt zu importieren, seit JNA ist ein sehr nützliches Tool zum Aufrufen der Native Library, die auf JNI basiert.

OS: Windows 10

IDE: Android Studio 1.5.1

JDK: 1.8.0_73

NDK: r10e

Was habe ich geta (AS = Android Studio)

Erstelle ein neues Projekt von AS mit API18.

Laden Sie jna.jar von ihrem GitHub herunter.

https: //github.com/java-native-access/jn

copy jna.jar in den Projektordner.

JNATest \ app \ libs \ jna.jar

Klicken Sie in AS mit der rechten Maustaste auf das Symbol von jna.jar und wählen Sie Als Bibliothek hinzufügenWarten Sie einige Sekunden, und überprüfen Sie Datei-> Projektstruktur-> Anwendung-> Abhängigkeiten. Wir haben die jna.jar. (Wie app \ build.gradle)build gradleImplementieren Sie JAVA-Code zu JNA in MainActivity.java Run App auf echtem Gerät Sony Z3 (Arm)Crash vonCLibrary.Instance.printf("Hello, JNA");

Fehlermeldung auf Android Monitor

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

Java Code

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);
    }
}

Frag

aut Fehlermeldung vermisse ich/android-arm/libjnidispatch.so in Runtime.

Habe ich den falschen Ort für jna.jar angegeben?

Wie soll ich @ bekommen und verwende/android-arm/libjnidispatch.so?

Ich bin ein Neuling in Android Studio, also missverstehe ich vielleicht etwas Wesentliches.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage