LD_LIBRARY_PATH czasami ignorowane na Androidzie

Mam aplikację na Androida, która tworzy wiele rodzimych plików wykonywalnych połączonych dinamicznie z bibliotekami, które dystrybuuję wraz z pakietem. Aby uruchomić te pliki binarne, używam zmiennej środowiskowej LD_LIBRARY_PATH, aby uświadomić im miejsce ładowania bibliotek, ale na niektórych urządzeniach nie działa to wcale, LD_LIBRARY_PATH jest poprawnie zaktualizowany, ale plik binarny i tak nie może znaleźć biblioteki . To nie jest coś, co mogę odtworzyć, ponieważ na moich dwóch urządzeniach (Galaxy Nexus i Nexus 7 z zapasowymi romami) działa po prostu dobrze.

Próbowałem wielu sposobów, na przykład: spawn:

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

I :

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

Ale na tych urządzeniach nic nie działało ... więc zaczynam myśleć, że jest to problem związany z jądrem, niektóre jądra (takie jak moje) używają LD_LIBRARY_PATH, inne jądra nie (po prostu zignoruj ​​je lub są używając tylko LD_LIBRARY_PATH, która została ustawiona podczas uruchamiania aplikacji, dlatego nie ma możliwości zmiany jej w czasie wykonywania).

Próbowałem również użyć System.load, ale to nie zadziałało, prawdopodobnie dlatego, że te biblioteki nie są JNI ... czy jest coś, co mógłbym wypróbować przed rozpoczęciem myślenia o użyciu statycznie połączonych plików binarnych?

questionAnswers(4)

yourAnswerToTheQuestion