diff --git a/buildsystem/build-libvlc.sh b/buildsystem/build-libvlc.sh
index 236210b42d7f2461f3bf3f09c71c1a0dfa06b155..cb6bb89dbd628f875f21e030ce2f8b61c051e76e 100755
--- a/buildsystem/build-libvlc.sh
+++ b/buildsystem/build-libvlc.sh
@@ -119,13 +119,6 @@ fi
 
 VLC_BUILD_DIR="$(cd $VLC_SRC_DIR/; pwd)/build-android-${TARGET_TUPLE}"
 
-if [ -z $VLC_TARBALLS ]; then
-    VLC_TARBALLS="$(cd $VLC_SRC_DIR/;pwd)/contrib/tarballs"
-fi
-if [ ! -d $VLC_TARBALLS ]; then
-    mkdir -p $VLC_TARBALLS
-fi
-
 VLC_OUT_PATH="$VLC_BUILD_DIR/ndk"
 mkdir -p $VLC_OUT_PATH
 
@@ -165,11 +158,6 @@ else
      VLC_CFLAGS="-g -O2"
 fi
 
-# cf. GLOBAL_CFLAGS from ${ANDROID_NDK}/build/core/default-build-commands.mk
-VLC_CFLAGS="${VLC_CFLAGS} -fPIC -fdata-sections -ffunction-sections -funwind-tables \
- -fstack-protector-strong -no-canonical-prefixes"
-VLC_CXXFLAGS="-fexceptions -frtti"
-
 # Release or not?
 if [ "$AVLC_RELEASE" = 1 ]; then
     VLC_CFLAGS="${VLC_CFLAGS} -DNDEBUG "
@@ -178,6 +166,11 @@ else
     NDK_DEBUG=1
 fi
 
+# cf. GLOBAL_CFLAGS from ${ANDROID_NDK}/build/core/default-build-commands.mk
+VLC_CFLAGS="${VLC_CFLAGS} -fPIC -fdata-sections -ffunction-sections -funwind-tables \
+ -fstack-protector-strong -no-canonical-prefixes"
+VLC_CXXFLAGS="${VLC_CFLAGS} -fexceptions -frtti"
+
 ###############
 # DISPLAY ABI #
 ###############
