کتابخانههای AAR میتوانند حاوی وابستگیهای بومی باشند که افزونه Gradle Android میتواند از آن استفاده کند. AGP همچنین قادر به تولید AARهایی است که کتابخانه های بومی را در معرض دید مصرف کنندگان خود قرار می دهد.
استفاده از وابستگی های بومی
با شروع پلاگین Android Gradle نسخه 4.0، وابستگی های C/C++ را می توان از AAR هایی که در فایل build.gradle
شما پیوند داده شده اند وارد کرد. Gradle به طور خودکار این موارد را برای سیستم ساخت بومی در دسترس قرار می دهد، اما سیستم ساخت شما باید طوری پیکربندی شود که از کتابخانه ها و هدرهای وارد شده استفاده کند. از آنجایی که وابستگی های C/C++ به صورت AAR توزیع می شوند، پیوندهای زیر در مورد AAR های عمومی ممکن است مفید باشند:
- ایجاد یک کتابخانه Android برای اسناد عمومی AAR و نحوه ادغام آن در پروژه خود، به خصوص زمانی که می خواهید از AAR به عنوان یک وابستگی محلی C/C++ استفاده کنید.
- برای اطلاعات در مورد افزودن وابستگی ها به فایل
build.gradle
خود، به خصوص برای وابستگی های راه دور ، وابستگی های ساخت اضافه کنید .
این سند بر نحوه پیکربندی سیستم ساخت بومی خود تمرکز می کند و فرض می کند که قبلاً یک AAR وابستگی C/C++ را به محیط ساخت Gradle پروژه خود اضافه کرده اید.
وابستگی های بومی در AAR ها
وابستگیهای AAR ماژولهای Gradle شما میتوانند کتابخانههای بومی را برای استفاده توسط برنامه شما در معرض دید قرار دهند. در داخل AAR، دایرکتوری prefab
حاوی یک بسته Prefab است که شامل سرصفحه ها و کتابخانه های وابستگی بومی است.
هر وابستگی می تواند حداکثر یک بسته Prefab را که شامل یک یا چند ماژول است، نشان دهد. یک ماژول Prefab یک کتابخانه واحد است که می تواند یک کتابخانه اشتراکی، ایستا یا فقط هدر باشد.
برای استفاده از کتابخانه ها باید نام بسته و ماژول مشخص باشد. طبق قرارداد، نام بسته با نام مصنوع Maven و نام ماژول با نام کتابخانه C/C++ مطابقت دارد، اما این مورد نیاز نیست. برای تعیین اینکه از چه نام هایی استفاده می کند، با اسناد وابستگی مشورت کنید.
پیکربندی سیستم را بسازید
ویژگی prefab
باید برای ماژول Android Gradle شما فعال باشد.
برای انجام این کار، موارد زیر را به بلوک android
فایل build.gradle
ماژول خود اضافه کنید:
کاتلین
buildFeatures { prefab = true }
شیار
buildFeatures { prefab true }
در صورت تمایل، یک نسخه را در فایل gradle.properties
پروژه خود پیکربندی کنید:
android.prefabVersion=2.0.0
به طور معمول نسخه پیش فرض انتخاب شده AGP با نیازهای شما مطابقت دارد. فقط در صورتی باید نسخه دیگری را انتخاب کنید که اشکالی وجود دارد که باید آن را برطرف کنید یا ویژگی جدیدی را می خواهید.
وابستگی های وارد شده از یک AAR از طریق CMAKE_FIND_ROOT_PATH در معرض CMake قرار می گیرند. هنگامی که CMake فراخوانی می شود، این مقدار به طور خودکار توسط Gradle تنظیم می شود، بنابراین اگر بیلد شما این متغیر را تغییر می دهد، مطمئن شوید که به جای اختصاص دادن به آن، آن را اضافه کنید.
هر وابستگی یک بسته فایل پیکربندی را در اختیار بیلد شما قرار می دهد. اینها با دستور 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
با برنامه گنجانده میشود.
انتشار کتابخانه های بومی در AARs
توانایی ایجاد AAR های بومی برای اولین بار در AGP 4.1 اضافه شد.
برای صادر کردن کتابخانه های بومی خود، موارد زیر را به بلوک android
فایل build.gradle.kts
پروژه کتابخانه خود اضافه کنید:
کاتلین
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 شما در AAR تولید شده توسط بیلد شما بستهبندی میشوند و هر کدام هدرها را از دایرکتوری مشخص شده به وابستگان خود صادر میکنند.