Android NDK – Biblioteca no encontrada CAN NOT LINK EXECUTABLE – cómo configurar LD_LIBRARY_PATH?

Tengo una actividad de Android en la que estoy ejecutando código compilado NDK (programa de línea de comandos) con:

Runtime.getRuntime().exec(myCommand); 

Y cargar las bibliotecas compartidas necesarias con:

 static { System.loadLibrary(myLib); } 

Pero al ejecutar mi proyecto e imprimir la salida de la secuencia de error obtengo el siguiente error:

 link_image[1963]: 7520 could not load needed library 'libmyLib.so' for './myCommand' (load_library[1105]: Library 'libmyLib.so' not found)CANNOT LINK EXECUTABLE 

libmyLib.so que libmyLib.so existe en mi proyecto bajo el directorio libs/armeabi/ y es copiado a mi dispositivo Android en el directorio /data/data/myProject.path.package/lib/ . El propietario y el grupo del ejecutable y de la biblioteca son el system:system y los permisos están bien también.

Al ejecutar el comando desde el shell de adb en el principio consigo el mismo error, pero luego puedo establecer LD_LIBRARY_PATH y ejecuta ok:

 ./adb shell export LD_LIBRARY_PATH=/data/data/myProject.path.package/lib:$LD_LIBRARY_PATH /data/data/myProject.path.package/myCommand 

Así que la pregunta es, ¿cómo hacerlo desde el proyecto java Android?

Nota: Estoy usando Linux, Eclipse + Sequoyah, NDK-r5b, Android 2.3.6 (API 10) en GT-P1010.

Resuelto: se puede utilizar exec(String prog, String[] envp) . En mi caso esto fue:

 String[] envp = {"LD_LIBRARY_PATH=/data/data/cse.ecg.dcmtk/lib:$LD_LIBRARY_PATH"}; Runtime.getRuntime().exec(myCommand, envp); 

El problema ahora es que con exec() el proceso ejecutado no puede resolver hostnames (lo hace desde adb shell, se establece el permiso de Internet). ¿Alguna pista sobre eso?

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.