Intel® Distribution of OpenVINO™ Toolkit
Community assistance about the Intel® Distribution of OpenVINO™ toolkit, OpenCV, and all aspects of computer vision-related on Intel® platforms.
6595 Discussions

Openvino build not generating libinference_engine_java_api.so

Madhini123
Beginner
1,002 Views

Hello ,

 

I have been trying to build openvino ( .jar) and related (.so ) for my openvino object detection android app.  The .jar is not getting generated. Hence I used the openvino-2023.0-windows-x86_64.jar from dkurt/release git repositories.  The .jar requires the libinference_engine_java_api.so internally and the app gets installed and crashes with this fatal error.

Hence I started building the openvino and openvino_contrib for arm cpu , but in vain. The below jar and .so are not getting generated . I have been stuck with this issue for past 2 months.

libinference_engine_java_api.so  
libc++_shared.so
libopenvino_arm_cpu_plugin.so
libopenvino_gapi_preproc.so
libopenvino_tensorflow_fe.so
 
and also the .jar .
 
I have attached the script file using for my build. Currently using a debian VM cloud to build my jar as the virtual VM is hanging because of low RAM .
Please find the script file for your reference.
It would be very great if someone could help me 
 
Regards,
Madhini Balaji
0 Kudos
9 Replies
Zulkifli_Intel
Moderator
919 Views

Hi Madhini123,

Thank you for contacting us.

 

The creation of the native library file libinference_engine_java_api.so generally occurs on a desktop (or server) environment, not directly within an Android application.

 

You are using Android Java, which uses Android AAR, and it will produce:

  • openvino-android.aar
  • libopenvino.so

 

 

Regards,

Zul


0 Kudos
Madhini123
Beginner
829 Views

Hi Zul,

 

Thanks for responding.  I shall build openvino on windows environment with the below cmake command

 

cmake -S %OPV_HOME_DIR%/one-tbb ^
-B %OPV_HOME_DIR%/one-tbb-build ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX=%OPV_HOME_DIR%/one-tbb-install ^
-DCMAKE_TOOLCHAIN_FILE=%CURRENT_CMAKE_TOOLCHAIN_FILE% ^
-DANDROID_ABI=%CURRENT_ANDROID_ABI% ^
-DANDROID_PLATFORM=%CURRENT_ANDROID_PLATFORM% ^
-DANDROID_STL=%CURRENT_ANDROID_STL% ^
-DTBB_TEST=OFF ^
-DCMAKE_SHARED_LINKER_FLAGS="-Wl,--undefined-version". 

followed by 

# Build OneTBB™ project 
cmake --build $OPV_HOME_DIR/one-tbb-build --parallel
# Install OneTBB™ project 
cmake --install $OPV_HOME_DIR/one-tbb-build

 Hope this will generate the jar and libinference_java_api.so

Regards,

Madhini

0 Kudos
Zulkifli_Intel
Moderator
771 Views

Hi Madhini123,


Let us know if you can generate the files.



Regards,

Zul


0 Kudos
Madhini123
Beginner
695 Views

Hi Zul,

 

Please let me know if I should use openvino/docs/dev/build_windows.md at master · openvinotoolkit/openvino · GitHub  or 

openvino/docs/dev/build_android.md at master · openvinotoolkit/openvino · GitHub

 

When i followed the steps build_windows.md , I got the following error 

 

Done Building Project "C:\Users\madhi\Phd\openvino_android\openvino\build\samples\cpp\benchmark\sync_benchmark\ov_sampl
es.vcxproj" (default targets) -- FAILED.

Done Building Project "C:\Users\madhi\Phd\openvino_android\openvino\build\ALL_BUILD.vcxproj" (default targets) -- FAILE
D.


Build FAILED.

"C:\Users\madhi\Phd\openvino_android\openvino\build\ALL_BUILD.vcxproj" (default target) (1) ->
"C:\Users\madhi\Phd\openvino_android\openvino\build\src\plugins\auto_batch\openvino_auto_batch_plugin.vcxproj" (default
target) (6) ->
"C:\Users\madhi\Phd\openvino_android\openvino\build\src\plugins\auto_batch\openvino_auto_batch_plugin_version.vcxproj"
(default target) (7) ->
"C:\Users\madhi\Phd\openvino_android\openvino\build\src\openvino.vcxproj" (default target) (9) ->
"C:\Users\madhi\Phd\openvino_android\openvino\build\src\common\transformations\openvino_transformations_obj.vcxproj" (d
efault target) (22) ->
(ClCompile target) ->
C:\Users\madhi\Phd\openvino_android\openvino\src\common\transformations\src\transformations\common_optimizations\conv
ert_quantize_dequantize.cpp(146,1): fatal error C1001: Internal compiler error. [C:\Users\madhi\Phd\openvino_android\op
envino\build\src\common\transformations\openvino_transformations_obj.vcxproj]

0 Warning(s)
1 Error(s)

Time Elapsed 00:18:39.28

 

Regards,

Madhini B

0 Kudos
Zulkifli_Intel
Moderator
551 Views

Hi Madhini123.

If you want to run OpenVINO on Android system, use build_android.md. This will produce:

  • openvino-android-*.aar
  • libopenvino.so

 

