Android NDK:找不到应用程序项目目录?

时间:2015-06-29 12:03:40

标签: android android-ndk

起初,抱歉我的英语不好。 因此,我尝试使用此源代码运行音频mp3录制的示例: https://github.com/yhirano/Mp3VoiceRecorderSampleForAndroid

如果我构建项目,我收到错误:

Error:Execution failed for task ':app:ndkBuild'.
> A problem occurred starting process 'command 'ndk-build.cmd''

然后我在AndroidStudio中打开终端并输入:

1) cd c:\\ndk
2) ndk-build

还有另一个错误:

Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
c:\ndk\build/core/build-local.mk:148: *** Android NDK: Aborting    .  Stop.

好的,我在终端做下一步:

ndk-build NDK_PROJECT_PATH=c:/AndroidStudioProjects/Mp3VoiceRecorderSampleForAndroid-master/

这个命令给了我积极的结果:

[armeabi] Install        : libmp3lame.so => libs/armeabi/libmp3lame.so

但是,如果我重建我的项目第一次错误再来!搜索了很多答案,但没有找到解决方案.. 请帮忙!我做错了什么?

5 个答案:

答案 0 :(得分:4)

根据Android NDK: Setup的说明:

  1. 切换到项目的根目录。
  2. 通过在命令提示符下键入ndk-build,执行ndk-build来构建应用程序的本机组件。
  3. 像常规Android应用一样构建和安装项目。
  4. 看起来非常像你正在跳过第一步(" c:\\ ndk"很可能是NDK安装目录,而不是项目的根目录)。很可能是因为你在设置说明中跳过了它所说的位:

    1. 使用包含NDK的目录的位置更新PATH环境变量
    2. 允许您从任何地方运行ndk-build。

      如果您真的想构建上述方法,可以尝试将NDK_PROJECT_PATH添加到用户/系统环境变量中 - 但是当您尝试构建不同的NDK项目时,这可能会导致神秘的问题。

答案 1 :(得分:1)

您正在使用Android Studio,而当前gradle插件的AS会忽略您的Makefile,这肯定会产生错误。

由于内置的​​ndk支持不支持本机依赖(这里需要),你可以简单地停用对ndk-build的内置调用,并直接调用grad调用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
    }
}

答案 2 :(得分:1)

您无法使用&nbsp-build'构建Android项目(如果你不使用c或c ++来开发android)。因为ndk构建器用于编译c或c ++项目。我能理解你为何犯这个错误。因为你在项目中使用了用c或c ++编写的库。因此,您应该在终端上找到用c或c ++编写的库,然后编写' ndk-build'然后跑。

对于Ex:

$ cd AndroidStudioProjects / OcrTest / C_orC ++ _ Project / src / main

$ NDK-构建

答案 3 :(得分:1)

@ ph0b我使用了你的build.gradle,但对我没用。现在我正在使用它,这工作正常。

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_path' + '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
    }
}

答案 4 :(得分:1)

我的NDK项目遇到了完全相同的问题。它只用一个命令解决了。 转到项目jni文件夹,其中包含 Application.mk Android.mk 文件。

cd /home/rajib/Desktop/GIT_Code/testProject/jni/

现在输入以下命令

/home/rajib/Android/NDK-Manual/android-ndk-r10e/ndk-build NDK_PROJECT_PATH=./ NDK_APPLICATION_MK=./Application.mk APP_BUILD_SCRIPT=./Android.mk

N.B:你必须使用自己的NDK路径 希望能帮助到你。谢谢你。