Android NDK:头文件错误,没有这样的文件或目录

时间:2015-06-02 03:13:48

标签: android android-ndk

在Android应用程序中使用C库。头文件似乎在LOCAL_C_INCLUDES中列出正常,但NDK没有在它们上面。我关心的是我可以删除整个Android.mk文件的内容,但仍然会出现同样的错误。 (也许这就是问题?)

此处的屏幕截图是我的Android.mk文件,头文件存在的证据以及错误消息。一切似乎都井井有条,但仍然无效:

https://www.evernote.com/l/ALfUcInkbU5KcalFLvRnhfNPMqROk8w2bAAB/image.png

谢谢!我将检查回来,如果需要可以提供文本片段。

1 个答案:

答案 0 :(得分:2)

您正在使用Android Studio,而使用当前gradle插件的AS会忽略您的Android.mk/Application.mk文件。这就是ndk无法找到标题的原因。

您可以使用自动生成的Makefile简单地停用对ndk-build的内置调用,并直接进行gradle调用ndk-build,将您的Makefile存入帐户:

import org.apache.tools.ant.taskdefs.condition.Os

...

android {  
  ...
  sourceSets.main {
        jniLibs.srcDir 'src/main/libs' //set .so files location to libs instead of jniLibs
        jni.srcDirs = [] //disable automatic ndk-build call
    }

    // add a task that calls regular ndk-build(.cmd) script from app directory
    task ndkBuild(type: Exec) {
        if (Os.isFamily(Os.FAMILY_WINDOWS)) {
            commandLine 'ndk-build.cmd', '-C', file('src/main').absolutePath
        } else {
            commandLine 'ndk-build', '-C', file('src/main').absolutePath
        }
    }

    // add this task as a dependency of Java compilation
    tasks.withType(JavaCompile) {
        compileTask -> compileTask.dependsOn ndkBuild
    }
}