2010-06-15 11 views

cevap

3

bu denediniz, Android dahildir? Openssl onun başına bir yapı: https://github.com/fries/android-external-openssl/blob/master/README.android

+0

biz aslında şimdi bu bizim kendi versiyonunu korumak: https://github.com/guardianproject/android-ffmpeg –

+0

Biz guardianproject sağlanan openssl yapı kullanıyoruz .. ben şimdi yükseltmek için çalışıyorum Bir son Android playstore güvenlik uyarısı nedeniyle openssl sürümü. Benioku dosyasında adımları izledim ama şu noktada takılıyorum: 5) Binadan önce temizleme: m -j16 clean-libcrypto clean-libssl clean-openssl clean-ssltest.Benim bilgi için benim bilgi m ve mm android kaynak oluşturmak için kurulum yaparken, böylece m: komut bulunamadı ve mm için sonraki adımda olsun. Herhangi bir yardım büyük beğeni topluyor! – Nonos

+0

@Nonos OpenSSL sürümünü güncellemek için herhangi bir çözüm buldunuz mu? Ayrıca 5. adımda kaldım. Eğer bana yardım edebilecek olursanız, herte [soru] (http://stackoverflow.com/questions/36493508/how-to-update-openssl-version-in-csipsimple). –

2

Ben Android ile OpenSSL'yi hakkında birkaç tavsiyede bulunacağım: ndk araçlarını kullanarak OpenSSL kütüphanelerini oluşturmak için gerekli olan

  1. , aksi takdirde NDK ile uyumsuz olacaktır. 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 kaynak dizininde çalıştırılacaktır yönetiyor olması beklenir. Bu kütüphaneleri (ssl ve kripto) ndk'den kendi kütüphaneniz ile kullanmak için jni klasöründe ek * .mk dosyaları oluşturmanız gerekir. Örneğin:

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

    ve ana Android.mk içine şunlardır: muhtemelen

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

    ve hataları önlemek için, ondan sonra

    include $(CLEAR_VARS) 
    

    ekleyin. Kütüphaneler libs/armabi ve .apk'a yerleştirilecektir.

  2. could not load library ... needed by ... hatasıyla karşılaşırsanız, büyük olasılıkla kitaplığınızın bir sürüm numarası olan soname içerdiği anlamına gelir. AFAIK ndk şu anda bu tür kütüphanelerle çalışamıyor. Bir geçici çözüm (Dalvik is looking for .so file with '.0' extension - why?) vardır: rpl bir linux string değiştirme aracıdır

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

    . Oluşturduktan sonra ve uygulamanızı çalıştırmadan önce bu betiği çalıştırın ve proje dosyalarından sürüm numarasını kaldıracaktır. Daha fazla bilgi görmek için bağlantıyı takip edin.

    Bir C++ derleyici kullanırsanız, C işlevlerinizde "tanımsız başvurular" hatası alabilirsiniz. Bunu önlemek için extern "C" {} kullanın (daha fazla bilgi için bkz. "C++ ad mangling").

  3. Son olarak, bildirime ağ kullanma iznini dahil etmeyi unutmayın.