एंड्रॉइड नेटिव डेवलपमेंट किट (NDK) क्या है?


84

Android NDK (मूल विकास किट) क्या है? कोई इसका उपयोग कैसे कर सकता है? इसका उपयोग क्यों करना चाहिए?


1
इस लिंक को आज़माएं: NDK क्या है?
हंस ओल्सन

जवाबों:


93

NDK (मूल विकास किट) एक उपकरण है जो आपको Android उपकरणों के लिए C / C ++ में प्रोग्राम करने की अनुमति देता है। यह एसडीके के साथ एकीकृत करने का इरादा है (यह एक "साथी उपकरण" के रूप में वर्णित है) और केवल एक परियोजना के प्रदर्शन-महत्वपूर्ण भागों के लिए उपयोग किया जाता है। अधिक जानकारी के लिए यहाँ देखें ।


11
@YoushaAleayoub - एक एंड्रॉइड डिवाइस पर, जावा वर्चुअल मशीन में जावा रन में लिखा कोड, एक सिस्टम-सप्लाई प्रोग्राम है जो जावा बाइट कोड की व्याख्या करता है। कोड जो C / C ++ में लिखा गया है वह मशीन निर्देशों में संकलित किया गया है जो सीधे सीपीयू द्वारा चलाया जाता है। इस बाद वाले कोड को "देशी" कोड कहा जाता है क्योंकि यह सीपीयू का मूल है। ध्यान दें कि विभिन्न सीपीयू को अलग-अलग मूल कोड निर्देशों की आवश्यकता होती है। इसलिए, जब आप NDK का उपयोग करते हैं तो आपके पास एकल हार्डवेयर प्रकार के लिए या सीपीयू की एक विस्तृत श्रृंखला के लिए कोड जनरेट करने का विकल्प होता है, जो सभी आपके आवेदन के लिए .apk फ़ाइल में पैक किए जाते हैं।
टेड हॉप

इसलिए, अगर मैं Android पर OpenCV का उपयोग करना चाहता हूं, तो क्या इसका C ++ संस्करण उपयोग करना बेहतर है?
user8663682

@ user8663682 - मैं Android संस्करण का उपयोग करने की सलाह दूंगा । इसके लिए अभी भी NDK के उपयोग की आवश्यकता है, लेकिन एंड्रॉइड ऐप्स की क्षमताओं को उजागर करने का सारा काम पहले ही किया जा चुका है।
टेड होप

56

NDK एप्लिकेशन प्रदर्शन में सुधार कर सकता है। यह आमतौर पर कई प्रोसेसर-बाध्य अनुप्रयोगों के लिए सच है। कई मल्टीमीडिया एप्लिकेशन और वीडियो गेम प्रोसेसर-गहन कार्यों के लिए मूल कोड का उपयोग करते हैं। प्रदर्शन में सुधार तीन स्रोतों से आ सकता है। सबसे पहले, मूल कोड को एक बाइनरी कोड में संकलित किया जाता है और सीधे ओएस पर चलाया जाता है, जबकि जावा कोड को जावा बाइट-कोड में अनुवादित किया जाता है और इसकी व्याख्या डाल्विक वर्चुअल मशीन (वीएम) द्वारा की जाती है । एंड्रॉइड 2.2 या उच्चतर पर, प्रोग्राम को चलाने के दौरान जावा बाइट कोड का विश्लेषण और अनुकूलन करने के लिए डाल्विक वीएम में एक जस्ट-इन-टाइम (जेआईटी) कंपाइलर जोड़ा जाता है (उदाहरण के लिए, जेआईटी बाइट-कोड के एक हिस्से को संकलित कर सकता है। इसके निष्पादन से पहले बाइनरी कोड)। लेकिन कई मामलों में, मूल कोड अभी भी जावा कोड से अधिक तेजी से चलता है।

