2012-01-30 9 views
5

पर एंड्रॉइड एनडीके के लिए बाहरी ओपनएसएसएल लाइब्रेरी बनाने में असमर्थ मुझे एंड्रॉइड एप्लिकेशन के लिए नवीनतम ओपनएसएसएल (1.0.0 जी) बनाने की जरूरत है। मैं https://github.com/fries/android-external-openssl द्वारा दिए गए उदाहरण का पालन करने की कोशिश कर रहा हूं, लेकिन मैं इसे अभी नहीं बना सकता।विंडोज/सिग्विन

मैं एक पूर्ण और हालिया सिगविन के साथ विंडोज 7 प्रोफेशनल (64-बिट) चला रहा हूं। मैंने एंड्रॉइड एसडीके और एनडीके स्थापित किया है, और मैं एनडीके के हैलो-जेनी नमूना एप्लिकेशन को सफलतापूर्वक बना और चला सकता हूं।

मैंने एक नया नमूना एनडीके ऐप बनाया है जिसे हैलो-ओपनएसएल कहा जाता है। इसकी jni निर्देशिका में, मैंने openssl निर्देशिका बनाई है। वहाँ, मैं https://github.com/fries/android-external-openssl/zipball/master अनज़िप, जो मुझे सी के तहत इस वृक्ष संरचना दिया: \ एंड्रॉयड \ android-NDK \ नमूने \ हैलो-openssl:

jni 
+- openssl 
    +- apps 
    +- crypto 
    +- include 
     +- openssl 
    +- ssl 

मैं तो JNI में Android.mk फ़ाइल को संशोधित OpenSSL फ़ाइलों को शामिल करने की कोशिश में निर्देशिका:

subdirs := $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk, \ 
    openssl \ 
)) 

include $(subdirs) 

अब जब मैं NDK-निर्माण पर अमल, यह कई ग फ़ाइलों को संकलित करता है, लेकिन फिर जल्दी से विफल रहता है:

Compile thumb : crypto <= cryptlib.c 
In file included from jni/openssl/crypto/cryptlib.c:117: 
jni/openssl/crypto/cryptlib.h:65:18: error: e_os.h: No such file or directory 
jni/openssl/crypto/cryptlib.h:72:28: error: openssl/crypto.h: No such file or directory 

मुझे http://osdir.com/ml/android-ndk/2010-07/msg00424.html मिला, जो मुझे क्रिप्टो/एंड्रॉइड.एमके में " जेनी और जेनी/उपर्युक्त LOCAL_C_INCLUDES में शामिल" करने के लिए कहता है, लेकिन मैं इसे प्राप्त करने के लिए उपयोग किए जाने वाले वाक्यविन्यास को नहीं समझ सकता।

मैं यह भी नहीं समझ सकता कि मेरे पास सही निर्देशिका संरचना है।

मैं ईमानदारी से किसी भी मदद की सराहना करता हूं जो पेशकश की जा सकती है।

धन्यवाद!

उत्तर

12

मैंने https://github.com/fries/android-external-openssl को छोड़कर और https://github.com/guardianproject/openssl-android का उपयोग करके इस समस्या को हल किया।

यह एक हालिया ओपनएसएसएल (1.0.0 ए) पर आधारित है, और यह बिना किसी संशोधन के एनडीके में बनाता है।

ध्यान दें कि एंड्रॉइड ऐप में इन पुस्तकालयों का उपयोग करने के लिए, आपको उनका नाम बदलना होगा। यदि आप अपने ऐप में परिणामी libssl.so और libcrypto.so को शामिल करते हैं, तो System.LoadLibrary ("crypto") और System.LoadLibrary ("ssl") पर कॉल करें, आपको एंड्रॉइड सिस्टम में ओपनएसएसएल लाइब्रेरीज़ शामिल नहीं होंगे, न कि आपके कस्टम पुस्तकालयों।

ऐसा करने के लिए, बस एक पूर्ण-शब्द खोज करें और प्रत्येक Android.mk (यानी, in/crypto, /) में "libssl" -> "libsslx", और "libcrypto" -> "libcryptox") को प्रतिस्थापित करें (यानी, in/crypto,/एसएसएल, और/एप्स)।

फिर अपने Android एप्लिकेशन में, SystemLoadLibrary ("cryptox") और System.LoadLibrary ("sslx") कॉल

+0

हैलो, मैं एक ही बात के रूप में तुमने किया था, मैं openssl-एंड्रॉयड इस्तेमाल किया करने के लिए कोशिश कर रहा हूँ, सूत्रों का निर्माण किया और मेरी .so फाइलें प्राप्त की लेकिन मुझे अपनी परियोजना में इसका उपयोग करते समय समस्याएं आ रही हैं, मैंने इन पुस्तकालयों का उपयोग करते हुए .c फ़ाइल लिखा है, इसे मेरे जेनी फ़ोल्डर में रखा है और एक एंड्रॉइड.एमके फ़ाइल लिखा है जिसमें मैं 2 और साझा करता हूं पुस्तकालय, सबकुछ अच्छी तरह से संकलित करता है लेकिन एक असंतुष्ट लिंक्स त्रुटि के साथ रनटाइम पर दुर्घटनाग्रस्त हो जाता है, अगर हम बात कर सकते तो यह बहुत अच्छा होगा। – onizukaek

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

  • कोई संबंधित समस्या नहीं^_^