अपने प्रोजेक्ट में C और C++ कोड जोड़ना

अपने Android प्रोजेक्ट में C और C++ कोड जोड़ने के लिए, कोड को अपने प्रोजेक्ट मॉड्यूल में मौजूद cpp डायरेक्ट्री में रखें. प्रोजेक्ट बनाते समय, इस कोड को नेटिव लाइब्रेरी में कंपाइल किया जाता है. Gradle, इस लाइब्रेरी को आपके ऐप्लिकेशन के साथ पैकेज कर सकता है. इसके बाद, आपका Java या Kotlin कोड, Java नेटिव इंटरफ़ेस (जेएनआई) के ज़रिए आपकी नेटिव लाइब्रेरी में मौजूद फ़ंक्शन को कॉल कर सकता है. JNI फ़्रेमवर्क का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, Android के लिए JNI से जुड़ी सलाह पढ़ें.

Android Studio, CMake के साथ काम करता है. यह क्रॉस-प्लैटफ़ॉर्म प्रोजेक्ट के लिए फ़ायदेमंद है. Android Studio, ndk-build के साथ भी काम करता है. यह CMake से ज़्यादा तेज़ हो सकता है, लेकिन सिर्फ़ Android के साथ काम करता है. फ़िलहाल, एक ही मॉड्यूल में CMake और ndk-build, दोनों का इस्तेमाल नहीं किया जा सकता.

किसी मौजूदा ndk-build लाइब्रेरी को अपने Android Studio प्रोजेक्ट में इंपोर्ट करने के लिए, Gradle को अपने नेटिव लाइब्रेरी प्रोजेक्ट से लिंक करने का तरीका जानें.

इस पेज पर, आपको ज़रूरी बिल्ड टूल के साथ Android Studio सेट अप करने, C/C++ सपोर्ट के साथ नया प्रोजेक्ट बनाने, और अपने प्रोजेक्ट में नई C/C++ फ़ाइलें जोड़ने का तरीका बताया गया है.

अगर आपको किसी मौजूदा प्रोजेक्ट में नेटिव कोड जोड़ना है, तो यह तरीका अपनाएं:

  1. नई नेटिव सोर्स फ़ाइलें बनाएं और उन फ़ाइलों को अपने Android Studio प्रोजेक्ट में जोड़ें.
    • अगर आपके पास पहले से ही नेटिव कोड है या आपको पहले से बनी हुई नेटिव लाइब्रेरी इंपोर्ट करनी है, तो इस चरण को छोड़ दें.
  2. CMake को कॉन्फ़िगर करें, ताकि वह आपके नेटिव सोर्स कोड को लाइब्रेरी में बदल सके. अगर आपको पहले से बनी हुई या प्लैटफ़ॉर्म लाइब्रेरी इंपोर्ट और लिंक करनी हैं, तो यह बिल्ड स्क्रिप्ट ज़रूरी है.
    • अगर आपके पास कोई ऐसी नेटिव लाइब्रेरी है जिसमें पहले से ही CMakeLists.txt बिल्ड स्क्रिप्ट मौजूद है या जो ndk-build का इस्तेमाल करती है और जिसमें Android.mk बिल्ड स्क्रिप्ट शामिल है, तो इस चरण को छोड़ दें.
  3. अपनी CMake या ndk-build स्क्रिप्ट फ़ाइल का पाथ देकर, Gradle को कॉन्फ़िगर करें. Gradle, बिल्ड स्क्रिप्ट का इस्तेमाल करके सोर्स कोड को आपके Android Studio प्रोजेक्ट में इंपोर्ट करता है. साथ ही, आपकी नेटिव लाइब्रेरी को ऐप्लिकेशन में पैकेज करता है.

प्रोजेक्ट को कॉन्फ़िगर करने के बाद, JNI फ़्रेमवर्क का इस्तेमाल करके, Java या Kotlin कोड से अपने नेटिव फ़ंक्शन ऐक्सेस करें. ऐप्लिकेशन बनाने और उसे चलाने के लिए, Run run फिर मेन्यू बार से run app पर क्लिक करें.

ध्यान दें: अगर आपके मौजूदा प्रोजेक्ट में बंद हो चुके ndkCompile टूल का इस्तेमाल किया जा रहा है, तो CMake या ndk-build का इस्तेमाल करें.

NDK और बिल्ड टूल डाउनलोड करना

अपने ऐप्लिकेशन के लिए नेटिव कोड को कंपाइल और डीबग करने के लिए, आपको इन कॉम्पोनेंट की ज़रूरत होगी:

  • Android नेटिव डेवलपमेंट किट (NDK): यह टूलसेट, Android के साथ C और C++ कोड का इस्तेमाल करने की सुविधा देता है. एनडीके, प्लैटफ़ॉर्म लाइब्रेरी उपलब्ध कराता है. इनकी मदद से, नेटिव ऐक्टिविटी मैनेज की जा सकती हैं. साथ ही, सेंसर और टच इनपुट जैसे फ़िज़िकल डिवाइस कॉम्पोनेंट ऐक्सेस किए जा सकते हैं.
  • CMake: यह एक बाहरी बिल्ड टूल है. यह Gradle के साथ मिलकर, आपकी नेटिव लाइब्रेरी बनाता है. अगर आपको सिर्फ़ ndk-build का इस्तेमाल करना है, तो आपको इस कॉम्पोनेंट की ज़रूरत नहीं है.
  • LLDB: यह Android Studio में मौजूद डीबगर है. यह नेटिव कोड को डीबग करता है.