@@ -247,12 +240,16 @@ avlc_pkgconfig()
 {
     # Enforce pkg-config files coming from VLC contribs
     PKG_CONFIG_PATH="$VLC_CONTRIB/lib/pkgconfig/" \
-    PKG_CONFIG_LIBDIR="$VLC_CONTRIB/lib/pkgconfig/" \
     pkg-config "$@"
 }
 
 avlc_build()
 {
+# Set PKG_CONFIG_LIBDIR to an empty string to prevent
+# pkg-config from finding dependencies on the build
+# machine, so that it only finds deps in contribs
+export PKG_CONFIG_LIBDIR=""
+
 ###########################
 # VLC BOOTSTRAP ARGUMENTS #
 ###########################
@@ -276,6 +273,7 @@ VLC_CONTRIB_ARGS="\
     --disable-samplerate \
     --disable-schroedinger \
     --disable-sidplay2 \
+    --disable-sqlite \
     --disable-srt \
     --disable-vnc \
     --disable-vncclient \
@@ -456,12 +454,10 @@ fi
 
 echo "Building the contribs"
 
-VLC_CONTRIB_DIR=$VLC_SRC_DIR/contrib/contrib-android-${TARGET_TUPLE}
+VLC_CONTRIB_DIR=$VLC_SRC_DIR/contrib/contrib-${TARGET_TUPLE}
 VLC_CONTRIB_OUT_DIR=$VLC_SRC_DIR/contrib/${TARGET_TUPLE}
 
 mkdir -p $VLC_CONTRIB_OUT_DIR/lib/pkgconfig
-avlc_gen_pc_file $VLC_CONTRIB_OUT_DIR/lib/pkgconfig EGL 1.1
-avlc_gen_pc_file $VLC_CONTRIB_OUT_DIR/lib/pkgconfig GLESv2 2
 
 mkdir -p $VLC_CONTRIB_DIR/lib/pkgconfig
 
@@ -491,9 +487,9 @@ if [ "$AVLC_USE_PREBUILT_CONTRIBS" -gt "0" ]; then
         avlc_checkfail "Fetching prebuilt contribs from ${VLC_PREBUILT_CONTRIBS_URL} failed"
     fi
     # list packages to be built
-    make -C $VLC_CONTRIB_DIR TARBALLS="$VLC_TARBALLS" list
+    make -C $VLC_CONTRIB_DIR list
     # build native tools
-    make -C $VLC_CONTRIB_DIR TARBALLS="$VLC_TARBALLS" tools
+    make -C $VLC_CONTRIB_DIR tools
 else
     # Some libraries have arm assembly which won't build in thumb mode
     # We append -marm to the CFLAGS of these libs to disable thumb mode
@@ -511,14 +507,14 @@ else
     echo "STRIP=${CROSS_TOOLS}strip" >> $VLC_CONTRIB_DIR/config.mak
 
     # list packages to be built
-    make -C $VLC_CONTRIB_DIR TARBALLS="$VLC_TARBALLS" list
+    make -C $VLC_CONTRIB_DIR list
 
-    make -C $VLC_CONTRIB_DIR TARBALLS="$VLC_TARBALLS" $MAKEFLAGS fetch
+    make -C $VLC_CONTRIB_DIR $MAKEFLAGS fetch
     avlc_checkfail "contribs: make fetch failed"
 
     #export the PATH
     # Make
-    make -C $VLC_CONTRIB_DIR TARBALLS="$VLC_TARBALLS" $MAKEFLAGS -k || make -C $VLC_CONTRIB_DIR TARBALLS="$VLC_TARBALLS" $MAKEFLAGS -j1
+    make -C $VLC_CONTRIB_DIR $MAKEFLAGS -k || make -C $VLC_CONTRIB_DIR $MAKEFLAGS -j1
     avlc_checkfail "contribs: make failed"
 
     # Make prebuilt contribs package
@@ -540,11 +536,6 @@ if [ ${ANDROID_API} -lt "26" ]; then
     export ac_cv_header_sys_shm_h=no
 fi
 
-# always use fixups for search.h and tdestroy
-export ac_cv_header_search_h=no
-export ac_cv_func_tdestroy=no
-export ac_cv_func_tfind=no
-
 if [ ! -e $VLC_BUILD_DIR/config.h -o "$AVLC_RELEASE" = 1 ]; then
     VLC_CONFIGURE_DEBUG=""
     if [ ! "$AVLC_RELEASE" = 1 ]; then
@@ -554,7 +545,7 @@ if [ ! -e $VLC_BUILD_DIR/config.h -o "$AVLC_RELEASE" = 1 ]; then
     BEFORE_VLC_BUILD_DIR=$(pwd -P)
     cd $VLC_BUILD_DIR
     CFLAGS="${VLC_CFLAGS}" \
-    CXXFLAGS="${VLC_CFLAGS} ${VLC_CXXFLAGS}" \
+    CXXFLAGS="${VLC_CXXFLAGS}" \
     CC="${CROSS_CLANG}" \
     CXX="${CROSS_CLANG}++" \
     NM="${CROSS_TOOLS}nm" \
@@ -562,7 +553,6 @@ if [ ! -e $VLC_BUILD_DIR/config.h -o "$AVLC_RELEASE" = 1 ]; then
     RANLIB="${CROSS_TOOLS}ranlib" \
     AR="${CROSS_TOOLS}ar" \
     AS="${CROSS_TOOLS}as" \
-    PKG_CONFIG_LIBDIR=$VLC_SRC_DIR/contrib/$TARGET_TUPLE/lib/pkgconfig \
     ../configure --host=$TARGET_TUPLE \
         --with-contrib=${VLC_SRC_DIR}/contrib/${TARGET_TUPLE} \
         --prefix=${VLC_BUILD_DIR}/install/ \
@@ -620,20 +610,6 @@ avlc_add_lib_to_redefine() {
     avlc_add_symbol_to_redefine "$("${CROSS_TOOLS}nm" -g $(avlc_find_lib ${VLC_BUILD_DIR} $1) | grep ' T ' | cut -f3 -d ' ')"
 }
 
-# Generic symbols
-avlc_add_symbol_to_redefine AccessOpen
-avlc_add_symbol_to_redefine AccessClose
-avlc_add_symbol_to_redefine StreamOpen
-avlc_add_symbol_to_redefine StreamClose
-avlc_add_symbol_to_redefine OpenDemux
-avlc_add_symbol_to_redefine CloseDemux
-avlc_add_symbol_to_redefine DemuxOpen
-avlc_add_symbol_to_redefine DemuxClose
-avlc_add_symbol_to_redefine OpenFilter
-avlc_add_symbol_to_redefine CloseFilter
-avlc_add_symbol_to_redefine Open
-avlc_add_symbol_to_redefine Close
-
 #libvlc_json
 avlc_add_symbol_to_redefine json_read
 avlc_add_symbol_to_redefine json_parse_error
@@ -664,7 +640,7 @@ EOF
     BUILTINS="$BUILTINS vlc_entry__$name,\n";
 done;
 BUILTINS="$BUILTINS NULL\n};\n"; \
-printf "/* Autogenerated from the list of modules */\n#include <unistd.h>\n$DEFINITION\n$BUILTINS\n" > $VLC_OUT_PATH/libvlcjni-modules.c
+printf "/* Autogenerated from the list of modules */\n#include <unistd.h>\n$DEFINITION\n$BUILTINS\n" > $VLC_OUT_PATH/libvlc-modules.c
 
 DEFINITION=""
 BUILTINS="const void *libvlc_functions[] = {\n";
@@ -674,7 +650,7 @@ do
     BUILTINS="$BUILTINS $func,\n";
 done
 BUILTINS="$BUILTINS NULL\n};\n"; \
-printf "/* Autogenerated from the list of modules */\n#include <unistd.h>\n$DEFINITION\n$BUILTINS\n" > $VLC_OUT_PATH/libvlcjni-symbols.c
+printf "/* Autogenerated from the list of modules */\n#include <unistd.h>\n$DEFINITION\n$BUILTINS\n" > $VLC_OUT_PATH/libvlc-symbols.c
 
 rm ${REDEFINED_VLC_MODULES_DIR}/syms
 
@@ -683,14 +659,7 @@ rm ${REDEFINED_VLC_MODULES_DIR}/syms
 ###########################
 
 VLC_MODULES=$(avlc_find_modules ${REDEFINED_VLC_MODULES_DIR})
-VLC_CONTRIB_LDFLAGS=$(for i in $(/bin/ls $VLC_CONTRIB/lib/pkgconfig/*.pc); do avlc_pkgconfig --libs $i; done |xargs)
-
-# Lua contrib doesn't expose a pkg-config file with libvlc 3.x and is
-# not probed by the previous command in VLC_CONTRIB_LDFLAGS, so probe
-# whether it was detected or add it manually to the LDFLAGS.
-if ! avlc_pkgconfig --exists lua; then
-    VLC_CONTRIB_LDFLAGS="$VLC_CONTRIB_LDFLAGS '$VLC_CONTRIB/lib/liblua.a'"
-fi
+VLC_CONTRIB_LDLIBS=$(cd $VLC_CONTRIB/lib/pkgconfig; avlc_pkgconfig --libs $(ls *.pc  | sed -e 's/\.pc$//' | xargs))
 
 echo -e "ndk-build vlc"
 
@@ -700,7 +669,7 @@ $NDK_BUILD -C $LIBVLCJNI_ROOT/libvlc \
     VLC_SRC_DIR="$VLC_SRC_DIR" \
     VLC_BUILD_DIR="$VLC_BUILD_DIR" \
     VLC_CONTRIB="$VLC_CONTRIB" \
-    VLC_CONTRIB_LDFLAGS="$VLC_CONTRIB_LDFLAGS" \
+    VLC_CONTRIB_LDLIBS="$VLC_CONTRIB_LDLIBS" \
     VLC_MODULES="$VLC_MODULES" \
     APP_BUILD_SCRIPT=jni/libvlc.mk \
     APP_PLATFORM=android-${ANDROID_API} \
diff --git a/libvlc/jni/libvlc.mk b/libvlc/jni/libvlc.mk
index cc1279cadcbe794df4b53f9bfd16c4cde35ce46e..87b04b6898e7ff1db5c15a7e93f4673c63e1d86c 100644
--- a/libvlc/jni/libvlc.mk
+++ b/libvlc/jni/libvlc.mk
@@ -1,40 +1,18 @@
 LOCAL_PATH := $(call my-dir)
 
 # VLC's buildsystem resulting binaries
-include $(CLEAN_VARS)
-LOCAL_MODULE := libvlccompat
-LOCAL_SRC_FILES := $(VLC_BUILD_DIR)/compat/.libs/libcompat.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAN_VARS)
-LOCAL_MODULE := libvlccore
-LOCAL_SRC_FILES := $(VLC_BUILD_DIR)/src/.libs/libvlccore.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAN_VARS)
-LOCAL_MODULE := libvlc-native
-LOCAL_MODULE_FILENAME := libvlc
-LOCAL_SRC_FILES := $(VLC_BUILD_DIR)/lib/.libs/libvlc.a
-LOCAL_STATIC_LIBRARIES := libvlccore
-include $(PREBUILT_STATIC_LIBRARY)
-
 # libvlc build with all its modules
 include $(CLEAR_VARS)
 LOCAL_MODULE    := libvlc
-LOCAL_SRC_FILES := $(VLC_BUILD_DIR)/ndk/libvlcjni-modules.c \
-				   $(VLC_BUILD_DIR)/ndk/libvlcjni-symbols.c
+LOCAL_SRC_FILES := $(VLC_BUILD_DIR)/ndk/libvlc-modules.c \
+				   $(VLC_BUILD_DIR)/ndk/libvlc-symbols.c
 LOCAL_LDFLAGS := -L$(VLC_CONTRIB)/lib
 LOCAL_LDLIBS := \
     $(VLC_MODULES) \
     $(VLC_BUILD_DIR)/lib/.libs/libvlc.a \
     $(VLC_BUILD_DIR)/src/.libs/libvlccore.a \
     $(VLC_BUILD_DIR)/compat/.libs/libcompat.a \
-    $(VLC_CONTRIB_LDFLAGS) \
-    -ldl -lz -lm -llog \
-    -ljpeg \
+    $(VLC_CONTRIB_LDLIBS) \
+    -ldl -lm -llog -lEGL -lGLESv2 \
     -Wl,-Bsymbolic
-LOCAL_CXXFLAGS := -std=c++17
-# This duplicates the libvlc* link flags, but it propagates the dependency
-# on the native build which is what we want overall
-LOCAL_STATIC_LIBRARIES := libvlccore libvlccompat libvlc-native
 include $(BUILD_SHARED_LIBRARY)