无法在osx yosemite上从gradle在Android工作室上运行ndk-build

tec*_*h74 11 android gradle android-ndk

我想在MAC OSX Yosemite上的Android Studio 1.0项目中从我的build.gradle运行ndk-build.

task ndkBuild(type: Exec) {
    commandLine 'ndk-build', '-C', file('src/main').absolutePath

}
Run Code Online (Sandbox Code Playgroud)

我在local.properties文件中指定了ndk-dir,但是我收到了这个错误

A problem occurred starting process 'command 'ndk-build'
Run Code Online (Sandbox Code Playgroud)

如果我从命令行运行gradle脚本,那么一切都成功构建

./gradlew :myproject:assembleDebug
Run Code Online (Sandbox Code Playgroud)

因此,由于某种原因,IDE无法调用ndk-build.我在Android studio中启用了一些调试信息,我有以下错误

Caused by: java.io.IOException: error=2, No such file or directory
Run Code Online (Sandbox Code Playgroud)

因此IDE无法找到ndk-build exe,但是从IDE内部的终端运行可以找到ndk-build exe.

谢谢

hbr*_*brc 14

编辑

您现在可以像这样检索路径:

android.ndkDirectory.getAbsolutePath()
Run Code Online (Sandbox Code Playgroud)

我更新了下面的示例.


正如您在评论中所说,commandLine需要ndk-build程序的路径才能使其工作.这是一种在build.gradle中检索ndk路径的方法:

// call regular ndk-build script from app directory  
task ndkBuild(type: Exec) {
        def ndkDir = android.ndkDirectory.getAbsolutePath()

        commandLine ndkDir + "/ndk-build", '-C', file('src/main').absolutePath
    }
Run Code Online (Sandbox Code Playgroud)

你将有一个"无法推断参数类型"的lint警告,你可以放心地忽略这个警告.添加// noinspection GroovyAssignabilityCheck以摆脱它.

这是用gradle 1.2.3测试的