Как использовать библиотеку openSSL в приложении ANDROID

Я пытаюсь встроить библиотеку openssl в свое приложение для Android с помощью Android NDK, но я не знаю, как использовать именно эту библиотеку, и поэтому, пожалуйста, любой может сказать мне, как ее использовать, отправьте исходный код для моей справки ... ....

Связанный :

Как создать OpenSSL на Android / Linux?


person Pankaj D. Gaurshettiwar    schedule 15.06.2010    source источник


Ответы (2)


Вы пробовали это, это отдельная сборка openssl, включенная в Android: https://github.com/fries/android-external-openssl/blob/master/README.android

person Hans-Christoph Steiner    schedule 09.02.2011
comment
на самом деле сейчас мы поддерживаем нашу собственную версию: github.com/guardianproject/android-ffmpeg - person Hans-Christoph Steiner; 22.02.2013
comment
Мы используем сборку openssl, предоставленную в проекте guardian. Сейчас я пытаюсь обновить версию openssl из-за недавнего предупреждения о безопасности игрового магазина Android. Я выполнил шаги из файла Readme, но застрял на следующем: 5) Очистить перед сборкой с помощью: m -j16 clean-libcrypto clean-libssl clean-openssl clean-ssltest. насколько мне известно, m и mm доступны при настройке для сборки android из исходного кода, поэтому я получаю m: command not found и на следующем шаге то же самое для mm. Любая помощь приветствуется! - person Nonos; 04.04.2016
comment
@Nonos Получили ли вы какое-нибудь решение для обновления версии OpenSSL? Я тоже застрял на шаге 5. Herte - это мой вопрос, если вы может мне помочь. - person Asfak Saiyed; 19.04.2016

Есть несколько советов по использованию OpenSSL с Android:

  1. Библиотеки OpenSSL необходимо собирать с помощью инструментов NDK, иначе они будут несовместимы с NDK. Компиляция последней версии OpenSSL для Android

    CC=~/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc
    ./Configure android-armv7
    export ANDROID_DEV=~/android-ndk-r9//platforms/android-8/arch-arm/usr
    make build_libs
    

    Предполагается, что эти команды выполняются в исходном каталоге OpenSSL.

  2. Чтобы использовать эти библиотеки (ssl и crypto) с вашей собственной библиотекой из NDK, вам необходимо создать дополнительные файлы * .mk в папке jni. Например:

    include $(CLEAR_VARS)
    
    LOCAL_MODULE    := ssl-crypto
    LOCAL_SRC_FILES := openssl-crypto/libcrypto.so
    
    include $(PREBUILT_SHARED_LIBRARY)
    

    и включите их в основной Android.mk:

    include $(LOCAL_PATH)/openssl-ssl/Android.mk
    

    и, наверное, добавлю

    include $(CLEAR_VARS) 
    

    после этого, чтобы избежать ошибок. Библиотеки будут размещены в libs/armabi и .apk.

  3. Если вы столкнетесь с ошибкой could not load library ... needed by ..., это, вероятно, означает, что в вашей библиотеке есть soname с номером версии. AFAIK NDK в настоящий момент не может работать с такими библиотеками. Существует обходной путь (Dalvik ищет файл .so с расширением .0 - почему?):

    rpl -R -e library.so.1.1 "library.so\x00\x00\x00\x00" libs obj
    

    где rpl - это инструмент для замены строк в Linux. Запустите этот сценарий после сборки и перед запуском приложения, и он удалит номер версии из файлов проекта. Перейдите по ссылке для получения дополнительной информации.

    Если вы используете компилятор C ++, вы можете получить ошибку «неопределенные ссылки» в ваших функциях C. Используйте extern "C" {}, чтобы избежать этого (дополнительную информацию см. В разделе «Изменение имени C ++»).

  4. Наконец, убедитесь, что в манифесте есть сетевое разрешение.

person bartolo-otrit    schedule 08.09.2014
comment
Как мне загрузить libcrypto.so в Java? Я использовал System.loadLibrary и System.load, но похоже, что apk использует libcrypto.so в /system/lib, потому что новую функцию нельзя найти в Android 4.2 libcrypto.so. - person bluesky; 11.04.2019