任务“:app:ndkBuild”的执行失败。 >过程'命令'完成非零退出值2
嗨,大家好我目前正在Youtube上使用Android工作室创建一个移动应用程序的教程,不幸的是我遇到了一些错误,并不能自己解决它。 .cpp和.h文件的错误都是相同的。任何帮助将不胜感激,提前致谢! :)任务“:app:ndkBuild”的执行失败。 >过程'命令'完成非零退出值2
这是我gradle这个编译错误:
Error:Execution failed for task ':app:ndkBuild'.
> Process 'command 'C:/Users/dell/AppData/Local/Android/sdk/ndk-bundle/ndk-
build.cmd'' finished with non-zero exit value 2
这是我的.h文件(Android的工作室说,有对“jint”和缺少一个错字错误“;”):
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
/* Header for class com_example_dell_mpdetecthumans_OpencvNativeClass */
#ifndef _Included_com_example_dell_humandetectionndk_OpencvNativeClass
#define _Included_com_example_dell_humandetectionndk_OpencvNativeClass
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_example_dell_mpdetecthumans_OpencvNativeClass
* Method: convertGray
* Signature: (JJ)I
*/
int toGray(Mat img, Mat& gray);
JNIEXPORT jint JNICALL
Java_com_example_dell_humandetectionndk_OpencvNativeClass_convertGray
(JNIEnv *, jclass, jlong, jlong);
#ifdef __cplusplus
}
#endif
#endif
.cpp文件(Android的工作室说,有对 “jint” 和缺少一个错字错误 “;”):
#include <com_example_dell_humandetectionndk_OpencvNativeClass.h>
JNIEXPORT jint JNICALL
Java_com_example_dell_humandetectionndk_OpencvNativeClass_convertGray
(JNIEnv *, jclass, jlong addrRgba, jlong addrGray){
Mat& mRgb = *(Mat*)addrRgba;
Mat& mGray = *(Mat*)addrGray;
int conv;
jint retVal;
conv = toGray(mRgb, mGray);
retVal = (jint)conv;
return retVal;
}
int toGray(Mat img, Mat& gray){
cvtColor(img, gray, CV_RGBA2GRAY);
if(gray.rows==img.rows && gray.cols==img.cols)
return 1;
return 0;
}
Android.mk :
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#opencv
OPENCVROOT:= C:\OpenCV-2.4.9-android-sdk
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
include ${OPENCVROOT}/sdk/native/jni/OpenCV.mk
LOCAL_SRC_FILES := com_example_dell_humandetectionndk_OpencvNativeClass.cpp
LOCAL_LDLIBS += -llog
LOCAL_MODULE := MyOpencvLibs
include $(BUILD_SHARED_LIBRARY)
我application.mk
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM := android-16
我的应用程序的build.gradle
sourceSets.main {
jni.srcDirs = [] //disable automatic ndk-build call
}
task ndkBuild(type: Exec, description: 'Compile JNI source via NDK') {
commandLine "C:/Users/dell/AppData/Local/Android/sdk/ndk-bundle/ndk-build.cmd",
'NDK_PROJECT_PATH=build/intermediates/ndk',
'NDK_LIBS_OUT=src/main/jniLibs',
'APP_BUILD_SCRIPT=src/main/jni/Android.mk',
'NDK_APPLICATION_MK=src/main/jni/Application.mk'
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
这是我下面的教程链接:https://www.youtube.com/watch?v=Oq3oiCfSgbo&t=727s
大部分的错误信息可能直接在您粘贴的上方。在一般情况下,工作室的构建输出是这样的:
- 的CMake/NDK输出这里
- 这里
我们需要从实际构建系统的输出来诊断什么事最终gradle这个消息 - 你可以在Error:Execution failed for task':app:ndkBuild'上面滚动,看看有没有看起来像失败的东西?
信息:摇篮任务[:应用程序:generateDebugSources,:应用程序:mockableAndroidJar,:应用程序:prepareDebugUnitTestDependencies,:应用程序:generateDebugAndroidTestSources,:应用程序:compileDebugSources,:应用程序:compileDebugUnitTestSources,:应用程序:compileDebugAndroidTestSources,:openCVLibrary249:generateDebugSources,:openCVLibrary249:generateDebugAndroidTestSources ,:openCVLibrary249:mockableAndroidJar,:openCVLibrary249:prepareDebugUnitTestDependencies,:openCVLibrary249:compileDebugSources,:openCVLibrary249:compileDebugAndroidTestSources,:openCVLibrary249:compileDebugUnitTestSources] –
即由gradle这个输出块的其余部分建立 –
退出代码2 =窗户无法找到您指定的文件。我猜你在手动调用ndk构建时遇到路径错误。 – kathy
最新的Android Studio和Android Gradle Plugins支持NDK-Build和CMake。目前没有必要为此创建gradle任务。请看看这个[回答](https://stackoverflow.com/questions/44174164/execution-failed-for-appndkbuild-process-command-ndk-build-cmd-finished-w?rq=1)和[Android指南](https://developer.android.com/studio/projects/add-native-code.html) – Sheikh
指向文本文件链接的文本截图链接?只需在问题中发布错误文本。如果它太大,请使用gist/pastebin。 –
@Sheikh什么是gradle任务?这是否意味着我的应用程序build.gradle上面的代码块? –