diff --git a/AudioFilter/build.sh b/AudioFilter/build.sh
index 1e013b2239c3a0b3916f05565981ce607a398c57..7e70a0ffff24579d7fec222fdd8671e314ffc535 100755
--- a/AudioFilter/build.sh
+++ b/AudioFilter/build.sh
@@ -13,7 +13,7 @@ EXTRAPATH=''
 
 
 if [ -z "${DAEMON}" ]; then
-    DAEMON="./../daemon"
+    DAEMON=${DAEMON:="./../daemon"}
     echo "DAEMON not provided, building with ${DAEMON}"
 fi
 
@@ -59,7 +59,7 @@ while getopts t:c:p:d OPT; do
   esac
 done
 
-cp -r ffmpeg ${CONTRIB_PATH}/src/
+#cp -r ffmpeg ${CONTRIB_PATH}/src/
 cp -r ../contrib/mp3lame ${CONTRIB_PATH}/src/
 
 if [ "${PLATFORM}" = "linux-gnu" ] || [ "${PLATFORM}" = "redhat-linux" ]
@@ -195,7 +195,7 @@ then
     python3 ./../SDK/jplManipulation.py --preassemble --plugin=${PLUGIN_NAME} --distribution=${PLATFORM}
 
     if [ -z "$ANDROID_NDK" ]; then
-            ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/21.1.6352462"
+            ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/26.1.10909125"
         echo "ANDROID_NDK not provided, building with ${ANDROID_NDK}"
     fi
 
@@ -225,18 +225,18 @@ then
 
         if [ "$CURRENT_ABI" = armeabi-v7a ]
         then
-        export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang
-        export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++
+        export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang
+        export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang++
 
         elif [ "$CURRENT_ABI" = arm64-v8a ]
         then
-        export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
-        export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
+        export CC=$TOOLCHAIN/bin/aarch64-linux-android24-clang
+        export CXX=$TOOLCHAIN/bin/aarch64-linux-android24-clang++
 
         elif [ "$CURRENT_ABI" = x86_64 ]
         then
-        export CC=$TOOLCHAIN/bin/x86_64-linux-android21-clang
-        export CXX=$TOOLCHAIN/bin/x86_64-linux-android21-clang++
+        export CC=$TOOLCHAIN/bin/x86_64-linux-android24-clang
+        export CXX=$TOOLCHAIN/bin/x86_64-linux-android24-clang++
 
         else
         echo "ABI NOT OK" >&2
@@ -262,13 +262,14 @@ then
         #NDK SOURCES FOR cpufeatures
         NDK_SOURCES=${ANDROID_NDK}/sources/android
 
-        if [ -f "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/.ffmpeg" ]; then
-            rm "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/.ffmpeg"
-        fi
+        #if [ -f "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/.ffmpeg" ]; then
+        #    rm "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/.ffmpeg"
+        #fi
         WORKPATH=$(pwd)
-        cd "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/"
-        make .ffmpeg -j$(nproc)
-        rm .ffmpeg
+        #cd "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/"
+        #make .opus -j$(nproc)
+        #make .ffmpeg -j$(nproc)
+        #rm .ffmpeg
         cd ${WORKPATH}
 
         #=========================================================
diff --git a/AutoAnswer/build.sh b/AutoAnswer/build.sh
index d7acf546f950f550f0675587f0254b577712c7fa..ab5552be7d545d92ae1c6ce1bc6ca1ca87d102fa 100755
--- a/AutoAnswer/build.sh
+++ b/AutoAnswer/build.sh
@@ -12,7 +12,7 @@ EXTRAPATH=''
 # -d: debug program.
 
 if [ -z "${DAEMON}" ]; then
-    DAEMON="./../daemon"
+    DAEMON=${DAEMON:="./../daemon"}
     echo "DAEMON not provided, building with ${DAEMON}"
 fi
 
@@ -115,7 +115,7 @@ then
     python3 ./../SDK/jplManipulation.py --preassemble --plugin=${PLUGIN_NAME} --distribution=${PLATFORM}
 
     if [ -z "$ANDROID_NDK" ]; then
-            ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/21.1.6352462"
+            ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/26.1.10909125"
         echo "ANDROID_NDK not provided, building with ${ANDROID_NDK}"
     fi
 
@@ -145,18 +145,18 @@ then
 
         if [ "$CURRENT_ABI" = armeabi-v7a ]
         then
-        export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang
-        export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++
+        export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang
+        export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang++
 
         elif [ "$CURRENT_ABI" = arm64-v8a ]
         then
-        export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
-        export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
+        export CC=$TOOLCHAIN/bin/aarch64-linux-android24-clang
+        export CXX=$TOOLCHAIN/bin/aarch64-linux-android24-clang++
 
         elif [ "$CURRENT_ABI" = x86_64 ]
         then
-        export CC=$TOOLCHAIN/bin/x86_64-linux-android21-clang
-        export CXX=$TOOLCHAIN/bin/x86_64-linux-android21-clang++
+        export CC=$TOOLCHAIN/bin/x86_64-linux-android24-clang
+        export CXX=$TOOLCHAIN/bin/x86_64-linux-android24-clang++
 
         else
         echo "ABI NOT OK" >&2
diff --git a/GreenScreen/build.sh b/GreenScreen/build.sh
index 1b3422d618635f1c4bd0d6366c0a8e26a316bde0..1273e44e777de67f2792d296b7f5bd8101604640 100755
--- a/GreenScreen/build.sh
+++ b/GreenScreen/build.sh
@@ -1,6 +1,7 @@
 #! /bin/bash
 # Build the plugin for the project
 set -e
+set -x
 export OSTYPE
 ARCH=$(uname -m)
 EXTRAPATH=''
@@ -12,7 +13,7 @@ EXTRAPATH=''
 # -d: debug program.
 
 if [ -z "${DAEMON}" ]; then
-    DAEMON="./../daemon"
+    DAEMON=${DAEMON:="./../daemon"}
     echo "DAEMON not provided, building with ${DAEMON}"
 fi
 if [ -z "${PROCESSOR}" ]; then
@@ -73,7 +74,7 @@ while getopts t:c:p:d OPT; do
   esac
 done
 
-cp -r ffmpeg ${CONTRIB_PATH}/src/
+#cp -r ffmpeg ${CONTRIB_PATH}/src/
 cp -r ../contrib/rav1e ${CONTRIB_PATH}/src/
 
 if [ "${PLATFORM}" = "linux-gnu" ] || [ "${PLATFORM}" = "redhat-linux" ]
@@ -272,7 +273,7 @@ then
     python3 ./../SDK/jplManipulation.py --preassemble --plugin=${PLUGIN_NAME} --distribution=${PLATFORM}
 
     if [ -z "$ANDROID_NDK" ]; then
