2010-06-15 4 views

Répondre

3

Avez-vous essayé, son une version autonome du OpenSSL qui est inclus dans Android: https://github.com/fries/android-external-openssl/blob/master/README.android

+0

nous maintenons en fait notre propre version de ce maintenant: https://github.com/guardianproject/android-ffmpeg –

+0

Nous utilisons la construction de OpenSSL fourni dans le guardianproject .. Je suis maintenant essayer de mettre à niveau la version openssl en raison d'une récente alerte de sécurité playstore android. J'ai suivi les étapes dans le fichier Readme mais suis bloqué à: 5) Nettoyage avant de construire avec: m -j16 clean-libcrypt nettoyer-libssl clean-openssl clean-ssltest. à ma connaissance m et mm sont disponibles lorsque vous configurez pour la construction Android à partir de la source, donc je reçois m: commande non trouvée et à l'étape suivante même pour mm. Toute aide est grandement appréciée! – Nonos

+0

@Nonos Avez-vous trouvé une solution pour mettre à jour la version d'OpenSSL? Je suis également coincé dans l'étape 5. Herte est ma [question] (http://stackoverflow.com/questions/36493508/how-to-update-openssl-version-in-csipsimple) si vous pouviez m'aider. –

2

Je vais décrire quelques conseils sur l'utilisation OpenSSL avec Android:

  1. Il est nécessaire de construire des bibliothèques OpenSSL en utilisant des outils de NDK, sinon ils seront incompatibles avec 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 
    

    On suppose que cette commande sera exécutée dans le répertoire source de OpenSSL. Pour utiliser ces bibliothèques (ssl et crypto) avec votre propre bibliothèque à partir de ndk, vous devez créer des fichiers * .mk supplémentaires dans le dossier jni. Par exemple:

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

    et les inclure dans Android.mk principale:

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

    et probablement ajouter

    include $(CLEAR_VARS) 
    

    après, pour éviter des erreurs. Les bibliothèques seront placées dans libs/armabi et .apk. Si vous rencontrez l'erreur could not load library ... needed by ... cela signifie probablement que votre bibliothèque a soname avec un numéro de version. AFAIK ndk est incapable de travailler avec de telles bibliothèques en ce moment. Il existe une solution (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 est un outil de remplacement de chaîne linux. Exécutez ce script après la construction et avant d'exécuter votre application et il supprimera le numéro de version des fichiers de projet. Suivez le lien pour voir plus d'informations.

    Si vous utilisez un compilateur C++, vous risquez d'obtenir une erreur "références non définies" dans vos fonctions C. Utilisez extern "C" {} pour éviter cela (voir "Changement de nom C++" pour plus d'informations). Enfin, n'oubliez pas d'inclure l'autorisation d'utiliser le réseau dans le fichier manifeste.