जावा कोड Android पर Dalvik VM द्वारा चलाया जाता है। Dalvik VM को विशेष रूप से विवश हार्डवेयर संसाधनों (मेमोरी स्पेस, प्रोसेसर गति, और इसी तरह) के साथ सिस्टम के लिए डिज़ाइन किया गया है।

NDK में प्रदर्शन सुधार के लिए दूसरा स्रोत यह है कि मूल कोड डेवलपर्स को कुछ एसडीआर सुविधाओं का उपयोग करने की अनुमति देता है जो एंड्रॉइड एसडीके पर पहुंच योग्य नहीं हैं, जैसे कि नीयन, एक एकल निर्देश एकाधिक डेटा (सिमडी) तकनीक, जिससे कई डेटा तत्वों को संसाधित किया जा सकता है। समान्तर में। एक विशेष कोडिंग कार्य उदाहरण वीडियो फ्रेम या फोटो के लिए रंग रूपांतरण है। मान लीजिए कि हम 1920x1280 पिक्सल की तस्वीर को RGB कलर स्पेस से YCbCr कलर स्पेस में बदलना चाहते हैं। भोली दृष्टिकोण हर पिक्सेल में रूपांतरण सूत्र लागू करने के लिए है (यानी, दो मिलियन से अधिक पिक्सेल)। नियॉन के साथ, हम प्रसंस्करण समय को कम करने के लिए एक समय में कई पिक्सेल संसाधित कर सकते हैं।

तीसरा पहलू यह है कि हम असेंबली स्तर पर महत्वपूर्ण कोड को ऑप्टिमाइज़ कर सकते हैं, जो डेस्कटॉप सॉफ्टवेयर डेवलपमेंट में एक आम बात है।

हानि

NDK सीधे Android SDK में उपलब्ध बहुत सारे API तक नहीं पहुँच सकता है, और NDK में विकसित करना आपके आवेदन में हमेशा अतिरिक्त जटिलता का परिचय देगा।


19

एंड्रॉइड एनडीके एक साथी उपकरण है जिसका उपयोग केवल एंड्रॉइड एसडीके के साथ संयोजन में किया जाता है जो एप्लिकेशन डेवलपर्स को मूल (सी / सी ++) कोड के उपयोग से अपने ऐप के प्रदर्शन-महत्वपूर्ण भागों का निर्माण करने की अनुमति देता है।

यह मौजूदा कोड के पुन: उपयोग और बढ़ी हुई गति के रूप में लाभ प्रदान करता है।

कृपया नीचे दिए गए लिंक के माध्यम से जाना।

लिंक-1

लिंक -2

लिंक -3


8

एंड्रॉयड NDK का एक साथी उपकरण है एंड्रॉयड एसडीके आप मूल कोड में अपने एप्लिकेशन के प्रदर्शन के लिए महत्वपूर्ण भागों का निर्माण करने देता है। यह हेडर और लाइब्रेरी प्रदान करता है जो आपको गतिविधियों का निर्माण करने, उपयोगकर्ता इनपुट को संभालने, हार्डवेयर सेंसर का उपयोग करने, एप्लिकेशन संसाधनों का उपयोग करने, और अधिक, जब C या C ++ में प्रोग्रामिंग करते हैं । यदि आप मूल कोड लिखते हैं, तो आपके एप्लिकेशन अभी भी एक .apk फ़ाइल में पैक किए जाते हैं और वे अभी भी डिवाइस पर एक वर्चुअल मशीन के अंदर चलते हैं। मौलिक Android एप्लिकेशन मॉडल नहीं बदलता है।

निम्नलिखित लिंक भी आपके प्रश्न का उत्तर देते हैं:

NDK क्या है?

जब नेटिव कोड में विकसित करना है

NDK डाउनलोड करें

NDK ऐप का निर्माण कैसे करें

NDK के साथ कैसे काम करें

Android NDK के लिए 10 टिप्स


3