-        ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/21.1.6352462"
+        ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/26.1.10909125"
         echo "ANDROID_NDK not provided, building with ${ANDROID_NDK}"
     fi
 
@@ -302,18 +303,18 @@ then
 
         if [ "$CURRENT_ABI" = armeabi-v7a ]
         then
-        export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang
-        export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++
+        export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang
+        export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang++
 
         elif [ "$CURRENT_ABI" = arm64-v8a ]
         then
-        export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
-        export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
+        export CC=$TOOLCHAIN/bin/aarch64-linux-android24-clang
+        export CXX=$TOOLCHAIN/bin/aarch64-linux-android24-clang++
 
         elif [ "$CURRENT_ABI" = x86_64 ]
         then
-        export CC=$TOOLCHAIN/bin/x86_64-linux-android21-clang
-        export CXX=$TOOLCHAIN/bin/x86_64-linux-android21-clang++
+        export CC=$TOOLCHAIN/bin/x86_64-linux-android24-clang
+        export CXX=$TOOLCHAIN/bin/x86_64-linux-android24-clang++
 
         else
         echo "ABI NOT OK" >&2
@@ -339,14 +340,15 @@ then
         #NDK SOURCES FOR cpufeatures
         NDK_SOURCES=${ANDROID_NDK}/sources/android
 
-        if [ -f "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/.ffmpeg" ]; then
-            rm "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/.ffmpeg"
-        fi
+        #if [ -f "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/.ffmpeg" ]; then
+        #    rm "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/.ffmpeg"
+        #fi
 
         WORKPATH=$(pwd)
-        cd "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/"
-        make .ffmpeg -j$(nproc)
-        rm .ffmpeg
+        #cd "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/"
+        #make .opus -j$(nproc)
+        #make .ffmpeg -j$(nproc)
+        #rm .ffmpeg
         cd ${WORKPATH}
 
         #=========================================================
@@ -364,6 +366,9 @@ then
           ONNX_PATH="${CONTRIB_PATH}/${CONTRIB_PLATFORM}"
         fi
 
