Since I read through this code only recently: The Android linker (at least post 2.0) supports LD_LIBRARY_PATH, but it only gets read at the start of the process - so you can't modify it from within your program to affect later dlopen()s, unfortunately.
It would be real nice if an app's native library directories (plural for armeabi-v7a) were in the standard dlopen() search path. They aren't - and I can't think of any way to fix that without providing a different libdl implementation and using a replacement for System.loadLibrary that called into your libdl. At the moment, Android searches the native libraries in the Java System.loadLibrary routines - once you hit the linker and start loading DT_NEEDED libraries, etc then the app-specific native library directories are forgotten.
- Gus