使用C ++ 11在JNI中找不到jni.h

时间:2016-01-11 08:00:37

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

我使用的是Android Studio 1.5.1和android-ndk-r10e 在我编写一些C ++ 11代码并尝试使用android-ndk-r10e编译一些C ++ 11代码之前,该应用程序运行良好。

#include <jni.h>
extern "C" JNIEXPORT jstring JNICALL Java_com_example_myapplication60_MainActivity_getStringFromNative
        (JNIEnv *, jobject);

在我将-std = c ++ 11添加到app build.gradle

之后
apply plugin: 'com.android.application'

android {     compileSdkVersion 23     buildToolsVersion“23.0.2”

defaultConfig {
    applicationId "com.example.myapplication60"
    minSdkVersion 23
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
            ndk{
                moduleName "libJniTest"
                ldLibs "log"
                abiFilters "armeabi-v7a"
                cFlags  "-std=c++11"
                stl "gnustl_static"
            }
}
sourceSets{
    main{
        jniLibs.srcDirs=[]
    }
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}...

然后,IDE告诉我它找不到jni.h

3 个答案:

答案 0 :(得分:1)

我也有这个问题......

这是Androind Studio 2.0 Preview中的一个错误。

参考:Issue 195483:Android Studio无法找到jni.h,但编译仍然有效。

答案 1 :(得分:0)

sourceSets.main.jni.srcDirs = []

将其设置为模块build.gradle,它可以帮助我。

答案 2 :(得分:0)

尝试添加到您的gradle.build。糟糕的方式,但它的确有效。

module { android.ndk { cppFlags.add("-I" + file("<path-to-your-ndk>/platforms/android-19/arch-mips/usr/include").absolutePath) } }