【问题标题】:Can't run ndk-build on Android studio from gradle on osx yosemite无法从 osx yosemite 上的 gradle 在 Android Studio 上运行 ndk-build
【发布时间】:2015-02-15 16:23:02
【问题描述】:

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

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

}

我已在 local.properties 文件中指定了 ndk-dir,但出现此错误

A problem occurred starting process 'command 'ndk-build'

如果我像这样从命令行运行 gradle 脚本,一切都会成功构建

./gradlew :myproject:assembleDebug

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

Caused by: java.io.IOException: error=2, No such file or directory

所以 IDE 找不到 ndk-build exe,但是从 IDE 内的终端运行可以找到 ndk-build exe。

谢谢

【问题讨论】:

  • 好吧,我现在有一个解决方法,IDE 找不到 ndk-build 的路径,所以我将完整路径放在 commandLine 'fullpath/ndk-build' 中,然后它就可以工作了
  • 您是否将 Android Studio 设置为使用 Gradle 包装器?

标签: android gradle android-ndk


【解决方案1】:

编辑

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

android.ndkDirectory.getAbsolutePath()

我更新了下面的示例。


正如您在 cmets 中所说,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
    }

您将收到“无法推断参数类型”的 lint 警告,您可以放心地忽略此警告。添加// noinspection GroovyAssignabilityCheck 以摆脱它。

这是用 gradle 1.2.3 测试的

【讨论】:

  • 太棒了,我正在寻找这个 ndkDir 技巧!但是,我不得不写commandLine ndkDir+'/ndk-build.cmd'
  • 获取ndkDirectory的正确方法是使用android.ndkDirectory
  • 一般来说不用转换成absolutePath,relative就可以了
  • @PhilLab:那是因为您使用的是 Windows。好的做法是在运行时检查:stackoverflow.com/a/27406803/192373
猜你喜欢
  • 2020-08-07
  • 2015-05-24
  • 1970-01-01
  • 2015-08-13
  • 2015-03-07
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多