इन कॉम्पोनेंट को इंस्टॉल करने के बारे में जानने के लिए, NDK और CMake इंस्टॉल और कॉन्फ़िगर करना लेख पढ़ें.

C/C++ के साथ काम करने वाला नया प्रोजेक्ट बनाना

नेटिव कोड के साथ नया प्रोजेक्ट बनाने की प्रोसेस, Android Studio में कोई अन्य प्रोजेक्ट बनाने की प्रोसेस जैसी ही होती है. हालांकि, इसमें एक अतिरिक्त चरण शामिल होता है:

  1. विज़र्ड के अपना प्रोजेक्ट चुनें सेक्शन में जाकर, Native C++ प्रोजेक्ट टाइप चुनें.
  2. आगे बढ़ें पर क्लिक करें.
  3. विज़र्ड के अगले सेक्शन में मौजूद अन्य सभी फ़ील्ड भरें.
  4. आगे बढ़ें पर क्लिक करें.
  5. विज़र्ड के C++ सपोर्ट को पसंद के मुताबिक बनाएं सेक्शन में जाकर, C++ स्टैंडर्ड फ़ील्ड की मदद से अपने प्रोजेक्ट को पसंद के मुताबिक बनाया जा सकता है.
    • ड्रॉप-डाउन सूची का इस्तेमाल करके, C++ के उस स्टैंडर्ड को चुनें जिसका आपको इस्तेमाल करना है. टूलचेन डिफ़ॉल्ट को चुनने पर, CMake की डिफ़ॉल्ट सेटिंग का इस्तेमाल किया जाता है.
  6. पूरा करें पर क्लिक करें.

Android Studio में नया प्रोजेक्ट बन जाने के बाद, IDE की बाईं ओर मौजूद प्रोजेक्ट पैन खोलें. इसके बाद, मेन्यू से Android व्यू चुनें. पहली इमेज में दिखाया गया है कि Android Studio, cpp ग्रुप जोड़ता है:

पहली इमेज. आपके नेटिव सोर्स और बाहरी बिल्ड स्क्रिप्ट के लिए Android व्यू ग्रुप.

ध्यान दें: इस व्यू में, डिस्क पर मौजूद फ़ाइलों का असल क्रम नहीं दिखता. हालांकि, इसमें मिलती-जुलती फ़ाइलों को ग्रुप किया जाता है, ताकि आपको अपने प्रोजेक्ट में आसानी से नेविगेट करने में मदद मिल सके.

cpp ग्रुप में, आपको सभी नेटिव सोर्स फ़ाइलें, हेडर, CMake या ndk-build के लिए बिल्ड स्क्रिप्ट, और पहले से बनी लाइब्रेरी मिलेंगी. ये सभी आपके प्रोजेक्ट का हिस्सा हैं. नए प्रोजेक्ट के लिए, Android Studio एक सैंपल C++ सोर्स फ़ाइल, native-lib.cpp बनाता है और उसे आपके ऐप्लिकेशन मॉड्यूल की src/main/cpp/ डायरेक्ट्री में रखता है. इस सैंपल कोड में, एक सामान्य C++ फ़ंक्शन stringFromJNI() दिया गया है. यह फ़ंक्शन, स्ट्रिंग "Hello from C++" दिखाता है. नई नेटिव सोर्स फ़ाइलें बनाने के तरीके के बारे में सेक्शन में जाकर, अपने प्रोजेक्ट में अतिरिक्त सोर्स फ़ाइलें जोड़ने का तरीका जानें.

जिस तरह build.gradle फ़ाइलें, Gradle को यह निर्देश देती हैं कि आपके ऐप्लिकेशन को कैसे बनाया जाए उसी तरह CMake और ndk-build को यह बताने के लिए बिल्ड स्क्रिप्ट की ज़रूरत होती है कि आपकी नेटिव लाइब्रेरी को कैसे बनाया जाए. नए प्रोजेक्ट के लिए, Android Studio एक CMake बिल्ड स्क्रिप्टCMakeLists.txt बनाता है और उसे आपके मॉड्यूल की रूट डायरेक्ट्री में रखता है. इस बिल्ड स्क्रिप्ट के कॉन्टेंट के बारे में ज़्यादा जानने के लिए, CMake कॉन्फ़िगर करना लेख पढ़ें.

सैंपल ऐप्लिकेशन बनाना और उसे चलाना

