2016-01-12 7 views
5

मैं NDKतार JNI फ़ोल्डर

साथ github.com/DrKLO/Telegram/ में तार स्रोत कोड में JNI फ़ोल्डर संकलित करने के लिए कोशिश कर रहा हूँ संकलित करने के लिए कैसे लेकिन जब मैं लिखने NDK फ़ोल्डर की तरह में cmd ​​में NDK-निर्माण कर रहा हूँ:

F:\ndk\android-ndk-r10>ndk-build -C F:\Workspace\Android\Telegram-master-1-12-2016\Telegram-master\TMessagesProj\jni

मैं कुछ त्रुटि मिलती है और libs

नहीं बनाया फ़ोल्डर जब मैं एंड्रॉयड स्टूडियो में NDK पथ जोड़ सकते हैं और JNI फ़ोल्डर जोड़ने के लिए मैन्युअल रूप से एंड्रॉयड स्टूडियो का कहना है कि कुछ हेडर फाइल नहीं मिल सकता है

0,123,

इस question डाउनलोड Cygwin के बाद और इसका इस्तेमाल करते हैं, लेकिन फिर से की तरह यह त्रुटि प्राप्त NDK-निर्माण

$ndkbuild 

[armeabi] SharedLibrary : libtmessages.15.so

process_begin: CreateProcess(........,

F:/ndk/android-ndk-r10/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi /thumb/libgnustl_static.a -lgcc -no-canonical-prefixes -Wl,--no-undefined -Wl,-z ,noexecstack -Wl,-z,relro -Wl,-z,now -LF:/ndk/android-ndk-r10/platforms/android- 9/arch-arm/usr/lib -ljnigraphics -llog -lz -ldl -lc -lm -o F:/Workspace/Android/ Telegram-master-1-12-2016/Telegram-master/TMessagesProj//obj/local/armeabi/libtm essages.15.so, ...) failed

make (e=87): The parameter is incorrect.

make.exe: *** [F:/Workspace/Android/Telegram-master-1-12-2016/Telegram-master/TMessagesProj//obj/local/armeabi/libtmessages.15.so] Error 87

इसे कैसे ठीक?

+2

* कुछ * त्रुटि के लिए आपको * कुछ * ठीक करने की आवश्यकता है। – Drop

+0

अक्सर, एनडीके निर्माण के लिए सिगविन पर स्विच करने से यह हल होने की तुलना में अधिक समस्याएं पैदा करता है। पहले (** ndk-build.cmd ** - आधारित) प्रयास के साथ आप किन त्रुटियों को देखते थे? सभी वास्तविक आदेशों को प्रदर्शित करने के लिए 'ndk-build V = 1' का उपयोग करें क्योंकि वे अनचाहे हैं। –

+0

@AlexCohn घातक त्रुटि: sys/ucontext.h: ऐसी कोई फ़ाइल या निर्देशिका – maoprogrammer

उत्तर

1

बस ऑब्जेक्ट फ़ाइल को हटा दें। पिछली बिल्ड बाधित होने के बाद यह त्रुटि सबसे अधिक संभावना दिखाई दे रही थी और ऑब्जेक्ट फ़ाइल पूरी तरह से उत्पन्न नहीं हुई थी। enter image description here

12

महत्वपूर्ण अपडेट मुद्दा: 3.18 में संस्करण, तार स्रोत परियोजना डाउनलोड करने के बाद, यदि आप JNI फ़ोल्डर में जाएँ तो आप पाएंगे और खाली, libtgvoip नामित फ़ोल्डर आवश्यक फाइलों के साथ भरने के लिए: 1- तार स्रोत के पास जाओ जिथम, गोटो जेनी फ़ोल्डर से और libtgvoip @ eb813e1 फ़ोल्डर पर क्लिक करें (@ मतलब है कि यह एक रिफ्रेंस फ़ोल्डर है)। 2- उस लाइब्रेरी को भी डाउनलोड करें! 3- पहले से चर्चा की गई खाली फ़ोल्डर में अपनी सामग्री की प्रतिलिपि बनाएँ!

अब शुरू करें: यह बहुत आसान है।

1- पर्यावरण पीएटीएच चर में एनडीके निर्देशिका जोड़ें।

2- खुला Android.mk और निम्न पंक्ति जोड़ें: LOCAL_SHORT_COMMANDS: = सच

enter image description here

3- खुला Application.mk और निम्न पंक्ति जोड़ें: APP_SHORT_COMMANDS: = सच

enter image description here

4- व्यवस्थापक के रूप में खुले कमांड प्रॉम्प्ट और इस तरह jni फ़ोल्डर में नेविगेट करें: :

enter image description here

5- सिर्फ NDK-निर्माण आदेश पर अमल

enter image description here

तब होगा NDK (महत्वपूर्ण तार के पिछले संस्करण में आप JNI फ़ोल्डर के बजाय मूल फ़ोल्डर JNI पर नेविगेट करना चाहिए) फ़ाइलों .so निर्माण शुरू:

enter image description here

unt इंतजार आईएल यह कार्य खत्म, शायद कुछ चेतावनियां प्रदर्शित लेकिन महत्वपूर्ण नहीं है। आखिरकार आपके पास सभी साझा लाइब्रेरी होगी (।इसलिए obj निर्देशिका में फ़ाइलों): (महत्वपूर्ण: तार .so फ़ाइलों lib फ़ोल्डर और सब कुछ में पैदा करेगा के पिछले संस्करण में

enter image description here

तो इन फ़ोल्डरों में से प्रत्येक गोटो बनाने के लिए तैयार) है और हटाने के लिए सब कुछ libtmessages.22.so को छोड़कर। एक libs फ़ोल्डर बनाने और नकल है कि यह में तीन निर्देशिका:

enter image description here

बिल्ड और मजा! (org.telegram.messenger.buildVars क्लास में अपने ऐप आईडी और app_hash के साथ चर भरने के लिए याद रखें। read more here)

+0

आपको एंड्रॉइड.एमके फ़ाइल में वास्तव में 'LOCAL_SHORT_COMMANDS: = true' की आवश्यकता नहीं है क्योंकि' APP_SHORT_COMMANDS: = true' पहले से ही सभी मॉड्यूल को कवर करता है। [यहां] देखें (https://developer.android.com/ndk/guides/application_mk.html) – ElegyD

+0

मैंने अभी यह सब किया है लेकिन यह त्रुटि प्राप्त करें और यह नहीं पता कि क्या करना है: त्रुटि: org.xml। sax.SAXParseException; लाइन संख्या: 0; कॉलम संख्या: 0; सीवीसी-पैटर्न-वैध: वैल्यू 'अतिरिक्त; इंटेल - कॉपी; हार्डवेयर_एक्लेरेटेड_एक्सक्यूशन_Manager' पैटर्न 'के संबंध में पहलू-मान्य नहीं है' [a-zA-Z0-9 _ \ -;]] + 'प्रकार' सेगमेंट लिस्ट टाइप 'के लिए। कृपया मेरी सहायता करें – hamid