Hi there, i have an android app which spawns many native executables 
dinamically linked with libraries i distribute with the package. To launch 
those binaries, i use the LD_LIBRARY_PATH environment variable to make them 
aware of the place to load the libraries from, but on some devices this 
doesn't work at all, the LD_LIBRARY_PATH is correctly updated but the 
binary fails to find the library anyway. This is not something i can 
reproduce because on my two devices ( Galaxy Nexus & Nexus 7 with stock 
roms ) it just works fine.

I tried many ways, for instance i spawn:

Code:

LD_LIBRARY_PATH=/my/package/custom/libs:$LD_LIBRARY_PATH && cd 
/binary/directory && ./binary

And :

Code:

String[] envp = { "LD_LIBRARY_PATH=" + libPath + ":$LD_LIBRARY_PATH" };

Process process = Runtime.getRuntime().exec( "su", envp );

writer = new DataOutputStream( process.getOutputStream() );
reader = new BufferedReader( new InputStreamReader( process.getInputStream() ) 
);

writer.writeBytes( "export LD_LIBRARY_PATH=" + libPath + ":$LD_LIBRARY_PATH\n" 
);
writer.flush();

But on those devices nothing seemed to work ... so i'm starting to think 
that this is a kernel related issue, some kernels ( like mine ) use the 
LD_LIBRARY_PATH, other kernels don't ( simply ignore it, or they're using 
just the LD_LIBRARY_PATH that was set on application startup, therefore 
there's no way to change it at runtime ).

I also tried to use System.load but it didn't work, probably because those 
libs are not JNI ... is there something i could try before starting to 
think about using statically linked binaries ?

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to