gpt4 book ai didi

android - 在 Android Studio 中设置 JNA

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:51:37 24 4
gpt4 key购买 nike

我尝试将 jna.jar 导入到我的项目中,因为 JNA 是一个非常有用的工具,可以调用基于 JNI 的 Native 库。

操作系统:Windows 10

集成环境:Android Studio 1.5.1

JDK:1.8.0_73

NDK: r10e

我做了什么(AS = 安卓工作室)

  1. 通过 AS 使用 API18 创建一个新项目。

  2. 从他们的 GitHub 下载 jna.jar。

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

  3. 将 jna.jar 复制到项目文件夹中。

    JNATest\app\libs\jna.jar

  4. 在AS中,右击jna.jar图标,选择Add as Library
  5. 等待几秒钟,检查 File->Project Structure->app->Dependencies。我们确实有 jna.jar。 (与 app\build.gradle 相同) build gradle
  6. 在MainActivity.java中实现关于JNA的JAVA代码
  7. 在真实设备 Sony Z3( ARM )上运行应用
  8. 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

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

问题

根据错误信息,我在运行时错过了/android-arm/libjnidispatch.so

  1. 我是不是把 jna.jar 放错地方了?

  2. 我应该如何获取和使用/android-arm/libjnidispatch.so

我是 Android Studio 的新手,所以可能误解了一些关键点。

最佳答案

对于 Android,引用 JNA 库在字符串末尾添加 @aar 而不是下载 JNA jar:

https://github.com/java-native-access/jna/blob/master/www/FrequentlyAskedQuestions.md#jna-on-android

关于android - 在 Android Studio 中设置 JNA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36305914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com