【问题标题】:What is the jni/libs folder?jni/libs 文件夹是什么?
【发布时间】:2014-10-29 15:10:33
【问题描述】:

我注意到在 Eclipse 中为项目添加原生支持时,它会生成一个 jni/libs/ 文件夹。这个文件夹是什么以及它是如何使用的,因为我在 NDK 文档中找不到它。

来自 NDK 文档,

您的预建共享库的副本将被复制到 $PROJECT/obj/local,另一个将被复制并剥离到 $PROJECT/libs/(abi)。

我注意到,当执行ndk-build 时,该目录被清除并放入了一些库。然而,$Project/jni/libs 中的库通常与 $Project/libs 不匹配。此外,当我安装应用程序时,似乎没有引用 jni/libs。

jni/libs 只是 ndk-build 使用的临时文件夹吗?它是否记录在任何地方,或者这是使用 Eclipse 获得本机支持的痕迹?

【问题讨论】:

  • "jni/libs" 似乎有点奇怪。通常 jni/ 将包含本机库的 source 代码(或至少是查找它的说明),而 libs/ 将包含结果,包括中间阶段和最终的 .so 输出。您是否有可能无意中让 eclipse usefully 为开发主机构建 jni 代码(就像您在做正常的非 android java 工作一样),与 ndk usefully 并行为您的 android 目标构建它?
  • 你的项目是否有jni/Android.mk你点击添加原生支持
  • @AlexCohn 没有 jni 文件夹,除非您手动添加一个或单击添加本机支持

标签: android eclipse android-ndk


【解决方案1】:

jni/libs 文件夹是您从 C/C++ 源构建共享库文件的位置。您的本机代码将根据您在 application.mk 文件中为参数设置的值进行编译

APP_ABI: = <all | x86 | armv7a | armeabi-v7 | mips>

生成相应的 libs.so 文件并将其放置在 jni/libs 文件夹中。这些 lib 文件捆绑到您的最终 apk 文件中,并在需要时由您的应用程序引用。这不是临时文件夹,该文件夹中的文件确实会进入您的最终 apk 文件。

【讨论】:

  • 谢谢,但我在 NDK 文档中没有看到这一点,而是看到 NDK 文档引用 $PROJECT/libs/abi 作为进入您的 apk 的文件夹。
  • abi 是指 x86、arm、mips 等。为每个架构创建不同的文件夹。
  • 是的,我知道,但是我没有看到 NDK 文档中提到 jni/libs,只提到了 $PROJECT/libs。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多