【问题标题】:Use C++11 In JNI cannot find jni.h在 JNI 中使用 C++11 找不到 jni.h
【发布时间】:2016-04-15 11:17:58
【问题描述】:

我使用了 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'

机器人{ 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

【问题讨论】:

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


    【解决方案1】:

    我也有这个问题....

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

    Ref:Issue 195483:Android Studio 找不到 jni.h,但编译仍然有效。

    【讨论】:

      【解决方案2】:
      sourceSets.main.jni.srcDirs = []
      

      将它设置为模块build.gradle,它对我有帮助。

      【讨论】:

        【解决方案3】:

        尝试添加到您的 gradle.build。不好的方法,但它有效。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-28
          • 2015-01-23
          • 2018-06-12
          • 2018-06-01
          • 2018-12-05
          相关资源
          最近更新 更多