चलाएं run फिर मेन्यू बार से run app पर क्लिक करने पर, Android Studio एक ऐसा ऐप्लिकेशन बनाता है और उसे लॉन्च करता है जो आपके Android डिवाइस या एम्युलेटर पर "Hello from C++" टेक्स्ट दिखाता है. यहां दी गई खास जानकारी में, सैंपल ऐप्लिकेशन को बनाने और चलाने के लिए होने वाले इवेंट के बारे में बताया गया है:

  1. Gradle, आपकी बाहरी बिल्ड स्क्रिप्ट को कॉल करता है, CMakeLists.txt.
  2. CMake, C++ सोर्स फ़ाइल native-lib.cpp को कंपाइल करने के लिए, बिल्ड स्क्रिप्ट में दिए गए निर्देशों का पालन करता है. इसके बाद, इसे शेयर की गई ऑब्जेक्ट लाइब्रेरी में बदलता है और इसका नाम libnative-lib.so रखता है. इसके बाद, Gradle इसे ऐप्लिकेशन में पैकेज करता है.
  3. रनटाइम के दौरान, ऐप्लिकेशन का MainActivity, System.loadLibrary() का इस्तेमाल करके नेटिव लाइब्रेरी लोड करता है. लाइब्रेरी का नेटिव फ़ंक्शन, stringFromJNI(), अब ऐप्लिकेशन के लिए उपलब्ध है.
  4. MainActivity.onCreate(), stringFromJNI() को कॉल करता है, जो "Hello from C++" दिखाता है और इसका इस्तेमाल TextView को अपडेट करने के लिए करता है.

यह पुष्टि करने के लिए कि Gradle, ऐप्लिकेशन में नेटिव लाइब्रेरी को पैकेज करता है, APK Analyzer का इस्तेमाल करें:

  1. बनाएं > बंडल / APK बनाएं > APK बनाएं को चुनें.
  2. बनाएं > APK का विश्लेषण करें को चुनें.
  3. app/build/outputs/ डायरेक्ट्री से APK या AAB चुनें और OK पर क्लिक करें.
  4. इमेज 2 में दिखाए गए तरीके से, lib/<ABI>/ में जाकर APK Analyzer विंडो में libnative-lib.so देखा जा सकता है.

    दूसरी इमेज. APK Analyzer का इस्तेमाल करके, नेटिव लाइब्रेरी का पता लगाएं.

अहम जानकारी: अगर आपको नेटिव कोड का इस्तेमाल करने वाले अन्य Android ऐप्लिकेशन के साथ एक्सपेरिमेंट करना है, तो फ़ाइल > नया > सैंपल इंपोर्ट करें पर क्लिक करें. इसके बाद, Ndk सूची से कोई सैंपल प्रोजेक्ट चुनें.

नई C/C++ सोर्स फ़ाइलें बनाना

किसी मौजूदा प्रोजेक्ट में नई C/C++ सोर्स फ़ाइलें जोड़ने के लिए, यह तरीका अपनाएं:

  1. अगर आपके ऐप्लिकेशन के मुख्य सोर्स सेट में पहले से कोई cpp/ डायरेक्ट्री नहीं है, तो उसे इस तरह बनाएं:
    1. आईडीई की बाईं ओर मौजूद प्रोजेक्ट पैन खोलें. इसके बाद, मेन्यू से प्रोजेक्ट व्यू चुनें.
    2. your-module > src पर जाएं.
    3. main डायरेक्ट्री पर राइट क्लिक करें और New > Directory चुनें.
    4. डायरेक्ट्री के नाम के तौर पर cpp डालें और ठीक है पर क्लिक करें.

  2. cpp/ डायरेक्ट्री पर राइट क्लिक करें और New > C/C++ Source File चुनें.
  3. अपनी सोर्स फ़ाइल के लिए कोई नाम डालें. जैसे, native-lib.
  4. टाइप मेन्यू से, अपनी सोर्स फ़ाइल के लिए फ़ाइल एक्सटेंशन चुनें. जैसे, .cpp.
    • मेन्यू में अन्य फ़ाइल टाइप जोड़ने के लिए, फ़ाइल टाइप में बदलाव करें पर क्लिक करें. जैसे, .cxx या .hxx. स्क्रीन पर दिखने वाले नए फ़ाइल एक्सटेंशन डायलॉग बॉक्स में, सोर्स एक्सटेंशन और हेडर एक्सटेंशन मेन्यू से कोई दूसरा फ़ाइल एक्सटेंशन चुनें. इसके बाद, ठीक है पर क्लिक करें.
  5. हेडर फ़ाइल बनाने के लिए, इससे जुड़ी हेडर फ़ाइल बनाएं चेकबॉक्स को चुनें.
  6. ठीक है पर क्लिक करें.

अपने प्रोजेक्ट में नई C/C++ फ़ाइलें जोड़ने के बाद भी, आपको CMake को कॉन्फ़िगर करना होगा, ताकि फ़ाइलों को आपकी नेटिव लाइब्रेरी में शामिल किया जा सके.

अन्य संसाधन

अपने ऐप्लिकेशन में C/C++ कोड इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, यह संसाधन देखें.

कोडलैब

  • Android Studio की मदद से Hello-CMake बनाएं इस कोडलैब में, Android Studio CMake टेंप्लेट का इस्तेमाल करके, Android NDK प्रोजेक्ट डेवलपमेंट शुरू करने का तरीका बताया गया है.