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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

cpp ग्रुप में, आपको अपने प्रोजेक्ट का हिस्सा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, फिर मेन्यू बार से ऐप्लिकेशन चलाएं पर क्लिक करने पर, Android Studio एक ऐप्लिकेशन बनाता है और उसे लॉन्च करता है. यह ऐप्लिकेशन आपके Android डिवाइस या एमुलेटर पर "C++ से नमस्ते" टेक्स्ट दिखाता है. यहां दी गई खास जानकारी में, सैंपल ऐप्लिकेशन को बनाने और चलाने के लिए होने वाले इवेंट के बारे में बताया गया है:

  1. आपकी बाहरी बिल्ड स्क्रिप्ट, CMakeLists.txt पर Gradle कॉल.
  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 Analytics का इस्तेमाल करें:

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

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

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

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

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

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

  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 टेंप्लेट का इस्तेमाल करने का तरीका बताया गया है.