ndk-build возвращает ненулевое значение 2 (все остальные вопросы по стеку уже проверены!)

Я знаю, что есть несколько вопросов с одинаковым названием, но после нескольких часов работы над каждым из них, который я смог найти, я решил опубликовать новый вопрос.

мой Android.mk выглядит как

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := com_lunaticcoding_colosseum_OpenCv.cpp

LOCAL_LDLIBS += -llog
LOCAL_MODULE := OpenCvFace


include $(BUILD_SHARED_LIBRARY)

мой Application.mk

APP_OPTIM := release
APP_PLATFORM := android-21
APP_STL := gnustl_static
APP_CPPFLAGS += -frtti
APP_CPPFLAGS += -fexceptions
APP_CPPFLAGS += -DANDROID
APP_ABI := armeabi-v7a

мой .h файл

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
#include "opencv2/opencv.hpp"
/* Header for class com_lunaticcoding_colosseum_OpenCv */

#ifndef _Included_com_lunaticcoding_colosseum_OpenCv
#define _Included_com_lunaticcoding_colosseum_OpenCv
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_lunaticcoding_colosseum_OpenCv
 * Method:    faceDetection
 * Signature: (J)V
 */
 void detect(Mat& frame);

 JNIEXPORT void JNICALL Java_com_lunaticcoding_colosseum_OpenCv_faceDetection
 (JNIEnv *, jclass, jlong);

#ifdef __cplusplus
}
#endif
#endif

мой .cpp файл

#include <jni.h>
#include "com_lunaticcoding_colosseum_OpenCv.h"

JNIEXPORT void JNICALL Java_com_lunaticcoding_colosseum_OpenCv_faceDetection
  (JNIEnv *, jclass, jlong addrRgba){
    //Mat& frame = *(Mat *) addrRgba;

    //detect(frame);
}

void detect(Mat& frame) {

}

Я добавил android.useDepricatedNdk = true в файл свойств, и мое «сообщение об ошибке» выглядит так:

ИЗМЕНИТЬ (удалено сообщение об ошибке, поскольку оно устарело и затрудняет чтение вопроса) (Reg. Добавление OpenCV в собственный код C через CMake в Android Studio) Мне кажется, что я действительно близок: O, но я не знаю, что мне сейчас не хватает

#include <jni.h>
#include <string>
#include <opencv>

extern "C" JNIEXPORT jstring

JNICALL
Java_com_lunaticcoding_opencvtest_MainActivity_getFace(
        JNIEnv *env,
        jobject /* this */) {
    std::string hello = "Hello from test";
    return env->NewStringUTF(hello.c_str());
}

следующая ошибка

Команда сборки не удалась. Ошибка при выполнении процесса /Users/lunaticcoding/Library/Android/sdk/cmake/3.6.4111459/bin/cmake с аргументами {--build /Users/lunaticcoding/AndroidStudioProjects/OpenCvTest2/app/.externalNativeBuild/cmake/debug/x86_64 - -target OpenCvFace} [1/2] Построение объекта CXX CMakeFiles / OpenCvFace.dir / src / main / cpp / OpenCvFace.cpp.o НЕ ВЫПОЛНЕНО: / Users / lunaticcoding / Library / Android / sdk / ndk-bundle / toolchains / llvm / prebuilt / darwin-x86_64 / bin / clang ++ --target = x86_64-none-linux-android --gcc-toolchain = / Users / lunaticcoding / Library / Android / sdk / ndk-bundle / toolchains / x86_64-4.9 / prebuilt / darwin -x86_64 --sysroot = / Users / lunaticcoding / Library / Android / sdk / ndk-bundle / sysroot -DOpenCvFace_EXPORTS -isystem / Users / lunaticcoding / Documents / OpenCV-android-sdk / sdk / native / jni / include -isystem / Users / lunaticcoding / Documents / OpenCV-android-sdk / sdk / native / jni / include / opencv -isystem /Users/lunaticcoding/Library/Android/sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include -isystem / Пользователи / lunaticcoding / Библиотека / Android / SDK /ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86_64/include -isystem /Users/lunaticcoding/Library/Android/sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9 / include / backward -isystem / Users / lunaticcoding / Library / Android / sdk / ndk-bundle / sysroot / usr / include / x86_64-linux-android -D__ANDROID_API __ = 21 -g -DANDROID -ffunction-section -funwind-tables -fstack -protector-strong -no-canonical-prefixes -Wa, - noexecstack -Wformat -Werror = format-security -frtti -fexceptions -O0 -fno-limit-debug-info -fPIC -MD -MT CMakeFiles / OpenCvFace.dir / src / main / cpp / OpenCvFace.cpp.o -MF CMakeFiles / OpenCvFace.dir / src / main / cpp / OpenCvFace.cpp.od -o CMakeFiles / OpenCvFace.dir / src / main / cpp / OpenCvFace.cpp.o - c /Users/lunaticcoding/AndroidStudioProjects/OpenCvTest2/app/src/main/cpp/OpenCvFace.cpp /Users/lunaticcoding/AndroidStudioProjects/OpenCvTest2/app/src/main/cpp/OpenCvFace:10. Файл opencv не найден, включая ^ ~~~~~~~ Произошла 1 ошибка. ниндзя: сборка остановлена: подкоманда не удалась.


person Marco Papula    schedule 09.04.2018    source источник


Ответы (1)


Убедитесь, что у вас установлена ​​последняя версия Android Studio. Удалите android.useDepricatedNdk=true и используйте externalNativeBuild, как описано в официальном руководстве по NDK.

Я вижу, что вам нужен OpenCv для сборки и запуска вашего кода. Следуйте их инструкциям, чтобы правильно указать все необходимые заголовки и библиотеки на вашем Android.mk.

Помните, что Android Studio игнорирует APP_ABI, определенный в Application.mk. Вместо этого вы должны определить abiFilters в вашем build.gradle.

person Alex Cohn    schedule 09.04.2018
comment
Большое спасибо: О, это намного проще, но у меня все еще не работает: / но я чувствую, что теперь действительно близко ... - person Marco Papula; 10.04.2018
comment
stackoverflow.com/questions/43766092/ Предоставляет решение, которое я в конечном итоге использовал подробно. - person Marco Papula; 11.04.2018