Build OpenCV 4.x for Android with c++_static

asked 2019-12-30 16:44:28 -0600

eric_engineer gravatar image

updated 2019-12-30 20:45:29 -0600

supra56 gravatar image

I had been happily using opencv as a shared library, but now I want to try out this open source project where they link to it statically. The only problem is google stopped supporting gnustl and gcc. Now they want clang and c++_static. So I've been trying to build 4.x and 3.x (failing miserably on 3.x because it wants an old version of the sdk tools and ndk).

But for 4.x I'm close, it's compiling but it's not generating the android_sdk directory or the jni files. I'm just using cmake and ninja like this. Am I missing a command switch to build the sdk portion?

cmake -GNinja -DINSTALL_ANDROID_EXAMPLES=ON -DANDROID_EXAMPLES_WITH_LIBS=ON -DBUILD_EXAMPLES=ON -DBUILD_DOCS=OFF -DWITH_OPENCL=OFF -DWITH_IPP=ON -DCMAKE_TOOLCHAIN_FILE=%ANDROID_NDK%/build/cmake/android.toolchain.cmake -DANDROID_TOOLCHAIN=clang "-DANDROID_STL=c++_static" "-DANDROID_ABI=arm64-v8a" -DANDROID_SDK_TARGET=18 "-DANT_EXECUTABLE=D:/apache-ant-1.10.6-bin/apache-ant-1.10.6/bin/ant.bat" ./opencv-4.1.1/opencv-4.1.1

And here's the end of the output where most things look happy.

--     ccache:                      NO
--     Precompiled headers:         NO
--     Extra dependencies:          dl m log
--     3rdparty dependencies:
--
--   OpenCV modules:
--     To be built:                 calib3d core dnn features2d flann highgui im
gcodecs imgproc java ml objdetect photo stitching ts video videoio
--     Disabled:                    world
--     Disabled by dependency:      -
--     Unavailable:                 gapi js python2 python3
--     Applications:                tests perf_tests examples
--     Documentation:               NO
--     Non-free algorithms:         NO
--
--   Android NDK:                   C:/Users/blank/AppData/Local/And
roid/sdk/ndk-bundle (ver 19.2.5345600)
--     Android ABI:                 arm64-v8a
--     NDK toolchain:               aarch64-linux-android-clang
--     STL type:                    c++_static
--     Native API level:            21
--   Android SDK:                   C:/Users/blank/AppData/Local/And
roid/sdk (tools: 26.1.1 build tools: 29.0.2)
--
--   GUI:
--
--   Media I/O:
--     ZLib:                        C:/Users/blank/AppData/Local/And
roid/sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/i686
-linux-android/libz.a (ver 1.2.7)
--     JPEG:                        build-libjpeg-turbo (ver 2.0.2-62)
--     WEBP:                        build (ver encoder: 0x020e)
--     PNG:                         build (ver 1.6.37)
--     TIFF:                        build (ver 42 - 4.0.10)
--     JPEG 2000:                   build (ver 1.900.1)
--     OpenEXR:                     build (ver 2.3.0)
--     HDR:                         YES
--     SUNRASTER:                   YES
--     PXM:                         YES
--     PFM:                         YES
--
--   Video I/O:
--
--   Parallel framework:            pthreads
--
--   Trace:                         YES (with Intel ITT)
--
--   Other third-party libraries:
--     Custom HAL:                  NO
--     Protobuf:                    build (3.5.1)
--
--   Python (for build):            [redacted]/python.exe
--
--   Java:
--     ant:                         D:/apache-ant-1.10.6-bin/apache-ant-1.10.6/b
in/ant.bat (ver )
--     Java wrappers:               YES
--     Java tests:                  NO
--
--   Install to:                    D:/opencv_builds/install
-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: D:/opencv_builds

D:\opencv_builds>
edit retag flag offensive close merge delete