jni/libs文件夹是什么?

3
我注意到在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/ 目录下会包含本地库的 源代码(或至少是查找它的指令),而 libs/ 目录则包含中间阶段和最终的 .so 输出结果。你是否有可能不小心让 Eclipse 为开发主机(就像进行普通的非 Android Java 工作一样)无用地构建 JNI 代码,同时 NDK 则有用地为你的 Android 目标构建它? - Chris Stratton
在您点击“添加本地支持”之前,您的项目是否有jni/Android.mk文件? - Alex Cohn
@AlexCohn 在你手动添加一个或者点击“添加本地支持”之前,是没有jni文件夹的。 - stevebot
1个回答

4

jni/libs文件夹是您的共享库文件从C/C++源代码构建的位置。您的本地代码将被编译,具体取决于您在application.mk文件中设置的参数值。

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

对应的libs.so文件会在jni/libs文件夹中生成。这些库文件会被打包到你的最终apk文件中,并在需要时由你的应用程序引用。这不是一个临时文件夹,该文件夹中的文件会被打包到最终的apk文件中。


谢谢,但我在NDK文档中没有看到这个内容。相反,我看到NDK文档引用$PROJECT/libs/abi作为放入你的apk中的文件夹。 - stevebot
ABI 是指 x86、ARM、MIPS 等不同的架构。每种架构都会创建不同的文件夹。 - G3M
是的,我知道,但我在NDK文档中没有看到jni/libs的提及,只有$PROJECT/libs被提到了。 - stevebot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接