JNA for android

McM*_*rdo 5 java-native-interface android jna

  1. 我有一大堆C源文件,在编译时会产生共享库.
  2. 还有一个Java版本使用JNA来访问已经构建的c共享库.这些文件在另一个jar中可用.这个罐子取决于jna.

首先,我编译了c文件,然后编译了java代码.在java中,没有错误.只有当我尝试将它移植到android时才会出现问题.我可以使用android'ndk-build'工具轻松编译c文件.这成功创建了共享库.

我无法在Android项目中导入JNA,因为类似于此:Android - JNA库

但是,我不理解该帖子中的评论.可以在Android中使用JNA吗?

我尝试从jna.jar中删除一些文件(与其他体系结构相对应的文件).然而,我得到了同样的错误:库'jna.jar'包含不在设备上运行的本机库.包括:"com/sun/jna/android-arm/libjnidispatch.so"

jar(带有C库的java包装器的jar)被导入,我可以编写代码.但是,我仍然使用我在这个jar中使用类创建的第一个对象得到'ExceptionInInitializerError'.

我不熟悉java.我只知道一个菜鸟.请耐心帮忙.谢谢.

Chr*_*iss 3

也许这就是您正在寻找的:

  • 将 Android SDK/NDK 工具添加到 PATH(由本机/Makefile 使用)。
  • 设置环境变量NDK_PLATFORM(由native/Makefile使用)。
  • 构建使用:ant -Dos.prefix=android-arm dist。
  • 测试必须在目标平台上运行,而不是在构建平台上运行。
  • 根据需要将 dist/jna.jar 和/或 dist/platform.jar 添加到您的应用程序。
  • 如果您使用 android-maven-plugin,则 jna.jar 可以按原样使用(本机库将自动复制到您的项目中)。
  • 如果您使用 Google 的 Eclipse 插件,则必须手动从 jna.jar/lib/armeabi 中删除 libjnidispatch.so 并将其添加到项目的 libs/armeabi 目录中。
  • 有关详细信息,请参阅http://code.google.com/p/android/issues/detail?id=17861http://developer.android.com/guide/practices/jni.html 。

从https://github.com/twall/jna/blob/master/www/AndroidDevelopmentEnvironment.md复制: