安卓工作室;未找到 jni.h
Posted
技术标签:
【中文标题】安卓工作室;未找到 jni.h【英文标题】:Android studio ; jni.h not found 【发布时间】:2018-05-13 12:55:29 【问题描述】:我正在尝试使用他们网站上的教程在 Windows 上使用 android Studio 构建 GStreamer 应用,但是,正如其他问题中已经提到的,这些教程不是最新的,似乎也不适用于 Android Studio。我遵循了 Eduardo Fernando 提出的教程: Gstreamer examples in Android Studio,但它不会构建,因为我无法解决找不到 jni.h 文件的问题。
> Build command failed.
Error while executing process
C:\Users\spomerleau\AppData\Local\Android\Sdk\ndk-bundle\ndk-build.cmd with
arguments NDK_PROJECT_PATH=null
APP_BUILD_SCRIPT=C:\Users\spomerleau\Desktop\Android_GSTreamer\Premade_Test_tut5\android-tutorial-5\app\src\main\jni\Android.mk NDK_APPLICATION_MK=C:\Users\spomerleau\Desktop\Android_GSTreamer\Premade_Test_tut5\android-tutorial-5\app\src\main\jni\Application.mk APP_ABI=arm64-v8a NDK_ALL_ABIS=arm64-v8a NDK_DEBUG=1 APP_PLATFORM=android-21 NDK_OUT=C:/Users/spomerleau/Desktop/Android_GSTreamer/Premade_Test_tut5/android-tutorial-5/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT=C:\Users\spomerleau\Desktop\Android_GSTreamer\Premade_Test_tut5\android-tutorial-5\app\build\intermediates\ndkBuild\debug\lib C:/Users/spomerleau/Desktop/Android_GSTreamer/Premade_Test_tut5/android-tutorial-5/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libtutorial-5.so
GStreamer : [GEN] => gst-build-arm64-v8a/gstreamer_android.c
GStreamer : [COMPILE] => gst-build-arm64-v8a/gstreamer_android.c
gst-build-arm64-v8a/gstreamer_android.c:1:10: fatal error: 'jni.h' file not found
#include <jni.h>
^~~~~~~
1 error generated.
make: *** [gst-build-arm64-v8a/gstreamer_android.o] Error 1
我执行了 javah 命令,但生成的 .h 也找不到 #include。
我尝试了 ndk-build 命令,但它会停止说 jni.h 文件丢失。
关于如何将 jni.h 文件链接到项目的任何建议?
【问题讨论】:
我删除了图片,对此感到抱歉!这是我的第一个问题,任何关于如何表现的建议都非常感谢! 您可能不明白:请不要使用错误消息或代码发布文本的图像。 这可能是 NDK 安装错误。尝试从official site 下载 NDK zip,解压缩到C:\Users\spomerleau\NDK
,然后在您的项目中编辑文件 local.properties 以查看那里。另一个可能的麻烦可能是你的项目的路径真的很长。尝试将android-tutorial-5
移动到更短的位置(路径中没有空格)。
【参考方案1】:
这可能是 Android NDK 中 r16 更改的问题,这些更改已由以下 commit 上游修复
问题在于 NDK 将头文件移动到 unified structure 中,从而破坏了任何用户期望旧位置中的头文件。
【讨论】:
你知道我该如何解决吗?我刚刚尝试将我的 NDK 更新到 16.1,但没有成功。 @sebseb24 您需要降级到 NDK r15。请参阅此答案(特别是发布列表评论中的链接):***.com/a/41989108/1172714 我有上述问题,谁能帮我解决这个问题?【参考方案2】:这是由于 Android Studio 更新/安装到 NDK_r16,它弃用了 GCC 支持。尝试恢复到 NDK_r15c。
从https://developer.android.com/ndk/downloads/older_releases.html 下载 r15c,然后将应用的 NDK 位置指向解压缩的文件夹。
【讨论】:
我知道您可以降级,但是如何修复您的应用程序/NDK 安装以便您可以使用当前版本? @Questionmark 是的,您正在编写,但有时您的系统不支持较新版本。 Here 你可以找到 v16 的需求并映射到你的系统。【参考方案3】:jni.h 是一个头文件,它已经存在于 android ndk 包中。如果它不存在,您可以重新安装该软件包,或者您可以通过网络搜索您可以很容易获得的源文件,并将该文件放入您的编译器期望的位置
【讨论】:
以上是关于安卓工作室;未找到 jni.h的主要内容,如果未能解决你的问题,请参考以下文章
JNI 编译致命错误:jni.h: No such file or directory
错误:无法找到方法 'com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List;安卓工作室 3