diff --git a/src/android/meson.build b/src/android/meson.build
index 6341ee8b0bfb..7b226a4b5d35 100644
--- a/src/android/meson.build
+++ b/src/android/meson.build
@@ -4,6 +4,7 @@ android_deps = [
     dependency('libexif', required : get_option('android')),
     dependency('libjpeg', required : get_option('android')),
     libcamera_private,
+    libyuv_dep,
 ]
 
 android_enabled = true
@@ -15,8 +16,6 @@ foreach dep : android_deps
     endif
 endforeach
 
-android_deps += [libyuv_dep]
-
 android_hal_sources = files([
     'camera3_hal.cpp',
     'camera_capabilities.cpp',
diff --git a/src/meson.build b/src/meson.build
index 91bea7753a2e..76198e9535db 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -27,11 +27,13 @@ else
     ipa_sign_module = false
 endif
 
+# libyuv, used by the Android adaptation layer and the virtual pipeline handler.
+# Fallback to a subproject if libyuv isn't found, as it's typically not provided
+# by distributions.
 libyuv_dep = dependency('libyuv', required : false)
 
-# Fallback to a subproject if libyuv isn't found, as it's typically not
-# provided by distributions.
-if not libyuv_dep.found()
+if (pipelines.contains('virtual') or get_option('android').allowed()) and \
+   not libyuv_dep.found()
     cmake = import('cmake')
 
     libyuv_vars = cmake.subproject_options()
