2010-06-15 26 views

Respuesta

3

Has probado esto, es una construcción independiente del openssl que se incluye en Android: https://github.com/fries/android-external-openssl/blob/master/README.android

+0

que realmente mantenemos nuestra propia versión de esto ahora: https://github.com/guardianproject/android-ffmpeg –

+0

Estamos utilizando la acumulación openssl proporcionada en el guardianproject .. ahora estoy tratando de actualizar la versión de openssl debido a una alerta de seguridad reciente del playstore de Android. Seguí los pasos en el archivo Léame, pero estoy atascado en: 5) Limpieza antes de compilar con: m -j16 clean-libcrypto clean-libssl clean-openssl clean-ssltest. según mi conocimiento, m y mm están disponibles cuando configuras para construir android desde el origen, por lo que obtengo m: comando no encontrado y en el siguiente paso igual para mm. ¡Cualquier ayuda es muy apreciada! – Nonos

+0

@Nonos ¿Recibió alguna solución para actualizar la versión de OpenSSL? También estoy atrapado en el paso 5. Herte es mi [pregunta] (http://stackoverflow.com/questions/36493508/how-to-update-openssl-version-in-csipsimple) si pudiera ayudarme. –

2

voy a describir algunos consejos sobre el uso de OpenSSL con Android:

  1. Es necesaria la construcción de bibliotecas de OpenSSL utilizando herramientas NDK, de lo contrario, serán incompatibles con 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 
    

    Se supone que estos comandos se ejecutará en el directorio fuente de OpenSSL.

  2. Para utilizar estas bibliotecas (ssl y crypto) con su propia biblioteca desde ndk, debe crear archivos * .mk adicionales en la carpeta jni. Por ejemplo:

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

    e incluirlos en Android.mk principal:

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

    y probablemente añadir

    include $(CLEAR_VARS) 
    

    después de ella, para evitar errores. Las bibliotecas se colocarán en libs/armabi y .apk.

  3. Si se encuentra con el error could not load library ... needed by ..., probablemente significa que su biblioteca tiene un nombre con un número de versión. AFAIK ndk no puede trabajar con esas bibliotecas en este momento. Hay una solución (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 
    

    donde rpl es una herramienta de Linux sustitución de cadenas. Ejecute este script después de compilar y antes de ejecutar su aplicación, y eliminará el número de versión de los archivos del proyecto. Sigue el enlace para ver más información.

    Si utiliza un compilador de C++, puede obtener un error de "referencias no definidas" en sus funciones de C. Utilice extern "C" {} para evitar esto (consulte "Cambio de nombre de C++" para obtener más información).

  4. Por último, no olvide incluir el permiso para usar la red en el manifiesto.

Cuestiones relacionadas