До Nogut системные библиотеки не были защищены от пользовательских приложений.Конфликты имен проблематичны, они заставили Google изобрести отдельное пространство имен для общей библиотеки времени выполнения C ++, которая является частью Android NDK.
Библиотеки OpenSSL также широко используются вне вашего контроля.Они могут быть загружены в ваш процесс даже до того, как у вас появится возможность загрузить свой собственный libssl.
Таким образом, наилучшим выбором будет сборка OpenSSL в виде статических библиотек и статическая привязка libmynativelibrary.so к нему.Таким образом, у вас есть монолитный двоичный файл, который не зависит от других.
Если вы не можете следовать этому курсу, вам следует создавать библиотеки OpenSSL с искаженными именами, например, libmyssl.so и libmycrypto.so.Это может помочь избежать простого конфликта имен с системными библиотеками.
Еще лучше, следуйте примеру NDK и предоставьте уникальное пространство имен для вашего SSL API.
Не ожидайте, что загрузкабиблиотеки явно из их распакованного местоположения в ApplicationInfo.nativeLibraryDir будут надежным решением: как я уже говорил, системные библиотеки могут загружаться в ваше адресное пространство раньше.
Обратите внимание, что перед Lollipop вы также вручную загрузите все несистемные зависимости и в правильном порядке.
Кроме того, новый NDK отбросил armeabi , поэтому рассмотрите возможность перехода на armeabi-v7a.