# --Compile DLib # Adapted from https://github.com/Luca96/dlib-for-android # ----------------------------------------------------------------------------- # Android-cmake path: REPLACE WITH YOUR CMAKE PATH! AndroidCmake='/home/user/Android/Sdk/cmake/3.22.1/bin/cmake' # Android-ndk path: REPLACE WITH YOUR NDK PATH! NDK="${ANDROID_NDK:/home/user/Android/Sdk/ndk/21.4.7075529}" TOOLCHAIN="$NDK/build/cmake/android.toolchain.cmake" # Supported Android ABI: TAKE ONLY WHAT YOU NEED! # ABI=('armeabi-v7a' 'arm64-v8a' 'x86' 'x86_64') ABI=('arm64-v8a') # path to strip tool: REPLACE WITH YOURS, ACCORDING TO OS! STRIP_PATH="/home/user/Android/Sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin" # Declare the array declare -A STRIP_TOOLS STRIP_TOOLS=( ['armeabi-v7a']=$STRIP_PATH/arm-linux-androideabi-strip ['arm64-v8a']=$STRIP_PATH/aarch64-linux-android-strip ['x86']=$STRIP_PATH/x86_64-linux-android-strip ['x86_64']=$STRIP_PATH/x86_64-linux-android-strip ) # Minimum supported sdk: SHOULD BE GREATER THAN 16 MIN_SDK=21 #16 # Android project path: REPLACE WITH YOUR PROJECT PATH! PROJECT_PATH='/home/user/Downloads/AndroidProject' #I have no android project on this virtual machine, I just need a folder where I can copy the generated .so libs # Directory for storing native libraries NATIVE_DIR="$PROJECT_PATH/compiled" #same # ----------------------------------------------------------------------------- # -- Dlib # ----------------------------------------------------------------------------- # Dlib library path: REPLACE WITH YOUR DLIB PATH! O scarichi il repo di luca ricorsivamente e allora punti alla sottocartella "dlib" del repo, o scarichi dlib a parte e punti a quella cartella! DLIB_PATH='/home/user/Downloads/dlib-19.21' function compile_dlib { cd $DLIB_PATH echo echo "*************" echo "I'll try to make build folder in '$DLIB_PATH'/build " echo "*************" echo mkdir 'build' for abi in "${ABI[@]}" do echo echo "*************" echo "I'll try to make $abi folder in '$DLIB_PATH'/build/'$abi' " echo "*************" echo mkdir "build/$abi" echo echo "*************" echo "I'll try to move to the folder where I'll compile " # to '$DLIB_PATH'/build/$abi " echo "*************" echo #cd "/home/user/Downloads/dlib-19.21/dlib" cd "build/$abi" echo echo "*************" echo "current dir is: $PWD" echo "Setting Cmake for ABI: '$abi'... " echo "*************" echo $AndroidCmake -DBUILD_SHARED_LIBS=1 \ -DANDROID_NDK=$NDK \ -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CXX_FLAGS="-std=c++11 -frtti -fexceptions" \ -DCMAKE_C_FLAGS=-O3 \ -DANDROID_ABI=$abi \ -DANDROID_PLATFORM="android-$MIN_SDK" \ -DANDROID_TOOLCHAIN=clang \ -DANDROID_STL=c++_shared \ -DANDROID_CPP_FEATURES=rtti exceptions \ -DCMAKE_FIND_DEBUG_MODE=ON \ -DCMAKE_PREFIX_PATH=../../ \ ../../ #-DCMAKE_S="/home/user/Down loads/dlib-19.21/dlib" echo echo "*************" echo "current dir is $PWD " echo "Generating the 'dlib/libdlib.so' for ABI: '$abi' " echo "*************" echo $AndroidCmake --build . echo echo "*************" echo "Stripping libdlib.so for '$abi' to reduce lib size using ${STRIP_TOOLS[$abi]}" echo "*************" echo ${STRIP_TOOLS[$abi]} --strip-unneeded dlib/libdlib.so echo echo "*************" echo "Compilation Dlib for ABI: '$abi' is Over. " echo "*************" echo cd ../../ done } #to copy .so libs into Android Project function dlib_setup { echo echo "*************" echo "Making directories for Dlib " echo "*************" echo mkdir "$NATIVE_DIR/dlib" echo "=> '$NATIVE_DIR/dlib' created." mkdir "$NATIVE_DIR/dlib/lib" echo "=> '$NATIVE_DIR/dlib/lib' created." mkdir "$NATIVE_DIR/dlib/include" echo "=> '$NATIVE_DIR/dlib/include' created." mkdir "$NATIVE_DIR/dlib/include/dlib" echo "=> '$NATIVE_DIR/dlib/include/dlib' created." echo "=> Copying Dlib headers..." cp -v -r "$DLIB_PATH/dlib" "$NATIVE_DIR/dlib/include/dlib" echo "=> Copying 'libdlib.so' for each ABI..." for abi in "${ABI[@]}" do mkdir "$NATIVE_DIR/dlib/lib/$abi" cp -v "$DLIB_PATH/build/$abi/dlib/libdlib.so" "$NATIVE_DIR/dlib/lib/$abi" echo " > Copied libdlib.so for $abi" done } # COMMENT TO DISABLE COMPILATION compile_dlib # ----------------------------------------------------------------------------- # -- OpenCV # ----------------------------------------------------------------------------- # OpenCV library path: REPLACE WITH YOUR OPENCV PATH! OPENCV_PATH='/home/user/Downloads/opencv454/sdk/native' #to copy openCV .so lib to Androdi Project function opencv_setup { mkdir "$NATIVE_DIR/opencv" echo echo "*************" echo "Copying 'libopencv_java4.so' for each ABI to Android Project" echo "*************" echo for abi in "${ABI[@]}" do mkdir "$NATIVE_DIR/opencv/$abi" cp -v "$OPENCV_PATH/libs/$abi/libopencv_java4.so" "$NATIVE_DIR/opencv/$abi" echos " > Copied libopencv_java4.so for $abi" done } # ----------------------------------------------------------------------------- # -- Project setup # ----------------------------------------------------------------------------- # mkdir $NATIVE_DIR att # COMMENT TO NOT COPY DLIB '.so' FILES #dlib_setup # COMMENT TO NOT COPY OPENCV '.so' FILES #opencv_setup echo echo "=> Project configuration completed." echo read -p "Press enter to continue" echo