Configurando o JNA no Android Studio

Eu tento importar o jna.jar para o meu projeto desdeJNA é uma ferramenta muito útil para chamar a biblioteca nativa, que é baseada no JNI.

SO: Windows 10

IDE: Android Studio 1.5.1

JDK: 1.8.0_73

NDK: r10e

O que eu fiz (AS = Android Studio)

Crie um novo projeto pelo AS com API18.

Faça o download do jna.jar no GitHub.

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

copie o jna.jar na pasta do projeto.

JNATest \ app \ libs \ jna.jar

No AS, clique com o botão direito do mouse no ícone do jna.jar, escolhaAdicionar como bibliotecaAguarde alguns segundos, verifique o Arquivo-> Estrutura do Projeto-> app-> Dependências. Nós temos o jna.jar. (O mesmo que app \ build.gradle)construir gradleImplementar código JAVA sobre JNA no MainActivity.javaExecutar aplicativo no dispositivo real Sony Z3 (braço)Crash byCLibrary.Instance.printf("Hello, JNA");

Mensagem de erro no 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

Código 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);
    }
}

Pergunta, questão

De acordo com a mensagem de erro, sinto falta/android-arm/libjnidispatch.so em tempo de execução.

Coloquei o lugar errado para jna.jar?

Como devo obter e usar/android-arm/libjnidispatch.so?

Eu sou um novato no Android Studio, então talvez tenha entendido algo errado.

questionAnswers(3)

yourAnswerToTheQuestion