Ошибка java.lang.UnsatisfiedLinkError на Android 6 Marshmallow, как пофиксить?
Добрый день.
У меня есть приложение, которое показывает изображение с IP-камер, и я пытаюсь адаптировать его к targetSdk = 23
До SDK 22 включительно все работает нормально, но с targetSdk = 23 при установке на эмуляторе на устройство с Android 6 приложение крашится (при этом работает на устройствах до Android 5.1 включительно).
Приложение использует сторонние нативные библиотеки, доступа к исходным кодам которых у меня нет. Библиотекам требуются исключенные в Marshmallow libcrypto.so и libssl.so, а также разрешения RECORD_AUDIO и WRITE_EXTERNAL_STORAGE
libcrypto.so и libssl.so я скопировал из системной папки 4.4 и положил в папку libs/armeabi проекта и подгружаю с помощью System.loadLibrary.
Самому приложению в настройках даю необходимые permission.
Тем не менее, при попытки вызова метода из нативной библиотеки приложение падает с ошибкой:
UnsatisfiedLinkError: No implementation found for int com.ipc.sdk.FSApi.Init() (tried Java_com_ipc_sdk_FSApi_Init and Java_com_ipc_sdk_FSApi_Init__) at com.ipc.sdk.FSApi.Init(Native Method)
Мое самое большое опасение - что без модификации исходного кода нативной библиотеки проблему не решить, так как к исходным кодам доступа нет.
Для устранения проблемы напряженки с телепатическими аппаратами, отредактировал вопрос в соответствии с тем, что мне удалось выяснить в процессе исследования пробемы.
Эту статью я видел. И как раз там есть совет:
"Include the libssl.so and/or libcrypto.so libraries in your APK. If you don’t have source code to an affected third-party library, this may be your only option"
К сожалению, не помогло...
В FSAp.java:
public class FSApi
{
public static native int Init();
....
static {
try {
System.loadLibrar y("crypto");
System.loadLibrary("ssl");
} catch(UnsatisfiedLinkError ule)
{}
И в основной активности вызываем:
FSApi.Init(); - и вот тут все валится с упомянутой в вопросе ошибкой.
По поводу видны ли либы приложению, сделал вывод логов - в каждый try вывожу лог "Сработало", а в catch "Не сработало".
Так вот первый try (crypto и ssl) срабатывает, а у остальных трех - срабатывает catch...
Получается, почему-то не может загрузить библиотеки IOTCAPIs, RDTAPIs и FSApi...