+        # DIRTY HACK TO GET WORKING ONNX
+        cp ${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/onnx/build/Linux/Release/*.so ${CONTRIB_PATH}/${CONTRIB_PLATFORM}/lib/ || true
+
         # Create so destination folder
         $CXX --std=c++17 -O3 -fPIC \
         -Wl,-Bsymbolic,-rpath,"\${ORIGIN}" \
diff --git a/HelloWorld/build.sh b/HelloWorld/build.sh
index 5f630eea17d5541e4534d8c50f4859ad562f5102..a06b18a4436f41b173b52a1da6c94dc2506f5e52 100755
--- a/HelloWorld/build.sh
+++ b/HelloWorld/build.sh
@@ -12,7 +12,7 @@ EXTRAPATH=''
 
 
 if [ -z "${DAEMON}" ]; then
-    DAEMON="./../daemon"
+    DAEMON=${DAEMON:="./../daemon"}
     echo "DAEMON not provided, building with ${DAEMON}"
 fi
 
@@ -142,7 +142,7 @@ then
     python3 ./../SDK/jplManipulation.py --preassemble --plugin=${PLUGIN_NAME} --distribution=${PLATFORM}
 
     if [ -z "$ANDROID_NDK" ]; then
-            ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/21.1.6352462"
+            ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/26.1.10909125"
         echo "ANDROID_NDK not provided, building with ${ANDROID_NDK}"
     fi
 
@@ -172,18 +172,18 @@ then
 
         if [ "$CURRENT_ABI" = armeabi-v7a ]
         then
-        export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang
-        export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++
+        export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang
+        export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang++
 
         elif [ "$CURRENT_ABI" = arm64-v8a ]
         then
-        export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
-        export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
+        export CC=$TOOLCHAIN/bin/aarch64-linux-android24-clang
+        export CXX=$TOOLCHAIN/bin/aarch64-linux-android24-clang++
 
         elif [ "$CURRENT_ABI" = x86_64 ]
         then
-        export CC=$TOOLCHAIN/bin/x86_64-linux-android21-clang
-        export CXX=$TOOLCHAIN/bin/x86_64-linux-android21-clang++
+        export CC=$TOOLCHAIN/bin/x86_64-linux-android24-clang
+        export CXX=$TOOLCHAIN/bin/x86_64-linux-android24-clang++
 
         else
         echo "ABI NOT OK" >&2
diff --git a/README_ASSEMBLE.md b/README_ASSEMBLE.md
index 39ca51830d704af3cb002f8378944cc4073990b2..5eddb3103ec1e7ae175a5d2200c1d86af1fa47ab 100644
--- a/README_ASSEMBLE.md
+++ b/README_ASSEMBLE.md
@@ -11,7 +11,7 @@ For Android:
 
         export ANDROID_NDK=<NDK>
         export ANDROID_ABI=arm64-v8a
-        export ANDROID_API=29
+        export ANDROID_API=24
         export TOOLCHAIN=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64
         export TARGET=aarch64-linux-android
         export CC=$TOOLCHAIN/bin/$TARGET$ANDROID_API-clang
@@ -72,9 +72,9 @@ For Linux:
     or
     For Tensorflow C++ API:
     $ bazel build --config=v1 --define framework_shared_object=false //tensorflow:libtensorflow_cc.so
-    
-    OBS.: If you want to build Tensorflow C++ API with GPU suport, be sure to have a CUDA capable GPU and that you have 
-    followed all installation steps for the Nvidia drivers, CUDA Toolkit, CUDNN, Tensor RT, that their versions 
+
+    OBS.: If you want to build Tensorflow C++ API with GPU suport, be sure to have a CUDA capable GPU and that you have
+    followed all installation steps for the Nvidia drivers, CUDA Toolkit, CUDNN, Tensor RT, that their versions
     matches and that they are correct for the Tensorflow version you want to build. The following links may be very helpfull:
         - https://www.tensorflow.org/install/source
         - https://developer.nvidia.com/cuda-gpus
@@ -196,7 +196,7 @@ TENSORFLOW C++ API INCLUDES ASSEMBLE INSTRUCTIONS
                     third_party/
                         eigen3/
                             Eigen/
-                                -> keep folder structure and copy all files from 
+                                -> keep folder structure and copy all files from
                                 "<tensorflow>/bazel-tensorflow/external/eigen_archive/Eigen/"
                             unsupported/
                                 Eigen/
diff --git a/SDK/Templates/build.sh b/SDK/Templates/build.sh
index 7dfadbffdaa725e56ce85e2e6330f3ddde6e2b14..99c62530f621bc1342933a1ca7b53d3e3a13471c 100644
--- a/SDK/Templates/build.sh
+++ b/SDK/Templates/build.sh
@@ -12,7 +12,7 @@ EXTRAPATH=''
 
 
 if [ -z "${DAEMON}" ]; then
-    DAEMON="./../daemon"
+    DAEMON=${DAEMON:="./../daemon"}
     echo "DAEMON not provided, building with ${DAEMON}"
 fi
 
@@ -84,7 +84,7 @@ then
     python3 ./../SDK/jplManipulation.py --preassemble --plugin=${PLUGIN_NAME} --distribution=${PLATFORM}
 
     if [ -z "$ANDROID_NDK" ]; then
-            ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/21.1.6352462"
+            ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/26.1.10909125"
         echo "ANDROID_NDK not provided, building with ${ANDROID_NDK}"
     fi
 
@@ -114,18 +114,18 @@ then
 
         if [ "$CURRENT_ABI" = armeabi-v7a ]
         then
-        export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang
-        export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++
+        export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang
+        export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang++
 
         elif [ "$CURRENT_ABI" = arm64-v8a ]
         then
-        export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
-        export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
+        export CC=$TOOLCHAIN/bin/aarch64-linux-android24-clang
+        export CXX=$TOOLCHAIN/bin/aarch64-linux-android24-clang++
 
         elif [ "$CURRENT_ABI" = x86_64 ]
         then
-        export CC=$TOOLCHAIN/bin/x86_64-linux-android21-clang
-        export CXX=$TOOLCHAIN/bin/x86_64-linux-android21-clang++
+        export CC=$TOOLCHAIN/bin/x86_64-linux-android24-clang
+        export CXX=$TOOLCHAIN/bin/x86_64-linux-android24-clang++
 
         else
         echo "ABI NOT OK" >&2
diff --git a/TensorflowSegmentation/build.sh b/TensorflowSegmentation/build.sh
index c27817f6fda6bace8c0cd35b7b365a5a66f9a33e..8e5d8f203f83a0a2989fdef648f28cafe4b08d9a 100755
--- a/TensorflowSegmentation/build.sh
+++ b/TensorflowSegmentation/build.sh
@@ -12,7 +12,7 @@ EXTRAPATH=''
 
 
 if [ -z "${DAEMON}" ]; then
-    DAEMON="./../daemon"
+    DAEMON=${DAEMON:="./../daemon"}
     echo "DAEMON not provided, building with ${DAEMON}"
 fi
 
@@ -186,7 +186,7 @@ then
         python3 ./../SDK/jplManipulation.py --preassemble --plugin=${PLUGIN_NAME} --distribution=${PLATFORM}
 
         if [ -z "$ANDROID_NDK" ]; then
-             ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/21.1.6352462"
+             ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/26.1.10909125"
             echo "ANDROID_NDK not provided, building with ${ANDROID_NDK}"
         fi
 
@@ -216,18 +216,18 @@ then
 
             if [ "$CURRENT_ABI" = armeabi-v7a ]
             then
-            export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang
-            export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++
+            export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang
+            export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang++
 
             elif [ "$CURRENT_ABI" = arm64-v8a ]
             then
-            export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
-            export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
+            export CC=$TOOLCHAIN/bin/aarch64-linux-android24-clang
+            export CXX=$TOOLCHAIN/bin/aarch64-linux-android24-clang++
 
             elif [ "$CURRENT_ABI" = x86_64 ]
             then
-            export CC=$TOOLCHAIN/bin/x86_64-linux-android21-clang
-            export CXX=$TOOLCHAIN/bin/x86_64-linux-android21-clang++
+            export CC=$TOOLCHAIN/bin/x86_64-linux-android24-clang
+            export CXX=$TOOLCHAIN/bin/x86_64-linux-android24-clang++
 
             else
             echo "ABI NOT OK" >&2
diff --git a/TestSuite/build.sh b/TestSuite/build.sh
index 8f27b907a722bb188c0bf54ad026f1467f69881b..1ca8707db68bc074fc51f96570fa355f4529f8c2 100755
--- a/TestSuite/build.sh
+++ b/TestSuite/build.sh
@@ -12,7 +12,7 @@ EXTRAPATH=''
 
 
 if [ -z "${DAEMON}" ]; then
-    DAEMON="./../daemon"
+    DAEMON=${DAEMON:="./../daemon"}
     echo "DAEMON not provided, building with ${DAEMON}"
 fi
 
@@ -135,7 +135,7 @@ then
     python3 ./../SDK/jplManipulation.py --preassemble --plugin=${PLUGIN_NAME} --distribution=${PLATFORM}
 
     if [ -z "$ANDROID_NDK" ]; then
-            ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/21.1.6352462"
+            ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/26.1.10909125"
         echo "ANDROID_NDK not provided, building with ${ANDROID_NDK}"
     fi
 
@@ -165,18 +165,18 @@ then
 
         if [ "$CURRENT_ABI" = armeabi-v7a ]
         then
-        export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang
-        export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++
+        export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang
+        export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang++
 
         elif [ "$CURRENT_ABI" = arm64-v8a ]
         then
-        export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
-        export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
+        export CC=$TOOLCHAIN/bin/aarch64-linux-android24-clang
+        export CXX=$TOOLCHAIN/bin/aarch64-linux-android24-clang++
 
         elif [ "$CURRENT_ABI" = x86_64 ]
         then
-        export CC=$TOOLCHAIN/bin/x86_64-linux-android21-clang
-        export CXX=$TOOLCHAIN/bin/x86_64-linux-android21-clang++
+        export CC=$TOOLCHAIN/bin/x86_64-linux-android24-clang
+        export CXX=$TOOLCHAIN/bin/x86_64-linux-android24-clang++
 
         else
         echo "ABI NOT OK" >&2
diff --git a/WaterMark/build.sh b/WaterMark/build.sh
index 4c2f37d9afd60689155b2b0e0c232c969c809a60..1c7c2d0f295c9e34cde8a0ce8acd229b5014e6dc 100755
--- a/WaterMark/build.sh
+++ b/WaterMark/build.sh
@@ -13,7 +13,7 @@ EXTRAPATH=''
 
 
 if [ -z "${DAEMON}" ]; then
-    DAEMON="./../daemon"
+    DAEMON=${DAEMON:="./../daemon"}
     echo "DAEMON not provided, building with ${DAEMON}"
 fi
 
@@ -59,7 +59,7 @@ while getopts t:c:p:d OPT; do
   esac
 done
 
-cp -r ffmpeg ${CONTRIB_PATH}/src/
+#cp -r ffmpeg ${CONTRIB_PATH}/src/
 cp -r ../contrib/rav1e ${CONTRIB_PATH}/src/
 
 if [ "${PLATFORM}" = "linux-gnu" ] || [ "${PLATFORM}" = "redhat-linux" ]
@@ -200,7 +200,7 @@ then
     python3 ./../SDK/jplManipulation.py --preassemble --plugin=${PLUGIN_NAME} --distribution=${PLATFORM}
 
     if [ -z "$ANDROID_NDK" ]; then
-            ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/21.1.6352462"
+            ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/26.1.10909125"
         echo "ANDROID_NDK not provided, building with ${ANDROID_NDK}"
     fi
 
@@ -230,18 +230,18 @@ then
 
         if [ "$CURRENT_ABI" = armeabi-v7a ]
         then
-        export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang
-        export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++
+        export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang
+        export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang++
 
         elif [ "$CURRENT_ABI" = arm64-v8a ]
         then
-        export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
-        export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
+        export CC=$TOOLCHAIN/bin/aarch64-linux-android24-clang
+        export CXX=$TOOLCHAIN/bin/aarch64-linux-android24-clang++
 
         elif [ "$CURRENT_ABI" = x86_64 ]
         then
-        export CC=$TOOLCHAIN/bin/x86_64-linux-android21-clang
-        export CXX=$TOOLCHAIN/bin/x86_64-linux-android21-clang++
+        export CC=$TOOLCHAIN/bin/x86_64-linux-android24-clang
+        export CXX=$TOOLCHAIN/bin/x86_64-linux-android24-clang++
 
         else
         echo "ABI NOT OK" >&2
@@ -264,14 +264,15 @@ then
         CONTRIB_PLATFORM=x86_64-linux-android
         fi
 
-        if [ -f "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/.ffmpeg" ]; then
-            rm "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/.ffmpeg"
-        fi
+        #if [ -f "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/.ffmpeg" ]; then
+        #    rm "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/.ffmpeg"
+        #fi
 
         WORKPATH=$(pwd)
-        cd "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/"
-        make .ffmpeg -j$(nproc)
-        rm .ffmpeg
+        #cd "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/"
+        #make .opus -j$(nproc)
+        #make .ffmpeg -j$(nproc)
+        #rm .ffmpeg
         cd ${WORKPATH}
 
         #=========================================================
diff --git a/WhisperTranscript/build.sh b/WhisperTranscript/build.sh
index 6207e9e3443920a9bee10fd77cbb7b2a3ad4712c..365a82c9d82488b06f80379eb5f5c54ac0178019 100755
--- a/WhisperTranscript/build.sh
+++ b/WhisperTranscript/build.sh
@@ -12,10 +12,10 @@ EXTRAPATH=''
 # -d: debug program.
 
 if [ -z "${DAEMON}" ]; then
+    DAEMON=${DAEMON:="./../daemon"}
     echo "DAEMON not provided, building with ./../daemon"
 fi
 
-DAEMON=${DAEMON:="./../daemon"}
 CONTRIB_PATH=${CONTRIB_PATH:="${DAEMON}/contrib"}
 CONTRIB_BUILD_DIR=${CONTRIB_BUILD_DIR:="native"}
 
@@ -76,7 +76,7 @@ fi
 
 echo $PROCESSOR
 
-cp -r ffmpeg ${CONTRIB_PATH}/src/
+#cp -r ffmpeg ${CONTRIB_PATH}/src/
 cp -r whispercpp ${CONTRIB_PATH}/src/
 cp -r ../contrib/rav1e ${CONTRIB_PATH}/src/
 
@@ -256,7 +256,7 @@ then
     python3 ./../SDK/jplManipulation.py --preassemble --plugin=${PLUGIN_NAME} --distribution=${PLATFORM}
 
     if [ -z "$ANDROID_NDK" ]; then
-            ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/21.1.6352462"
+            ANDROID_NDK="/home/${USER}/Android/Sdk/ndk/26.1.10909125"
         echo "ANDROID_NDK not provided, building with ${ANDROID_NDK}"
     fi
 
@@ -286,18 +286,18 @@ then
 
         if [ "$CURRENT_ABI" = armeabi-v7a ]
         then
-        export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang
-        export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++
+        export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang
+        export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi24-clang++
 
         elif [ "$CURRENT_ABI" = arm64-v8a ]
         then
-        export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
-        export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
+        export CC=$TOOLCHAIN/bin/aarch64-linux-android24-clang
+        export CXX=$TOOLCHAIN/bin/aarch64-linux-android24-clang++
 
         elif [ "$CURRENT_ABI" = x86_64 ]
         then
-        export CC=$TOOLCHAIN/bin/x86_64-linux-android21-clang
-        export CXX=$TOOLCHAIN/bin/x86_64-linux-android21-clang++
+        export CC=$TOOLCHAIN/bin/x86_64-linux-android24-clang
+        export CXX=$TOOLCHAIN/bin/x86_64-linux-android24-clang++
 
         else
         echo "ABI NOT OK" >&2
@@ -320,16 +320,17 @@ then
         CONTRIB_PLATFORM=x86_64-linux-android
         fi
 
-        if [ -f "${CONTRIB_BUILD_PATH}-${CONTRIB_PLATFORM}/.ffmpeg" ]; then
-            rm "${CONTRIB_BUILD_PATH}-${CONTRIB_PLATFORM}/.ffmpeg"
-        fi
+        #if [ -f "${CONTRIB_BUILD_PATH}-${CONTRIB_PLATFORM}/.ffmpeg" ]; then
+        #    rm "${CONTRIB_BUILD_PATH}-${CONTRIB_PLATFORM}/.ffmpeg"
+        #fi
 
         WORKPATH=$(pwd)
         cd "${CONTRIB_BUILD_PATH}-${CONTRIB_PLATFORM}/"
-        make .ffmpeg -j$(nproc)
+        #make .opus -j$(nproc)
+        #make .ffmpeg -j$(nproc)
         make .whispercpp -j$(nproc)
         rm .whispercpp
-        rm .ffmpeg
+        #rm .ffmpeg
         cd ${WORKPATH}
 
         #=========================================================
diff --git a/contrib/build-dependencies.sh b/contrib/build-dependencies.sh
index 1009ae5612cf79e232ed3b3e6f0dd50cc1d13922..ca95ecb4da36bb8f446120355473980bceac335b 100755
--- a/contrib/build-dependencies.sh
+++ b/contrib/build-dependencies.sh
@@ -42,7 +42,7 @@ fi
 
 TARGET_CC=${TARGET_CC:-$TARGET}
 
-export API=21
+export API=24 # This value is from minSDK in jami-client-android
 export ANDROID_API=android-$API
 export ANDROID_TOOLCHAIN="${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64"
 export TARGET
@@ -81,7 +81,7 @@ fi
 cd $DAEMON_DIR/extras/tools
 export PATH=`pwd`/build/bin:$PATH
 echo "Building tools"
-./bootstrap
+./bootstrap # --cache-dir=/var/cache/jami --cache-builds
 make $MAKEFLAGS
 make .pkg-config
 make .gas
@@ -98,7 +98,7 @@ export STRIP=$NDK_TOOLCHAIN_PATH/llvm-strip
 FLAGS_COMMON="-fPIC"
 EXTRA_CFLAGS="${EXTRA_CFLAGS} ${FLAGS_COMMON}"
 EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS} ${FLAGS_COMMON}"
-EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -llog"
+EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -llog ${FLAGS_COMMON}"
 
 ############
 # Contribs #
@@ -114,7 +114,7 @@ cp -r ${CURRENTDIR}/freetype ${DAEMON_DIR}/contrib/src
 
 cd ${CONTRIB_DIR}
 
-../bootstrap --host=${TARGET} --enable-freetype --enable-x264 --enable-ffmpeg \
+../bootstrap --host=${TARGET} --enable-freetype --disable-x264 --enable-ffmpeg \
              --disable-webrtc-audio-processing --disable-argon2 \
              --disable-asio --enable-fmt --disable-gcrypt --disable-gmp \
              --disable-gnutls --disable-gpg-error --disable-gsm \
@@ -122,8 +122,8 @@ cd ${CONTRIB_DIR}
              --disable-libarchive --disable-libressl --enable-msgpack \
              --disable-natpmp --disable-nettle --enable-opencv --enable-opendht \
              --disable-pjproject --disable-portaudio --disable-restinio \
-             --disable-secp256k1 --disable-speexdsp --disable-upnp \
-             --disable-uuid --disable-yaml-cpp
+             --disable-secp256k1 --disable-speex --disable-speexdsp --disable-upnp \
+             --disable-uuid --disable-yaml-cpp --enable-onnx --disable-dhtnet --enable-opus #  \ --cache-dir=/var/cache/jami --cache-builds
 
 make list
 make fetch
diff --git a/contrib/install-cmake.sh b/contrib/install-cmake.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ea07269a0ef37a0bdcbb4960143b3c04087077c9
--- /dev/null
+++ b/contrib/install-cmake.sh
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+
+set -e
+
+if command -v apt-get &> /dev/null
+then
+    apt-get remove cmake cmake-data -y
+fi
+
+wget https://github.com/Kitware/CMake/releases/download/v3.27.8/cmake-3.27.8-Linux-x86_64.sh \
+      -q -O /tmp/cmake-install.sh
+echo "c43e9237360f8cb227c721bb7cd497f80cff692a7dc0ab10d258f4c22d6aec04  /tmp/cmake-install.sh" | sha256sum --check
+chmod u+x /tmp/cmake-install.sh
+/tmp/cmake-install.sh --skip-license --prefix=/usr/local/
+rm /tmp/cmake-install.sh
\ No newline at end of file
diff --git a/daemon b/daemon
index 6c433a087a0d24cb95aae3bdcaeee5e367e46a5d..4392c72206b3a7c5f294fc187b2f6904e660890e 160000
--- a/daemon
+++ b/daemon
@@ -1 +1 @@
-Subproject commit 6c433a087a0d24cb95aae3bdcaeee5e367e46a5d
+Subproject commit 4392c72206b3a7c5f294fc187b2f6904e660890e
diff --git a/docker/Dockerfile_android_onnxruntime b/docker/Dockerfile_android_onnxruntime
index 99d0a56c84b301c86e13c6d78e1b89d7739c1cb1..91f2abcb9263ebc55af07984853bb013ed52daee 100644
--- a/docker/Dockerfile_android_onnxruntime
+++ b/docker/Dockerfile_android_onnxruntime
@@ -1,14 +1,12 @@
-FROM sflagsantos/onnxruntime1.12.0-android
+FROM gradle:jdk17
 
 ENV DEBIAN_FRONTEND noninteractive
-ENV EXTRALIBS_PATH=/home/gradle/Libs/onnxruntime/
 ENV SSH_AUTH_SOCK /home/gradle/.sockets/ssh
 
 ENV LANG en_US.utf8
 ENV LC_ALL en_US.utf8
 
 RUN apt-get update && apt-get install -y --no-install-recommends \
-        clang \
 	asciidoc \
 	autogen \
 	automake \
@@ -16,7 +14,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
 	autopoint \
 	gettext \
 	ca-certificates \
+	clang \
 	cmake \
+	default-jre \
 	bc \
 	bison \
 	build-essential \
@@ -39,38 +39,51 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
 	yasm \
 	nasm \
 	zip \
+	libpcre2-dev \
 	libpcre3 \
 	libpcre3-dev \
+	libavcodec-dev \
+	libavutil-dev \
+	libavformat-dev \
+	libswscale-dev \
+	libavdevice-dev \
+	libopus-dev \
 	ruby ruby-dev \
-        python3-distutils \
+	python3-distutils \
 	&& locale-gen $LANG $LC_ALL && update-locale $LANG $LC_ALL
 
 # Android SDK tools
 RUN echo "prefer-family = IPv6" >> /etc/wgetrc
 ENV ANDROID_HOME=/opt/android-sdk
 ENV ANDROID_SDK_ROOT=${ANDROID_HOME}
-RUN wget -O /tmp/android-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip && \
+RUN wget -O /tmp/android-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip && \
 	mkdir -p ${ANDROID_HOME} && \
 	unzip -q -d ${ANDROID_HOME} /tmp/android-tools.zip && \
 	rm -f /tmp/android-tools.zip && \
 	chown -R root:root ${ANDROID_HOME}
 ENV PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/bin
 
-# Swig 4.0.2
-RUN wget -O /tmp/swig.tar.gz https://github.com/swig/swig/archive/rel-4.0.2.tar.gz && \
+# CMake 3.26
+ADD contrib/install-cmake.sh /opt/install-cmake.sh
+RUN /opt/install-cmake.sh
+
+# Swig 4.1.1
+RUN wget -O /tmp/swig.tar.gz https://github.com/swig/swig/archive/v4.1.1.tar.gz && \
 	tar xzf  /tmp/swig.tar.gz -C /opt && \
-	cd /opt/swig-rel-4.0.2/ && ./autogen.sh && ./configure && make && make install && \
-	cd .. && rm -rf /opt/swig-rel-4.0.2 /tmp/swig.tar.gz
+	cd /opt/swig-4.1.1/ && ./autogen.sh && ./configure && make && make install && \
+	cd .. && rm -rf /opt/swig-4.1.1 /tmp/swig.tar.gz
 
 # Android SDK libraries, NDK
 RUN sdkmanager --sdk_root=${ANDROID_HOME} --update
-RUN (while sleep 1; do echo "y"; done) | sdkmanager --channel=1 --sdk_root=${ANDROID_HOME} 'build-tools;32.0.0' \
-	'platforms;android-32'\
+RUN (while sleep 1; do echo "y"; done) | sdkmanager --channel=1 --sdk_root=${ANDROID_HOME} 'build-tools;34.0.0' \
+	'platforms;android-34'\
 	'extras;android;m2repository'\
 	'extras;google;m2repository'\
-	'ndk;25.0.8775105'
+	'ndk;26.1.10909125'
 ENV ANDROID_SDK=${ANDROID_HOME}
-ENV ANDROID_NDK=${ANDROID_HOME}/ndk/25.0.8775105
+ENV ANDROID_NDK=${ANDROID_HOME}/ndk/26.1.10909125
+
+RUN chmod a+rX /home/gradle
 
 # Fastlane
 RUN gem install fastlane -NV
diff --git a/extras/ci/android/Jenkinsfile b/extras/ci/android/Jenkinsfile
index d6f4d7acfb153ce0810c6fc94088961da6ad7e88..c8cced69ac2d445b9547c91c5fcd214d9bec1f7f 100644
--- a/extras/ci/android/Jenkinsfile
+++ b/extras/ci/android/Jenkinsfile
@@ -24,7 +24,7 @@
 pipeline {
     agent {
         node {
-            label 'jami-buildmachine-04.mtl.sfl'
+            label 'jami-buildmachine-02.mtl.sfl'
         }
     }
 
@@ -103,7 +103,7 @@ pipeline {
         stage('Building Docker Image') {
             steps {
                 script {
-                    docker.build('plugins-android', "-f docker/${dockerfile} --no-cache .")
+                    docker.build('plugins-android', "-f docker/${dockerfile} .")
                 }
             }
         }
@@ -111,16 +111,20 @@ pipeline {
         stage('Setup and Build Dependencies') {
             steps {
                 script {
-                    docker.image('plugins-android').withRun('-t -u '+jenkinsUser+' -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') {
+                    docker.image('plugins-android').withRun('-t -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') {
                         container -> code:{
-                            def base_cmd = 'docker exec -t '+container.id+" sh -c '"
-                            def exec_cmd = { cmd -> sh base_cmd+cmd+"'" }
+                            def base_cmd = 'docker exec -u '+jenkinsUser+' '+container.id+" sh -c '"
+                            def base_root_cmd = 'docker exec '+container.id+" sh -c '"
+                            def exec_cmd = { cmd -> sh script:base_cmd+cmd+"'" }
+                            def exec_root_cmd = { cmd -> sh script:base_root_cmd+cmd+"'" }
 
                             ansiColor('css') {
                                 exec_cmd("""
                                     cd ./jami/contrib
                                     python3 -m pip install -r ../SDK/requirements.txt
+                                    ANDROID_ABI="armeabi-v7a" sh build-dependencies.sh
                                     ANDROID_ABI="arm64-v8a" sh build-dependencies.sh
+                                    ANDROID_ABI="x86_64" sh build-dependencies.sh
                                 """)
                             }
                         }
@@ -133,23 +137,35 @@ pipeline {
             steps {
                 script {
                     if(env.GERRIT_TOPIC == "all" || env.GERRIT_TOPIC == "GreenScreen") {
-                        docker.image('plugins-android').withRun('-t -u '+jenkinsUser+' -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') {
+                        docker.image('plugins-android').withRun('-t -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') {
                             container -> code:{
-                                def base_cmd = 'docker exec -t '+container.id+" sh -c '"
-                                def exec_cmd = { cmd -> sh base_cmd+cmd+"'" }
+                                def base_cmd = 'docker exec -u '+jenkinsUser+' '+container.id+" sh -c '"
+                                def base_root_cmd = 'docker exec '+container.id+" sh -c '"
+                                def exec_cmd = { cmd -> sh script:base_cmd+cmd+"'" }
+                                def exec_root_cmd = { cmd -> sh script:base_root_cmd+cmd+"'" }
 
                                 ansiColor('css') {
                                     exec_cmd("""
                                         cd jami
-                                        AUTHOR="SFL" DIVISION="Internal" ANDROID_ABI="arm64-v8a" python3 build-plugin.py --projects="GreenScreen" --distribution="android"
+                                        ANDROID_ABI="armeabi-v7a arm64-v8a x86_64" python3 build-plugin.py --projects="GreenScreen" --distribution="android"
                                         """)
                                 }
                             }
                         }
-                        if (!fileExists("./build/android/GreenScreen.jpl")) {
-                            error "GreenScreen build output not found"
+                        if (env.ARCHIVE == 'false') {
+                            sshagent(credentials: [env.SSH_CREDENTIALS]) {
+                                // def sshPrivateKey = '/var/lib/jenkins/.ssh/gplpriv'
+                                def remoteHost = env.SSH_HOST_DL_RING_CX
+                                def remoteBaseDir = '/srv/repository/ring/plugins/GreenScreen/android'
+
+                                sh """
+                                    rsync --verbose build/android/GreenScreen.jpl ${remoteHost}:${remoteBaseDir}/archive/GreenScreen-\$(date '+%Y%m%d%H%M').jpl
+                                    rsync --verbose build/android/GreenScreen.jpl ${remoteHost}:${remoteBaseDir}/GreenScreen.jpl
+                                """
+                            }
+                        } else {
+                            archiveArtifacts 'build/android/GreenScreen.jpl'
                         }
-                        archiveArtifacts 'build/android/GreenScreen.jpl'
                     }
                 }
             }
@@ -159,23 +175,35 @@ pipeline {
             steps {
                 script {
                     if(env.GERRIT_TOPIC == "all" || env.GERRIT_TOPIC == "AudioFilter") {
-                        docker.image('plugins-android').withRun('-t -u '+jenkinsUser+' -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') {
+                        docker.image('plugins-android').withRun('-t -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') {
                             container -> code:{
-                                def base_cmd = 'docker exec -t '+container.id+" sh -c '"
-                                def exec_cmd = { cmd -> sh base_cmd+cmd+"'" }
+                                def base_cmd = 'docker exec -u '+jenkinsUser+' '+container.id+" sh -c '"
+                                def base_root_cmd = 'docker exec '+container.id+" sh -c '"
+                                def exec_cmd = { cmd -> sh script:base_cmd+cmd+"'" }
+                                def exec_root_cmd = { cmd -> sh script:base_root_cmd+cmd+"'" }
 
                                 ansiColor('css') {
                                     exec_cmd("""
                                         cd jami
-                                        AUTHOR="SFL" DIVISION="Internal" ANDROID_ABI="arm64-v8a" python3 build-plugin.py --projects="AudioFilter" --distribution="android"
+                                        ANDROID_ABI="armeabi-v7a arm64-v8a x86_64" python3 build-plugin.py --projects="AudioFilter" --distribution="android"
                                 """)
                                 }
                             }
                         }
-                        if (!fileExists("./build/android/AudioFilter.jpl")) {
-                            error "AudioFilter build output not found"
+                        if (env.ARCHIVE == 'false') {
+                            sshagent(credentials: [env.SSH_CREDENTIALS]) {
+                                // def sshPrivateKey = '/var/lib/jenkins/.ssh/gplpriv'
+                                def remoteHost = env.SSH_HOST_DL_RING_CX
+                                def remoteBaseDir = '/srv/repository/ring/plugins/AudioFilter/android'
+
+                                sh """
+                                    rsync --verbose build/android/AudioFilter.jpl ${remoteHost}:${remoteBaseDir}/archive/AudioFilter-\$(date '+%Y%m%d%H%M').jpl
+                                    rsync --verbose build/android/AudioFilter.jpl ${remoteHost}:${remoteBaseDir}/AudioFilter.jpl
+                                """
+                            }
+                        } else {
+                            archiveArtifacts 'build/android/AudioFilter.jpl'
                         }
-                        archiveArtifacts 'build/android/AudioFilter.jpl'
                     }
                 }
             }
@@ -185,23 +213,35 @@ pipeline {
             steps {
                 script {
                     if(env.GERRIT_TOPIC == "all" || env.GERRIT_TOPIC == "AutoAnswer") {
-                        docker.image('plugins-android').withRun('-t -u '+jenkinsUser+' -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') {
+                        docker.image('plugins-android').withRun('-t -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') {
                             container -> code:{
-                                def base_cmd = 'docker exec -t '+container.id+" sh -c '"
-                                def exec_cmd = { cmd -> sh base_cmd+cmd+"'" }
+                                def base_cmd = 'docker exec -u '+jenkinsUser+' '+container.id+" sh -c '"
+                                def base_root_cmd = 'docker exec '+container.id+" sh -c '"
+                                def exec_cmd = { cmd -> sh script:base_cmd+cmd+"'" }
+                                def exec_root_cmd = { cmd -> sh script:base_root_cmd+cmd+"'" }
 
                                 ansiColor('css') {
                                     exec_cmd("""
                                         cd jami
-                                        AUTHOR="SFL" DIVISION="Internal" ANDROID_ABI="arm64-v8a" python3 build-plugin.py --projects="AutoAnswer" --distribution="android"
+                                        ANDROID_ABI="armeabi-v7a arm64-v8a x86_64" python3 build-plugin.py --projects="AutoAnswer" --distribution="android"
                                 """)
                                 }
                             }
                         }
-                        if (!fileExists("./build/android/AutoAnswer.jpl")) {
-                            error "AutoAnswer build output not found"
+                        if (env.ARCHIVE == 'false') {
+                            sshagent(credentials: [env.SSH_CREDENTIALS]) {
+                                // def sshPrivateKey = '/var/lib/jenkins/.ssh/gplpriv'
+                                def remoteHost = env.SSH_HOST_DL_RING_CX
+                                def remoteBaseDir = '/srv/repository/ring/plugins/AutoAnswer/android'
+
+                                sh """
+                                    rsync --verbose build/android/AutoAnswer.jpl ${remoteHost}:${remoteBaseDir}/archive/AutoAnswer-\$(date '+%Y%m%d%H%M').jpl
+                                    rsync --verbose build/android/AutoAnswer.jpl ${remoteHost}:${remoteBaseDir}/AutoAnswer.jpl
+                                """
+                            }
+                        } else {
+                            archiveArtifacts 'build/android/AutoAnswer.jpl'
                         }
-                        archiveArtifacts 'build/android/AutoAnswer.jpl'
                     }
                 }
             }
@@ -211,23 +251,35 @@ pipeline {
             steps {
                 script {
                     if(env.GERRIT_TOPIC == "all" || env.GERRIT_TOPIC == "WaterMark") {
-                        docker.image('plugins-android').withRun('-t -u '+jenkinsUser+' -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') {
+                        docker.image('plugins-android').withRun('-t -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') {
                             container -> code:{
-                                def base_cmd = 'docker exec -t '+container.id+" sh -c '"
-                                def exec_cmd = { cmd -> sh base_cmd+cmd+"'" }
+                                def base_cmd = 'docker exec -u '+jenkinsUser+' '+container.id+" sh -c '"
+                                def base_root_cmd = 'docker exec '+container.id+" sh -c '"
+                                def exec_cmd = { cmd -> sh script:base_cmd+cmd+"'" }
+                                def exec_root_cmd = { cmd -> sh script:base_root_cmd+cmd+"'" }
 
                                 ansiColor('css') {
                                     exec_cmd("""
                                         cd jami
-                                        AUTHOR="SFL" DIVISION="Internal" ANDROID_ABI="arm64-v8a" python3 build-plugin.py --projects="WaterMark" --distribution="android"
+                                        ANDROID_ABI="armeabi-v7a arm64-v8a x86_64" python3 build-plugin.py --projects="WaterMark" --distribution="android"
                                 """)
                                 }
                             }
                         }
-                        if (!fileExists("./build/android/WaterMark.jpl")) {
-                            error "WaterMark build output not found"
+                        if (env.ARCHIVE == 'false') {
+                            sshagent(credentials: [env.SSH_CREDENTIALS]) {
+                                // def sshPrivateKey = '/var/lib/jenkins/.ssh/gplpriv'
+                                def remoteHost = env.SSH_HOST_DL_RING_CX
+                                def remoteBaseDir = '/srv/repository/ring/plugins/WaterMark/android'
+
+                                sh """
+                                    rsync --verbose build/android/WaterMark.jpl ${remoteHost}:${remoteBaseDir}/archive/WaterMark-\$(date '+%Y%m%d%H%M').jpl
+                                    rsync --verbose build/android/WaterMark.jpl ${remoteHost}:${remoteBaseDir}/WaterMark.jpl
+                                """
+                            }
+                        } else {
+                            archiveArtifacts 'build/android/WaterMark.jpl'
                         }
-                        archiveArtifacts 'build/android/WaterMark.jpl'
                     }
                 }
             }
@@ -237,10 +289,12 @@ pipeline {
             steps {
                 script {
                     if(env.GERRIT_TOPIC == "all" || env.GERRIT_TOPIC == "Whisper" || env.GERRIT_TOPIC == "WhisperTranscript") {
-                        docker.image('plugins-android').withRun('-t -u '+jenkinsUser+' -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') {
+                        docker.image('plugins-android').withRun('-t -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') {
                             container -> code:{
-                                def base_cmd = 'docker exec -t '+container.id+" sh -c '"
-                                def exec_cmd = { cmd -> sh base_cmd+cmd+"'" }
+                                def base_cmd = 'docker exec -u '+jenkinsUser+' '+container.id+" sh -c '"
+                                def base_root_cmd = 'docker exec '+container.id+" sh -c '"
+                                def exec_cmd = { cmd -> sh script:base_cmd+cmd+"'" }
+                                def exec_root_cmd = { cmd -> sh script:base_root_cmd+cmd+"'" }
 
                                 ansiColor('css') {
                                     exec_cmd("""
@@ -250,10 +304,94 @@ pipeline {
                                 }
                             }
                         }
-                        if (!fileExists("./build/android/WhisperTranscript.jpl")) {
-                            error "WhisperTranscript build output not found"
+                        if (env.ARCHIVE == 'false') {
+                            sshagent(credentials: [env.SSH_CREDENTIALS]) {
+                                // def sshPrivateKey = '/var/lib/jenkins/.ssh/gplpriv'
+                                def remoteHost = env.SSH_HOST_DL_RING_CX
+                                def remoteBaseDir = '/srv/repository/ring/plugins/WhisperTranscript/android'
+
+                                sh """
+                                    rsync --verbose build/android/WhisperTranscript.jpl ${remoteHost}:${remoteBaseDir}/archive/WhisperTranscript-\$(date '+%Y%m%d%H%M').jpl
+                                    rsync --verbose build/android/WhisperTranscript.jpl ${remoteHost}:${remoteBaseDir}/WhisperTranscript.jpl
+                                """
+                            }
+                        } else {
+                            archiveArtifacts 'build/android/WhisperTranscript.jpl'
+                        }
+                    }
+                }
+            }
+        }
+
+        stage('Build Dispatcher') {
+            steps {
+                script {
+                    if(env.GERRIT_TOPIC == "all" || env.GERRIT_TOPIC == "Dispatcher") {
+                        docker.image('plugins-android').withRun('-t -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') {
+                            container -> code:{
+                                def base_cmd = 'docker exec -u '+jenkinsUser+' '+container.id+" sh -c '"
+                                def base_root_cmd = 'docker exec '+container.id+" sh -c '"
+                                def exec_cmd = { cmd -> sh script:base_cmd+cmd+"'" }
+                                def exec_root_cmd = { cmd -> sh script:base_root_cmd+cmd+"'" }
+
+                                ansiColor('css') {
+                                    exec_cmd("""
+                                        cd jami
+                                        ANDROID_ABI="armeabi-v7a arm64-v8a x86_64" python3 build-plugin.py --projects="Dispatcher" --distribution="android"
+                                """)
+                                }
+                            }
+                        }
+                        if (env.ARCHIVE == 'false') {
+                            sshagent(credentials: [env.SSH_CREDENTIALS]) {
+                                def remoteHost = env.SSH_HOST_DL_RING_CX
+                                def remoteBaseDir = '/srv/repository/ring/plugins/Dispatcher/android'
+
+                                sh """
+                                    rsync --verbose build/android/Dispatcher.jpl ${remoteHost}:${remoteBaseDir}/archive/Dispatcher-\$(date '+%Y%m%d%H%M').jpl
+                                    rsync --verbose build/android/Dispatcher.jpl ${remoteHost}:${remoteBaseDir}/Dispatcher.jpl
+                                """
+                            }
+                        } else {
+                            archiveArtifacts 'build/android/Dispatcher.jpl'
+                        }
+                    }
+                }
+            }
+        }
+
+        stage('Build Agent') {
+            steps {
+                script {
+                    if(env.GERRIT_TOPIC == "all" || env.GERRIT_TOPIC == "Agent") {
+                        docker.image('plugins-android').withRun('-t -v '+pwd()+':/home/gradle/jami:rw -e BATCH_MODE=1', '/bin/bash') {
+                            container -> code:{
+                                def base_cmd = 'docker exec -u '+jenkinsUser+' '+container.id+" sh -c '"
+                                def base_root_cmd = 'docker exec '+container.id+" sh -c '"
+                                def exec_cmd = { cmd -> sh script:base_cmd+cmd+"'" }
+                                def exec_root_cmd = { cmd -> sh script:base_root_cmd+cmd+"'" }
+
+                                ansiColor('css') {
+                                    exec_cmd("""
+                                        cd jami
+                                        ANDROID_ABI="armeabi-v7a arm64-v8a x86_64" python3 build-plugin.py --projects="Agent" --distribution="android"
+                                """)
+                                }
+                            }
+                        }
+                        if (env.ARCHIVE == 'false') {
+                            sshagent(credentials: [env.SSH_CREDENTIALS]) {
+                                def remoteHost = env.SSH_HOST_DL_RING_CX
+                                def remoteBaseDir = '/srv/repository/ring/plugins/Agent/android'
+
+                                sh """
+                                    rsync --verbose build/android/Agent.jpl ${remoteHost}:${remoteBaseDir}/archive/Agent-\$(date '+%Y%m%d%H%M').jpl
+                                    rsync --verbose build/android/Agent.jpl ${remoteHost}:${remoteBaseDir}/Agent.jpl
+                                """
+                            }
+                        } else {
+                            archiveArtifacts 'build/android/Agent.jpl'
                         }
-                        archiveArtifacts 'build/android/WhisperTranscript.jpl'
                     }
                 }
             }
diff --git a/extras/ci/gnulinux/Jenkinsfile b/extras/ci/gnulinux/Jenkinsfile
index e3d24508378babb3cec88a4d79550b168d965b48..8ed5b3d3077cfca255f5f88875285d60bf78f94b 100644
--- a/extras/ci/gnulinux/Jenkinsfile
+++ b/extras/ci/gnulinux/Jenkinsfile
@@ -141,7 +141,7 @@ pipeline {
             steps {
                 script {
                     if(env.GERRIT_TOPIC == "all" || env.GERRIT_TOPIC == "GreenScreen") {
-                        docker.image('plugins-linux').withRun('-t -u '+jenkinsUser+' -v '+pwd()+':/root/jami/:rw -w /root/ -e BATCH_MODE=1', '/bin/bash') {
+                        docker.image('plugins-linux').withRun('-t -u '+jenkinsUser+' -v '+pwd()+':/root/jami/:rw -v /var/cache/jami:/var/cache/jami:rw -w /root/ -e BATCH_MODE=1', '/bin/bash') {
                             container -> code:{
                                 def base_cmd = 'docker exec -t '+container.id+" sh -c '"
                                 def exec_cmd = { cmd -> sh base_cmd+cmd+"'" }