Ошибка сборки OpenCV android NDK

avatar
Malik Mohrat
8 апреля 2018 в 12:06
250
0
1

Я использую NDK для использования собственного кода C++ в OpenCV через студию Android. Все в порядке, за исключением случаев, когда я запускаю этот проект на устройстве Android, у меня возникает следующая ошибка

Предупреждение. Обнаружен собственный исходный код C/C++, но похоже, что опция NDK не настроена. Обратите внимание: если у вас есть файл Android.mk, он не используется для компиляции. Рекомендуемый обходной путь — удалить каталог исходного кода jni по умолчанию, добавив:

android {
    sourceSets {
main {
jni.srcDirs = []
     }
                }
          }

а также

для build.gradle вручную скомпилируйте код с помощью ndk-build, а затем поместите полученный общий объект в src/main/jniLibs.

C:\Users\MALIK\Desktop\ImageJ\app\src\main\jni\com_example_malik_imagej_DetectionBasedTracker.cpp Ошибка: (2, 10) файл «opencv2/opencv.hpp» не найден, возникла 1 ошибка.

и когда я делаю обходной путь и делаю jni.srcDir пустым, я получаю сообщение об ошибке, что «не удается разрешить соответствующую функцию JNI» поэтому нативный код не запускается и приложение вылетает, что мне делать в этом случае? это моя оценка:

apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"

defaultConfig {
    applicationId "com.example.malik.haar"
    minSdkVersion 16
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}
task ndkBuild(type: Exec, description: 'Compile JNI source via NDK') {
    commandLine "C:/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
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
sourceSets { main { jni.srcDirs = [] } }
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.1.1'
androidTestCompile files('libs/junit-4.12.jar')
compile project(':openCVLibrary320')
}

и это мой файл Android.mk:

    LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)


OPENCVROOT:=C:\OpenCV-android-sdk
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
include $(OPENCVROOT)/sdk/native/jni/OpenCV.mk

LOCAL_SRC_FILES := com_example_malik_imagej_DetectionBasedTracker.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)


LOCAL_LDLIBS += -llog -ldl
LOCAL_MODULE := detection_based_tracker

include $(BUILD_SHARED_LIBRARY)

и это мой заголовочный файл собственного кода:

спасибо.

Источник
Alex Cohn
4 марта 2019 в 09:29
0

Это основано на довольно старом наборе инструментов. Интеграция OpenCV в проект NDK в Android Studio с помощью CMake или ndkBuild в наши дни стала намного проще.

Ответы (0)