Android Gradle প্লাগইন সহ স্থানীয় নির্ভরতা

AAR লাইব্রেরিতে নেটিভ নির্ভরতা থাকতে পারে যা Android Gradle Plugin ব্যবহার করতে পারে। এজিপি AAR তৈরি করতেও সক্ষম যা তাদের গ্রাহকদের কাছে নেটিভ লাইব্রেরি প্রকাশ করে।

স্থানীয় নির্ভরতা ব্যবহার করে

Android Gradle প্লাগইন 4.0 দিয়ে শুরু করে, C/C++ নির্ভরতা আপনার build.gradle ফাইলে লিঙ্ক করা AAR থেকে আমদানি করা যেতে পারে। গ্রেডল স্বয়ংক্রিয়ভাবে এগুলি নেটিভ বিল্ড সিস্টেমে উপলব্ধ করবে, তবে আপনার বিল্ড সিস্টেমটি অবশ্যই আমদানি করা লাইব্রেরি এবং শিরোনামগুলি ব্যবহার করার জন্য কনফিগার করা উচিত। যেহেতু C/C++ নির্ভরতাগুলি AAR হিসাবে বিতরণ করা হয়, জেনেরিক AAR সম্পর্কে নিম্নলিখিত লিঙ্কগুলি সহায়ক হতে পারে:

এই নথিটি আপনার নেটিভ বিল্ড সিস্টেমকে কীভাবে কনফিগার করতে হয় তার উপর ফোকাস করে এবং ধরে নেয় যে আপনি ইতিমধ্যে আপনার প্রকল্পের গ্রেডল বিল্ড পরিবেশে একটি C/C++ নির্ভরতা AAR যোগ করেছেন।

AAR-তে নেটিভ নির্ভরতা

আপনার Gradle মডিউলগুলির AAR নির্ভরতা আপনার অ্যাপ্লিকেশন দ্বারা ব্যবহারের জন্য নেটিভ লাইব্রেরিগুলিকে প্রকাশ করতে পারে। AAR-এর ভিতরে, prefab ডিরেক্টরিতে একটি Prefab প্যাকেজ রয়েছে, যার মধ্যে নেটিভ নির্ভরতার হেডার এবং লাইব্রেরি রয়েছে।

প্রতিটি নির্ভরতা সর্বাধিক একটি Prefab প্যাকেজ প্রকাশ করতে পারে, যার মধ্যে এক বা একাধিক মডিউল রয়েছে। একটি প্রিফ্যাব মডিউল হল একটি একক লাইব্রেরি, যা হয় শেয়ার করা, স্ট্যাটিক বা হেডার শুধুমাত্র লাইব্রেরি হতে পারে।

লাইব্রেরি ব্যবহার করার জন্য প্যাকেজ এবং মডিউলের নাম জানা প্রয়োজন। নিয়ম অনুসারে প্যাকেজ নামটি Maven আর্টিফ্যাক্ট নামের সাথে মিলবে এবং মডিউলের নাম C/C++ লাইব্রেরির নামের সাথে মিলবে, তবে এটির প্রয়োজন নেই। এটি কোন নাম ব্যবহার করে তা নির্ধারণ করতে নির্ভরতার ডকুমেন্টেশনের সাথে পরামর্শ করুন।

সিস্টেম কনফিগারেশন তৈরি করুন

আপনার অ্যান্ড্রয়েড গ্রেডল মডিউলের জন্য prefab বৈশিষ্ট্যটি সক্রিয় করা আবশ্যক।

এটি করতে, আপনার মডিউলের build.gradle ফাইলের android ব্লকে নিম্নলিখিত যোগ করুন:

কোটলিন

buildFeatures {
  prefab = true
}

গ্রোভি

buildFeatures {
  prefab true
}

ঐচ্ছিকভাবে, আপনার প্রকল্পের gradle.properties ফাইলে একটি সংস্করণ কনফিগার করুন:

android.prefabVersion=2.0.0

সাধারণত ডিফল্ট সংস্করণ নির্বাচিত AGP আপনার প্রয়োজনের সাথে খাপ খায়। আপনার কাজ করার জন্য কোনো বাগ থাকলে বা আপনি চান এমন একটি নতুন বৈশিষ্ট্য থাকলেই আপনাকে একটি ভিন্ন সংস্করণ নির্বাচন করতে হবে।

একটি AAR থেকে আমদানি করা নির্ভরতাগুলি CMAKE_FIND_ROOT_PATH এর মাধ্যমে CMake-এর সংস্পর্শে আসে। এই মানটি গ্র্যাডল দ্বারা স্বয়ংক্রিয়ভাবে সেট করা হবে যখন CMake আহ্বান করা হবে, তাই যদি আপনার বিল্ড এই ভেরিয়েবলটি পরিবর্তন করে তবে এটিকে বরাদ্দ না করে যুক্ত করতে ভুলবেন না।

প্রতিটি নির্ভরতা আপনার বিল্ডে একটি কনফিগার-ফাইল প্যাকেজ প্রকাশ করে। এগুলো 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 অ্যাপের সাথে অন্তর্ভুক্ত হবে।

AAR-এ নেটিভ লাইব্রেরি প্রকাশ করা

নেটিভ AAR তৈরি করার ক্ষমতা প্রথম AGP 4.1 এ যোগ করা হয়েছিল।

আপনার নেটিভ লাইব্রেরি এক্সপোর্ট করতে, আপনার লাইব্রেরি প্রোজেক্টের build.gradle.kts ফাইলের android ব্লকে নিম্নলিখিত যোগ করুন:

কোটলিন

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"
    }
}

এই উদাহরণে, আপনার ndk-build বা CMake বাহ্যিক নেটিভ বিল্ড থেকে mylibrary এবং myotherlibrary লাইব্রেরিগুলি আপনার বিল্ড দ্বারা উত্পাদিত AAR-এ প্যাকেজ করা হবে এবং প্রতিটি নির্দিষ্ট ডিরেক্টরি থেকে তাদের নির্ভরশীলদের কাছে হেডার রপ্তানি করবে।