diff -ru a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt	2026-07-31 13:25:14.739711912 +0200
+++ b/CMakeLists.txt	2026-07-31 13:25:29.283619378 +0200
@@ -2,11 +2,22 @@
 
 project(gl4es LANGUAGES C)
 
+# questshock: on Android this project is add_subdirectory()'d straight into
+# the engine's own CMake configure (see android/engine-patches/
+# 02-android-opengl-es.patch), not built standalone - CMAKE_SOURCE_DIR then
+# points at the *outer* project's root, not here, so writing there would
+# scatter build output outside this project entirely. Leaving these unset
+# for Android just falls back to CMake's normal per-target build-tree
+# output, which AGP's own native-build packaging finds regardless of path;
+# link_directories() is also unneeded there since the GL/EGL targets link
+# each other by CMake target name, not by search path.
+if(NOT ANDROID)
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
 
 link_directories(${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
+endif()
 
 option(PANDORA "Set to ON if targeting an OpenPandora device" ${PANDORA})
 option(PYRA "Set to ON if targeting an Dragonbox Pyra device" ${PYRA})
diff -ru a/src/CMakeLists.txt b/src/CMakeLists.txt
--- a/src/CMakeLists.txt	2026-07-31 13:25:14.747711861 +0200
+++ b/src/CMakeLists.txt	2026-07-31 13:25:44.043526054 +0200
@@ -220,7 +220,16 @@
         target_link_libraries(GL ${log-lib})
     endif()
     
-    if(CMAKE_SHARED_LIBRARY_SUFFIX MATCHES ".so")
+    # questshock: on Android, AGP's native-build packaging only bundles a
+    # jniLibs .so whose *filename* literally ends in ".so" (and the dynamic
+    # linker resolves NEEDED entries by embedded SONAME, which CMake derives
+    # from this same filename) - versioning it to "libGL.so.1" like the
+    # desktop build does would need a separate patchelf rename step, which
+    # only build-image's Docker environment could guarantee has this tool.
+    # Skipping the override on Android instead so CMake's own default
+    # SHARED library naming (plain "libGL.so", correct SONAME included)
+    # already comes out right with no extra step.
+    if(CMAKE_SHARED_LIBRARY_SUFFIX MATCHES ".so" AND NOT ANDROID)
         set_target_properties(GL PROPERTIES SUFFIX ".so.1")
     endif()
     install(TARGETS GL
