LD_LIBRARY_PATH иногда игнорируется на Android

У меня есть приложение для Android, которое порождает много собственных исполняемых файлов, динамически связанных с библиотеками, которые я распространяю с пакетом. Чтобы запустить эти двоичные файлы, я использую переменную среды LD_LIBRARY_PATH, чтобы они знали о месте загрузки библиотек, но на некоторых устройствах это вообще не работает, LD_LIBRARY_PATH корректно обновляется, но двоичный файл все равно не может найти библиотеку , Это не то, что я могу воспроизвести, потому что на моих двух устройствах (Galaxy Nexus и Nexus 7 со стоковыми дисками) он просто отлично работает.

Я пробовал много способов, например, я порождаю:

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

А также :

    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();

Но на этих устройствах, похоже, ничего не работает ... поэтому я начинаю думать, что это проблема, связанная с ядром, некоторые ядра (например, мое) используют LD_LIBRARY_PATH, другие ядра не (просто игнорируют это, или они используя только LD_LIBRARY_PATH, который был установлен при запуске приложения, поэтому нет способа изменить его во время выполнения).

Я также пытался использовать System.load, но он не работал, возможно, потому что эти библиотеки не являются JNI ... Есть ли что-то, что я мог бы попробовать, прежде чем начать думать об использовании статически связанных двоичных файлов?

Ответы на вопрос(4)

Ваш ответ на вопрос