Android NDK एक टूलसेट है जो आपको उन घटकों को एम्बेड करने देता है जो आपके एंड्रॉइड एप्लिकेशन में मूल कोड का उपयोग करते हैं।

एंड्रॉइड एप्लिकेशन डेल्विक वर्चुअल मशीन में चलते हैं। एनडीके आपको देशी-कोड भाषाओं जैसे सी और सी ++ का उपयोग करके अपने अनुप्रयोगों के कुछ हिस्सों को लागू करने की अनुमति देता है। यह कुछ वर्गों के अनुप्रयोगों को लाभ प्रदान कर सकता है, मौजूदा कोड के पुन: उपयोग के रूप में और कुछ मामलों में गति में वृद्धि।

स्रोत: http://developer.android.com/sdk/ndk/overview.html

एंड्रॉइड NDK एंड्रॉइड एसडीके का एक साथी उपकरण है जो आपको देशी कोड में अपने ऐप्स के प्रदर्शन-महत्वपूर्ण हिस्से का निर्माण करने देता है। यह हेडर और लाइब्रेरी प्रदान करता है जो आपको गतिविधियों का निर्माण करने, उपयोगकर्ता इनपुट को संभालने, हार्डवेयर सेंसर का उपयोग करने, एप्लिकेशन संसाधनों तक पहुंचने, और अधिक, जब C या C ++ में प्रोग्रामिंग करते हैं। यदि आप मूल कोड लिखते हैं, तो आपके एप्लिकेशन अभी भी एक .apk फ़ाइल में पैक किए जाते हैं और वे अभी भी डिवाइस पर एक वर्चुअल मशीन के अंदर चलते हैं। मौलिक एंड्रॉइड एप्लिकेशन मॉडल नहीं बदलता है।

स्रोत: http://developer.android.com/sdk/ndk/index.html


3

NDK सिर्फ एक उपकरण का एक सेट है जो आपको अपने एप्लिकेशन के लिए C / C ++ कोड लिखने की सुविधा देता है। उदाहरण के लिए, आप अपने ऐप में एक महत्वपूर्ण फ़ंक्शन / प्रदर्शन जोड़ना चाहते हैं और आप इसे C / C ++ में लिखना चाहते हैं, फिर ग्रहण करें या कोई अन्य IDE आपको अपना C / C ++ लिखने की अनुमति नहीं देगा और उस स्थिति में आपको NDK का उपयोग करना होगा और इसे अपने ऐप में एकीकृत करना होगा।


2

NDK एक टूलसेट है जो आपको देशी-कोड भाषाओं जैसे C और C ++ का उपयोग करके अपने ऐप के कुछ हिस्सों को लागू करने की अनुमति देता है। .... Checkout this https://developer.android.com/tools/sdk/ndk/index.html


3
यह विवरण पहले से ही स्वीकृत उत्तर में है। आपको कैसे लगता है कि यह एक अलग उत्तर होना चाहिए?
परेश मेयानी

अधिक स्कोर करने की कोशिश में मुझे लगता है :)
दक्ष गर्गस

2

Android NDK (मूल विकास किट)

एंड्रॉइड नेटिव डेवलपमेंट किट (NDK) डेवलपर्स को C / C ++ में कोड लिखने के लिए डेवलपर्स है जो मूल कोड के लिए संकलित करता है

इसका उपयोग क्यों करना चाहिए?

स्रोत कोड को सीधे सीपीयू के लिए मशीन कोड में संकलित किया जाता है (और मध्यवर्ती भाषा में नहीं, जैसा कि जावा के साथ है) तब डेवलपर्स सर्वश्रेष्ठ प्रदर्शन प्राप्त करने में सक्षम होते हैं

कोई इसका उपयोग कैसे कर सकता है?

यहाँ सबसे अच्छा ट्यूटोरियल

https://developer.android.com/ndk/index.html

https://www.androidauthority.com/android-ndk-everything-need-know-677642/

https://www.ntu.edu.sg/home/ehchua/programming/android/Android_NDK.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.