2010-06-15 4 views
7

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

Связанный:

How to build OpenSSL on Android/Linux ?

ответ

3

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

+0

мы фактически сохраняем нашу собственную версию этого сейчас: https://github.com/guardianproject/android-ffmpeg –

+0

Мы используем OpenSSL сборки, представленную в guardianproject .. Я сейчас пытаюсь обновить версия openssl из-за недавнего предупреждения о безопасности в PlayStation Android. Я выполнил шаги в файле Readme, но застрял в: 5) Очистка до сборки: m -j16 clean-libcrypto clean-libssl clean-openssl clean-ssltest. Насколько мне известно, m и mm доступны при настройке для сборки Android из источника, поэтому я получаю команду m: command не найденной и на следующем шаге, равной для mm. Любая помощь очень ценится! – Nonos

+0

@Nonos Получили ли вы решение для обновления версии OpenSSL? Я также застрял в шаге 5. Herte - это мой [вопрос] (http://stackoverflow.com/questions/36493508/how-to-update-openssl-version-in-csipsimple), если бы вы могли мне помочь. –

2

я опишу несколько советов об использовании OpenSSL с Android:

  1. Необходимо создавать библиотеки OpenSSL с использованием NDK инструментов, в противном случае они будут несовместимы с НКА. Compiling the latest OpenSSL for 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 is looking for .so file with '.0' extension - why?):

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

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

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

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

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