2017-09-26 62 views
-1

嗨,大家好我目前正在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

+1

最新的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

+0

指向文本文件鏈接的文本截圖鏈接?只需在問題中發佈錯誤文本。如果它太大,請使用gist/pastebin。 –

+0

@Sheikh什麼是gradle任務?這是否意味着我的應用程序build.gradle上面的代碼塊? –

回答

0

大部分的錯誤信息可能直接在您粘貼的上方。在一般情況下,工作室的構建輸出是這樣的:

  • 的CMake/NDK輸出這裏
  • 這裏

我們需要從實際構建系統的輸出來診斷什麼事最終gradle這個消息 - 你可以在Error:Execution failed for task':app:ndkBuild'上面滾動,看看有沒有看起來像失敗的東西?

+0

信息:搖籃任務[:應用程序:generateDebugSources,:應用程序:mockableAndroidJar,:應用程序:prepareDebugUnitTestDependencies,:應用程序:generateDebugAndroidTestSources,:應用程序:compileDebugSources,:應用程序:compileDebugUnitTestSources,:應用程序:compileDebugAndroidTestSources,:openCVLibrary249:generateDebugSources,:openCVLibrary249:generateDebugAndroidTestSources ,:openCVLibrary249:mockableAndroidJar,:openCVLibrary249:prepareDebugUnitTestDependencies,:openCVLibrary249:compileDebugSources,:openCVLibrary249:compileDebugAndroidTestSources,:openCVLibrary249:compileDebugUnitTestSources] –

+0

即由gradle這個輸出塊的其餘部分建立 –

+0

退出代碼2 =窗戶無法找到您指定的文件。我猜你在手動調用ndk構建時遇到路徑錯誤。 – kathy

相關問題