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

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

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

अपने Android Studio प्रोजेक्ट में किसी मौजूदा ndk-build लाइब्रेरी को इंपोर्ट करने के लिए, 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 कोड से अपने नेटिव फ़ंक्शन ऐक्सेस करें. अपना ऐप्लिकेशन बनाने और चलाने के लिए, चालू करें चलाएं फिर मेन्यू बार से ऐप चलाएं पर क्लिक करें.

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

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

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

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

इन कॉम्पोनेंट को इंस्टॉल करने के बारे में जानकारी पाने के लिए, एनडीके और सीमेकिंग टूल को इंस्टॉल और कॉन्फ़िगर करना देखें.

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

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

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

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

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

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

cpp ग्रुप में, आपको अपने प्रोजेक्ट का हिस्सा नए प्रोजेक्ट के लिए, 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, और उसे आपके मॉड्यूल की रूट डायरेक्ट्री में रख देता है. इस बिल्ड स्क्रिप्ट के कॉन्टेंट के बारे में ज़्यादा जानने के लिए, पढ़ें C Maker को कॉन्फ़िगर करें.

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

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

  1. अपनी एक्सटर्नल बिल्ड स्क्रिप्ट पर कॉल ग्रेड करें, 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 विश्लेषक का इस्तेमाल करें:

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

    दूसरी इमेज. APK विश्लेषक का इस्तेमाल करके, नेटिव लाइब्रेरी ढूंढें.

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

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

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

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

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

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

अन्य संसाधन

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

कोड लैब

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