я могу построить OpenSSL-1.0.2j успешно для андроида (libcrypto.so и libssl.so) с помощью GitHub stdchpie/android-openssl:Compile OpenSSL с другим именем из-за Android зиготы
среды: ОС Linux, (мой случай Я использую Mac OS)
Android NDK: 12b
На Android 5.x при использовании:
System.loadLibrary("crypto");
System.loadLibrary("ssl");
Это вызовет конфликт с родными ОС libs, которые также имеют одинаковые имена. И к несчастью, вручную изменить их имена не получилось. Так что я хочу скомпилировать их в разные имена, например libcryptox.so и libsslx.so
Я пытаюсь играть с Makefile.org весь день, но не повезло. Поэтому, пожалуйста, скажите мне, как это сделать.
Причина, по которой просто переименование библиотеки не работает, заключается в том, что в общих библиотеках есть бит метаданных в заголовке ELF под названием «SONAME». Android (по крайней мере, более новые версии, не знаю, верно ли это, вернувшись к GB), используйте это для 'loadLibrary'. –
Вы должны написать общий оберточный объект. Общедоступный объект обертки экспортирует нужные вам функции. Он также статически связывается с OpenSSL, поэтому вы не получаете версию OpenSSL на нижнем уровне, загруженную Zygote. Также см. [Как создать OpenSSL как unversioned shared lib] (http://stackoverflow.com/a/24212330/608639) и [Изменение библиотеки OpenSSL в приложении для Android для HttpClient] (http://stackoverflow.com/a/28392326/608639). – jww
Также см. [OpenSSL и Android] (https://wiki.openssl.org/index.php/Android) в вики OpenSSL; и [Обновление вашего поставщика безопасности для защиты от SSL-эксплойтов] (http://developer.android.com/training/articles/security-gms-provider.html) в документах Android. – jww