2010-06-15 16 views
7

मैं एंड्रॉइड एनडीके का उपयोग करके अपने एंड्रॉइड एप्लिकेशन में ओपनस्ल लाइब्रेरी को एम्बेड करने की कोशिश कर रहा हूं, लेकिन मुझे नहीं पता कि वास्तव में उस लाइब्रेरी का उपयोग कैसे करें और इसलिए कोई भी मुझे बता सकता है कि इसका उपयोग कैसे करें कि कृपया ....... मेरे संदर्भ के लिए एक स्रोत कोड भेजएंड्रॉइड एप्लिकेशन में ओपनएसएसएल लाइब्रेरी का उपयोग कैसे करें

संबंधित:

How to build OpenSSL on Android/Linux ?

उत्तर

3

आप इस की कोशिश की है, openssl कि एंड्रॉयड में शामिल है की अपनी एक स्टैंडअलोन निर्माण: https://github.com/fries/android-external-openssl/blob/master/README.android

+0

हम वास्तव में इस के अपने संस्करण अब बनाए रखने: –

+0

हम openssl guardianproject में प्रदान की निर्माण का उपयोग कर रहे https://github.com/guardianproject/android-ffmpeg .. मैं अब अपग्रेड करने के लिए कोशिश कर रहा हूँ हालिया एंड्रॉइड प्लेस्टोर सुरक्षा चेतावनी के कारण openssl संस्करण। मैंने रीडेमे फ़ाइल में दिए गए चरणों का पालन किया लेकिन मैं इस पर अटक गया: 5) बिल्डिंग से पहले सफाई: m -j16 clean-libcrypto clean-libssl clean-opensl clean-ssltest। मेरे ज्ञान एम और मिमी के लिए उपलब्ध हैं जब आप स्रोत से एंड्रॉइड बनाने के लिए सेटअप करते हैं, तो मुझे m: कमांड नहीं मिला और एमएम के लिए अगले चरण में मिलता है। कोई भी मदद बहुत ही सराहनीय होगी! – Nonos

+0

@Nonos क्या आपको OpenSSL के संस्करण को अपडेट करने का कोई समाधान मिला? मैं भी चरण 5 में फंस गया हूं। हेर्टे मेरा [प्रश्न] है (http://stackoverflow.com/questions/36493508/how-to-update-openssl-version-in-csipsimple) यदि आप मेरी मदद कर सकते हैं। –

2

मैं Android के साथ OpenSSL का उपयोग कर के बारे में कई सुझाव दिए गए वर्णन करेंगे:

  1. यह NDK उपकरण का उपयोग कर 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. ndk से अपनी लाइब्रेरी के साथ इन पुस्तकालयों (एसएसएल और क्रिप्टो) का उपयोग करने के लिए, आपको jni फ़ोल्डर में अतिरिक्त * .mk फ़ाइलों को बनाने की आवश्यकता है। उदाहरण के लिए:

    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 ... के साथ सामना करना पड़ेगा तो शायद इसका मतलब है कि आपकी लाइब्रेरी में संस्करण संख्या के साथ सोनम है। AFAIK एनएनडी इस समय इस तरह के पुस्तकालयों के साथ काम करने में असमर्थ है। वहाँ एक समाधान (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 स्ट्रिंग प्रतिस्थापन उपकरण है। बिल्डिंग के बाद और अपना एप्लिकेशन चलाने से पहले इस स्क्रिप्ट को चलाएं और यह प्रोजेक्ट फ़ाइलों से संस्करण संख्या हटा देगा। अधिक जानकारी देखने के लिए लिंक का पालन करें।

    यदि आप सी ++ कंपाइलर का उपयोग करते हैं तो आपको अपने सी कार्यों में "अपरिभाषित संदर्भ" त्रुटि मिल सकती है। इससे बचने के लिए extern "C" {} का उपयोग करें (अधिक जानकारी के लिए "सी ++ नाम मैंगलिंग" देखें)।

  4. आखिरकार मैनिफेस्ट में नेटवर्क का उपयोग करने की अनुमति शामिल करना न भूलें।

संबंधित मुद्दे