'Android Gradle प्लग इन' के साथ नेटिव डिपेंडेंसी

एएआर लाइब्रेरी में नेटिव डिपेंडेंसी हो सकती हैं, जो Android Gradle प्लग इन कर सकती है इस्तेमाल करते हैं. एजीपी, एएआर बना सकता है जो कि आपकी स्थानीय लाइब्रेरी को अनुमति देते हैं उपभोक्ताओं को सुरक्षित रखना है.

नेटिव डिपेंडेंसी का इस्तेमाल करना

'Android Gradle प्लग इन 4.0' और इसके बाद के वर्शन में, C/C++ डिपेंडेंसी यहां से इंपोर्ट की जा सकती हैं आपकी build.gradle फ़ाइल में लिंक किए गए एएआर. Gradle अपने-आप इन्हें नेटिव बिल्ड सिस्टम में उपलब्ध है, लेकिन आपका बिल्ड सिस्टम कॉन्फ़िगर होना चाहिए इंपोर्ट की गई लाइब्रेरी और हेडर का इस्तेमाल करने के लिए. C/C++ डिपेंडेंसी इसे एएआर के तौर पर डिस्ट्रिब्यूट किया जाता है, तो जेनरिक एएआर के बारे में नीचे दिए गए लिंक मददगार साबित हो सकते हैं:

  • सामान्य एएआर दस्तावेज़ों के लिए Android लाइब्रेरी बनाना और उसे अपने प्रोजेक्ट में कैसे इंटिग्रेट करें, खास तौर पर तब, जब आपको AAR को लोकल C/C++ डिपेंडेंसी के तौर पर इस्तेमाल करना.
  • अपनी build.gradle फ़ाइल में डिपेंडेंसी जोड़ने के बारे में जानकारी पाने के लिए, बिल्ड डिपेंडेंसी जोड़ें खास तौर पर, रिमोट डिपेंडेंसी के लिए.

यह दस्तावेज़ आपके नेटिव बिल्ड सिस्टम को कॉन्फ़िगर करने के तरीके पर फ़ोकस करता है. साथ ही, यह मान लेता है कि आपने आपके प्रोजेक्ट के Gradle बिल्ड एनवायरमेंट में C/C++ डिपेंडेंसी AAR जोड़ा गया.

एएआर में नेटिव डिपेंडेंसी

आपके Gradle मॉड्यूल की AAR डिपेंडेंसी, नेटिव लाइब्रेरी को अनुमति दे सकती हैं, ताकि आपका ऐप्लिकेशन. एएआर के अंदर, prefab डायरेक्ट्री में प्रीफ़ैब होता है पैकेज जिसमें नेटिव डिपेंडेंसी के हेडर और लाइब्रेरी शामिल हैं.

हर डिपेंडेंसी से ज़्यादा से ज़्यादा एक Prefab पैकेज खुल सकता है, जिसमें एक या ज़्यादा मॉड्यूल. Prefab मॉड्यूल एक सिंगल लाइब्रेरी है, जो कि शेयर की गई, स्टैटिक या सिर्फ़ हेडर वाली लाइब्रेरी.

लाइब्रेरी का इस्तेमाल करने के लिए, पैकेज और मॉड्यूल के नाम पता होने चाहिए. इन्होंने बदलाव किया है कंवेंशन: पैकेज का नाम, Maven आर्टफ़ैक्ट के नाम और मॉड्यूल से मैच करेगा नाम C/C++ लाइब्रेरी के नाम से मेल खाएगा, लेकिन यह ज़रूरी नहीं है. सहायता टीम से संपर्क करें डिपेंडेंसी के दस्तावेज़ की मदद से तय करें कि यह किन नामों का इस्तेमाल करती है.

बिल्ड सिस्टम कॉन्फ़िगरेशन

यह ज़रूरी है कि आपके 'Android Gradle मॉड्यूल' के लिए prefab सुविधा चालू हो.

ऐसा करने के लिए, अपने मॉड्यूल के android ब्लॉक में नीचे दी गई चीज़ें जोड़ें build.gradle फ़ाइल:

Kotlin

buildFeatures {
  prefab = true
}

ग्रूवी

buildFeatures {
  prefab true
}

वैकल्पिक रूप से, कोई वर्शन कॉन्फ़िगर करें आपके प्रोजेक्ट की gradle.properties फ़ाइल में:

android.prefabVersion=2.0.0

आम तौर पर, एजीपी का चुना गया डिफ़ॉल्ट वर्शन आपकी ज़रूरतों के हिसाब से सही होगा. आपको सिर्फ़ कोई गड़बड़ी होने पर, किसी दूसरे वर्शन को चुनने की ज़रूरत होती है या सुविधा को चालू करें.

एएआर से इंपोर्ट की गई डिपेंडेंसी को CMAKE_Find_ROOT_PATH. यह वैल्यू, Gradle से अपने-आप सेट हो जाएगी. ऐसा तब होगा, जब CMake का इस्तेमाल किया जाता है, इसलिए अगर आपका बिल्ड इस वैरिएबल में बदलाव करता है, तो करने के बजाय इसे असाइन करें.

हर डिपेंडेंसी आपके बिल्ड में एक config-फ़ाइल पैकेज दिखाती है. ये हैं को find_package कमांड के साथ इंपोर्ट किया गया है. यह निर्देश, कॉन्फ़िगरेशन फ़ाइल खोजता है पैकेज, दिए गए पैकेज के नाम और वर्शन से मेल खाते हैं और टारगेट को दिखाते हैं आपके बिल्ड में इस्तेमाल किया जाता है. उदाहरण के लिए, अगर आपका ऐप्लिकेशन libapp.so है और यह cURL का इस्तेमाल करता है, तो आपके CMakeLists.txt में ये शामिल होने चाहिए:

add_library(app SHARED app.cpp)

# Add these two lines.
find_package(curl REQUIRED CONFIG)
target_link_libraries(app curl::curl)

app.cpp अब #include "curl/curl.h" का इस्तेमाल कर सकते/सकती हैं, libapp.so को बिल्डिंग के समय libcurl.so से अपने-आप लिंक हो जाता है, और libcurl.so उसे ऐप्लिकेशन के साथ शामिल किया जाना चाहिए.

एएआर में नेटिव लाइब्रेरी पब्लिश करना

नेटिव एएआर बनाने की सुविधा सबसे पहले AGP के 4.1 वर्शन में जोड़ी गई थी.

अपनी स्थानीय लाइब्रेरी एक्सपोर्ट करने के लिए, इसके android ब्लॉक में ये जोड़ें आपके लाइब्रेरी प्रोजेक्ट की build.gradle.kts फ़ाइल में:

Kotlin

buildFeatures {
    prefabPublishing = true
}

prefab {
    create("mylibrary") {
      headers = "src/main/cpp/mylibrary/include"
    }

    create("myotherlibrary") {
        headers = "src/main/cpp/myotherlibrary/include"
    }
}

ग्रूवी

buildFeatures {
    prefabPublishing true
}

prefab {
    mylibrary {
      headers "src/main/cpp/mylibrary/include"
    }

    myotherlibrary {
        headers "src/main/cpp/myotherlibrary/include"
    }
}

इस उदाहरण में, mylibrary और myotherlibrary लाइब्रेरी ndk-build या CMake बाहरी नेटिव बिल्ड को एएआर में पैकेज किया जाएगा आपका बिल्ड तैयार करता है और प्रत्येक, हेडर को निर्दिष्ट की गई निर्देशिका से उनके आश्रितों के लिए है.