0

I am facing this problem while connecting opencv with native c++ in Android Studio. I am working in windows 10.

 # For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html

# Sets the minimum version of CMake required to build the native library.

cmake_minimum_required(VERSION 3.10.2)
# opencv
set(OpenCV_STATIC ON)
set(OpenCV_DIR $ENV{OPENCV_ANDROID}/sdk/native/jni)
find_package(OpenCV REQUIRED)

# Declares and names the project.

project("opencv_sample1")

# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.

add_library( # Sets the name of the library.
             native-lib

             # Sets the library as a shared library.
             SHARED

             # Provides a relative path to your source file(s).
             native-lib.cpp )

# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.

find_library( # Sets the name of the path variable.
              log-lib

              # Specifies the name of the NDK library that
              # you want CMake to locate.
              log )

# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.

target_link_libraries( # Specifies the target library.
                       native-lib
                       ${OpenCV_LIBS}
                       ${jnigraphics-lib}

                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} )

This is my CMakeLists.txt file.

C:\tools\OpenCV-android-sdk

This is the path for the OpenCV-android-sdk folder. I have created an environment variable named OPENCV_ANDROID and have added the above path.

Execution failed for task ':app:generateJsonModelDebug'.
> C:\Users\Sanchita Das\AndroidStudioProjects\Opencv_sample1\app\src\main\cpp\CMakeLists.txt : C/C++ debug|armeabi-v7a : CMake Error at C:\Users\Sanchita Das\AndroidStudioProjects\Opencv_sample1\app\src\main\cpp\CMakeLists.txt:10 (find_package):
    Found package configuration file:

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

I have tried with the "*Try" option but got no better results. Also have tried the method suggested in "https://stackoverflow.com/questions/63328010/app-src-main-cpp-cmakelists-txt-c-c-debugarm64-v8a-configuration-failed" "https://stackoverflow.com/questions/45219049/android-studio-cmake-error-build-command-failed" but could not solve my problem. Please anyone with any suggestions?

Jeru Luke
  • 20,118
  • 13
  • 80
  • 87
Euphoria
  • 1
  • 2
  • Try it in the directory without spaces in its path. You should also wrap all the CMake variables you dereference (expand) in double quotes unless you know that it shouldn't be wrapped. So `set(OpenCV_DIR $ENV{OPENCV_ANDROID}/sdk/native/jni)` should become: `set(OpenCV_DIR "$ENV{OPENCV_ANDROID}/sdk/native/jni")` and so on. – ixSci Apr 06 '22 at 07:17
  • @ixSci `set(OpenCV_DIR "$ENV{OPENCV_ANDROID}/sdk/native/jni")` even after this change the error persists. – Euphoria Apr 06 '22 at 07:41

1 Answers1

1

After a long search in the CMake file to confirm each variable, I finally found that the value of ANDROID_NDK_ABI_NAME on line 39 in the file OpenCVConfig.cmake is empty! It might be the following possibilities: [arm64-v8a, armeabi-v7a, x86, x86_64], each representing the CPU architecture in different environments. Try to comment out the original ANDROID_NDK_ABI_NAME, and then replaced it with ANDROID_ABI to successfully sync.

ishi
  • 11
  • 3