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)

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