Android工作室;找不到jni.h.

时间:2017-11-29 18:10:51

标签: java c++ android-studio android-ndk java-native-interface

我尝试使用Android网站上的教程在Windows上使用Android Studio构建GStreamer应用,但正如其他问题中已经提到的那样,这些教程不是最新的,也不适用于Android工作室。我已经按照 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文件链接到项目的任何建议?

3 个答案:

答案 0 :(得分:6)

这可能是Android NDK中r16更改的问题,这些更改由以下commit上游修复

问题是NDK将头文件移动到unified structure,从而打破了旧位置中任何期望标题的用户。

答案 1 :(得分:2)

这是因为Android Studio更新/安装到NDK_r16,不赞成使用GCC支持。尝试恢复为NDK_r15c。

https://developer.android.com/ndk/downloads/older_releases.html下载r15c,然后将应用的NDK位置指向解压缩的文件夹。

答案 2 :(得分:0)

jni.h是头文件,已存在于android ndk包中。如果它不存在,您可以重新安装软件包,也可以在Web上搜索可以轻松获取的源文件,并将该文件放入编译器期望的位置