If you want to run OpenVINO on Windows, use build_windows.md. This will produce (If Java is enabled in the build):

  • openvino.jar
  • libinference_engine_java_api.so (for Linux)
  • inference_engine_java_api.dll (for Windows)

 

 

Regards,

Zul


0 Kudos
Madhini123
Beginner
511 Views

Hi Zul,

 

In that case, I need the android app on the mobile that I am building in my Windows system to use Openvino.  So I will start using the build_android.md . For the ANDROID_ABI  , should i have to give x86_64 or arm64-v8a. Could you please confirm

  • ANDROID_ABI specifies the target architecture:
    • x86_64 for x64 build
    • armeabi-v7a with NEON for ARM with NEON support
    • arm64-v8a for ARM 64 bits
    • riscv64 for RISC-V 64 bits (experimental)

REgards,

Madhini B

0 Kudos
Zulkifli_Intel
Moderator
364 Views

Hi Madhini123.

 Most Android devices use ARM-based chips. So I would recommend arm64-v8a.

 

 

Regards,

Zul


0 Kudos
Madhini123
Beginner
254 Views

Hi Zul,

 

I have used the below cmake command and *.aar didnt get generated. I have used a Linux machine for the build . Please let me know if anything is missed out .

#!/bin/bash
set -e

# ===== CONFIGURATION =====
WORK_DIR=/dev/shm/openvino_android
INSTALL_DIR=$WORK_DIR/install
NDK_VERSION=r25c
NDK_ZIP=android-ndk-$NDK_VERSION-linux.zip
ANDROID_ABI=arm64-v8a
ANDROID_API=29

OPENCV_VERSION=4.10.0
OPENCV_ZIP=opencv-$OPENCV_VERSION-android-sdk.zip
OPENCV_URL=https://github.com/opencv/opencv/releases/download/$OPENCV_VERSION/$OPENCV_ZIP
# =========================

mkdir -p "$WORK_DIR"
cd "$WORK_DIR"

echo "=== Cleaning old directories ==="
rm -rf openvino openvino_contrib build ndk install opencv-$OPENCV_VERSION-android-sdk

echo "=== Installing dependencies ==="
sudo apt update
sudo apt install -y git cmake ninja-build python3 unzip build-essential wget

echo "=== Downloading Android NDK $NDK_VERSION ==="
if [ ! -d "$WORK_DIR/ndk" ]; then
    wget "$NDK_URL" -O "$NDK_ZIP"
    unzip -q "$NDK_ZIP"
    mv android-ndk-$NDK_VERSION ndk
fi
export ANDROID_NDK="$WORK_DIR/ndk"

echo "=== Downloading OpenCV Android SDK $OPENCV_VERSION ==="
if [ ! -d "$WORK_DIR/opencv-$OPENCV_VERSION-android-sdk" ]; then
    wget "$OPENCV_URL" -O "$OPENCV_ZIP"
    unzip -q "$OPENCV_ZIP"
fi
export OpenCV_DIR="$WORK_DIR/opencv-$OPENCV_VERSION-android-sdk/sdk/native/jni"

echo "=== Cloning OpenVINO repositories ==="

echo "=== Updating submodules (pugixml, etc.) ==="
cd openvino
cd
cd "$WORK_DIR"

echo "=== Creating build directory ==="
mkdir -p build
cd build

echo "=== Configuring CMake for Android ARM64 ==="
cmake -GNinja \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" \
  -DANDROID_ABI="$ANDROID_ABI" \
  -DANDROID_PLATFORM="$ANDROID_API" \
  -DANDROID_STL=c++_shared \
  -DIE_EXTRA_MODULES=.../openvino_contrib/modules \
  \
  -DENABLE_INTEL_CPU=OFF \
  -DENABLE_ONEDNN_FOR_ARM=OFF \
  -DENABLE_ARM_CPU=ON \
  -DENABLE_ACL=ON \
  -DENABLE_ARM_COMPUTE=ON \
  \
  -DBUILD_java_api=ON \
  -DENABLE_SAMPLES=ON \
  -DENABLE_TESTS=OFF \
  -DENABLE_PYTHON=OFF \
  -DENABLE_OPENCV=ON \
  -DOpenCV_DIR="$OpenCV_DIR" \
  \
  -DTHREADING=SEQ \
  -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
  -S "$WORK_DIR/openvino"

echo "=== Building OpenVINO ==="
ninja -j$(nproc)

echo "=== Installing OpenVINO ==="
ninja install

echo "=== DONE ==="
echo "Installed in: $INSTALL_DIR"
 
The following .so were generated 
libopenvino_auto_batch_plugin.so
libopenvino_auto_plugin.so
libopenvino_c.so
libopenvino_hetero_plugin.so
libopenvino_ir_frontend.so
libopenvino_onnx_frontend.so
libopenvino_paddle_frontend.so
libopenvino_pytorch_frontend.so
libopenvino_tensorflow_frontend.so
libopenvino_tensorflow_lite_frontend.so
libopenvino.so
 
Regards,
Madhini B
0 Kudos
Zulkifli_Intel
Moderator
235 Views

Hi Madhini123,

 

From your output, we can see that the build is correct. The missing .aar file could be that some step is missing. I'm checking into this and will get back to you.

 


Regards,

Zul


0 Kudos
Reply