【问题标题】:JNA for android安卓版 JNA
【发布时间】:2014-01-23 23:43:18
【问题描述】:
  1. 我有大量的 C 源文件,编译后会生成一个共享库。
  2. 还有一个Java版本使用JNA来访问已经构建好的c共享库。这些文件在另一个 jar 中可用。这个jar依赖于jna。

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

由于类似于以下内容,我无法在 Android 项目中导入 JNA:Android - JNA library

但是我不明白那篇文章中的 cmets。是否可以在 Android 中使用 JNA?

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

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

我不精通java。我只有菜鸟的知识。请容忍我并提供帮助。谢谢。

【问题讨论】:

  • 您是否使用 Eclipse 进行构建?
  • @user3228292 如果建议的答案有效,请不要忘记接受它
  • 我会试试这个并尽快回来。

标签: android java-native-interface jna


【解决方案1】:

也许这就是你要找的:

  • 将 Android SDK/NDK 工具添加到 PATH(由 native/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:

【讨论】:

  • 请澄清以下内容,1.构建使用:ant -Dos.prefix.... bhuild 使用这个做什么? 2. 测试必须在目标上运行而不是构建平台 - 请说明,我不明白。目标平台和构建平台都是 Android,对吧?对不起,如果我错了。
  • 如上所述我只是复制描述,尝试直接联系JNA人
  • 它没有用。我不必构建 JNA,因为 android-arm 的版本已经可以作为 jar 下载。
猜你喜欢
  • 2011-09-25
  • 2012-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多