无法使用android-ndk和Android Studio构建项目

3
我有一个包含FFmpeg和其他外部库的Android项目。我下载了最新版本的ndk(ndk-r10),并使用Android Studio 0.8.0进行开发。同时,我也在运行Windows 8 64位系统,并安装了最新版本的cygwin。
我的项目能够正常构建,并且我已经将ndk.dir添加到local.properties中。但是当我尝试运行时,出现了以下错误信息:
The System cannot find the path specified

Error:Execution failed for task ':app:compileDebugNdk'.
com.android.ide.common.internal.LoggedErrorException: Failed to run command:
C:\Users\John1\AppData\Local\Android\android-ndk-r10\ndk-build.cmd

NDK_PROJECT_PATH=null      
APP_BUILD_SCRIPT=C:\Users\John1\AndroidstudioProjects\android-project\app\build\intermediates\ndk\debug\Android.mk 
APP_PLATFORM=android-18 
NDK_OUT=C:\Users\John1\AndroidstudioProjects\android-project\app\build\intermediates\ndk\debug\obj 
NDK_LIBS_OUT=C:\Users\John1\AndroidstudioProjects\android-project\app\build\intermediates\ndk\debug\lib 
APP_ABI=all

Error Code:
    1
Output:
    The system cannot find the path specified.

寻求建议。谢谢。


这些路径正确吗:C:\Users\John1\AppData\Local\Android\android-ndk-r10\ndk-build.cmdC:\Users\John1\AndroidstudioProjects\android-project\app\build\ - Alex Cohn
是的,ndk-build.cmd绝对正确,C:\ Users \ John1 \ AndroidstudioProjects \ android-project \ app \ build确实存在(内部有两个子文件夹,generated和intermediates) - nyc0202034
@nyc0202034 你是在使用Gradle进行构建吗? - sujithvm
@g3m,我没有application.mk文件,只有一个android.mk文件。请给予建议。 - nyc0202034
我还注意到中间文件夹存在,但不是项目的一部分。那会影响什么吗? - nyc0202034
显示剩余2条评论
1个回答

16

使用Android Studio时,NDK的支持还不完全,您的*.mk文件将被忽略。通过停用默认的NDK集成,让Android Studio/gradle自己调用ndk-build(.cmd),并使用标准的libs/位置来集成.so文件,您可以使其重用。

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

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    defaultConfig{
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 101
        versionName "1.0.1"
    }

    sourceSets.main {
        jniLibs.srcDir 'src/main/libs'
        jni.srcDirs = [] //disable automatic ndk-build call
    }

    // call 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
        }
    }

    tasks.withType(JavaCompile) {
        compileTask -> compileTask.dependsOn ndkBuild
    }
}
如果你需要更多信息,这里是我在这个主题上的博客文章:http://ph0b.com/android-studio-gradle-and-ndk-integration/

这样做会隐藏项目中的“c”文件夹,因此我无法从Android Studio打开c文件。有什么解决方法吗? - Parmaia
做完这个之后,出现了以下错误:“启动进程时出现问题:命令 'ndk-build.cmd'”。 - Adi
阅读日志以查看错误。也许NDK目录还没有添加到您的环境路径中? - ph0b
请注意:这些更改应该在build.gradle文件中进行,当使用React Native时,这并不是一件简单的事情,因为所有内容都是抽象的,希望这可以帮助。 - Marc_Alx
@ph0b 我正在使用android-studio3.5和ndk21r。为什么在最新版本的ndk中ndk-build无法运行?最新构建是否存在任何问题? - Peter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接