Pow*_*Lee 7 android jar jna android-ndk
我尝试将jna.jar导入到我的项目中,因为JNA是一个非常有用的工具,可以调用基于JNI的Native库.
操作系统:Windows 10
IDE:Android Studio 1.5.1
JDK:1.8.0_73
NDK:r10e
我做了什么 (AS = Android Studio)
使用API18通过AS创建一个新项目.
从他们的GitHub下载jna.jar.
JNATest \程序\库\ jna.jar
CLibrary.Instance.printf("Hello, JNA");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
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
题
根据错误消息,我错过/android-arm/libjnidispatch.so了运行时.
我为jna.jar错了地方吗?
我该如何获得和使用/android-arm/libjnidispatch.so?
我是Android Studio的新手,所以可能会误解一些关键点.
将.so文件放在以下目录中(使用android studio时): yourproject\app\src\main\jniLibs\armeabi-v7a\libjnidispatch.so
更新:因为有些人问到哪里可以找到*.so文件:
在官方JNA站点上,您将找到所有支持的架构(30+)供下载:
https://github.com/java-native-access/jna/tree/master/lib/native
下载您想要的架构的jar,并使用一些zip工具打开它.在那里你会找到libjnidispatch.so文件(当然只适用于unix架构.对于windows来说它是一个dll)
小智 8
对于 Android,参考 JNA 库在字符串末尾添加 @aar 而不是下载 JNA jar:
https://github.com/java-native-access/jna/blob/master/www/FrequentlyAskedQuestions.md#jna-on-android
我在 github 库的一个文件中找到了这个评论 - “如果您使用 Google 的 Eclipse 插件,那么您必须手动从 jna.jar/lib/armeabi 中删除 libjnidispatch.so 并将其添加到项目的 libs/armeabi 目录中。 ”
由于该文件创建于 2012 年,并且 Android Studio 仍处于非常早期的阶段,当时还不是非常流行,因此我认为它可能是 Eclipse 和 Android Studio 的有效注释。我建议你尝试一下。
| 归档时间: |
|
| 查看次数: |
4786 次 |
| 最近记录: |