2016-10-03 3 views
1

я могу построить 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 весь день, но не повезло. Поэтому, пожалуйста, скажите мне, как это сделать.

+1

Причина, по которой просто переименование библиотеки не работает, заключается в том, что в общих библиотеках есть бит метаданных в заголовке ELF под названием «SONAME». Android (по крайней мере, более новые версии, не знаю, верно ли это, вернувшись к GB), используйте это для 'loadLibrary'. –

+1

Вы должны написать общий оберточный объект. Общедоступный объект обертки экспортирует нужные вам функции. Он также статически связывается с OpenSSL, поэтому вы не получаете версию OpenSSL на нижнем уровне, загруженную Zygote. Также см. [Как создать OpenSSL как unversioned shared lib] (http://stackoverflow.com/a/24212330/608639) и [Изменение библиотеки OpenSSL в приложении для Android для HttpClient] (http://stackoverflow.com/a/28392326/608639). – jww

+0

Также см. [OpenSSL и Android] (https://wiki.openssl.org/index.php/Android) в вики OpenSSL; и [Обновление вашего поставщика безопасности для защиты от SSL-эксплойтов] (http://developer.android.com/training/articles/security-gms-provider.html) в документах Android. – jww

ответ

1

Системы имеет ту LIBS, загруженную в среде выполнения, вы не можете использовать System.loadLibrary

Вы можете сделать небольшой код NDK, который будет использовать родную DLOAD для тех LIBS. И, в конце концов, я считаю, что лучше всего использовать ssl api через обычный API Android, так как вы никогда не знаете, что они будут делать в следующей версии.

 Смежные вопросы

  • Нет связанных вопросов^_^