يمكن أن تحتوي مكتبات AAR على تبعيات أصلية يمكن لمكوّن Android Gradle الإضافي المستهلك. كما يستطيع AGP إنتاج ملفات AAR التي تعرض المكتبات الأصلية للمستهلكين.
استخدام التبعيات الأصلية
بدءًا من الإصدار 4.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، يمكن استيراد تبعيات C/C++ من
ملفات AAR المرتبطة في ملف build.gradle ستجعل Gradle هذه تلقائيًا
متاحة لنظام الإصدار الأصلي، ولكن يجب إعداد نظام التصميم
للاستفادة من المكتبات والعناوين المستوردة نظرًا لأن تبعيات C/C++ هي
يتم توزيعها كاقتراحات AAR، قد تكون الروابط التالية حول AAR العامة مفيدة:
- إنشاء مكتبة Android للمستندات العامة في ميزة "الاقتراحات المطبّقة تلقائيًا" وكيفية دمجها في مشروعك، خاصة عندما تريد استخدام AAR كتبعية محلية لـ C/C++.
- يمكنك إضافة تبعيات الإصدار للحصول على معلومات حول إضافة الملحقات إلى ملف
build.gradle. خاصة للتبعيات البعيدة.
يركّز هذا المستند على كيفية ضبط نظام التصميم الأصلي ويفترض أنّك أجريت أضفت تبعية AAR لـ C/C++ إلى بيئة إصدار Gradle لمشروعك.
الاعتماديات الأصلية في الاقتراحات المطبّقة تلقائيًا
يمكن أن تكشف تبعيات AAR لوحدات Gradle عن المكتبات الأصلية للاستخدام من قِبل
تطبيقك. داخل AAR، يحتوي الدليل prefab على Prefab
والتي تتضمن عناوين ومكتبات التبعية الأصلية.
يمكن أن تعرض كل تبعية حزمة Prefab واحدة على الأكثر، والتي تتكون من واحدة أو المزيد من الوحدات. وحدة Prefab هي مكتبة واحدة، والتي يمكن أن تكون إما مكتبة مشتركة أو ثابتة أو ذات عناوين فقط
ويجب أن تكون أسماء الحزم والوحدات معروفة للاستفادة من المكتبات. من سيتطابق اسم الحزمة مع اسم عناصر Maven والوحدة. مع اسم مكتبة C/C++ ، ولكن هذا الأمر ليس مطلوبًا. الرجوع إلى وثائق التبعية لتحديد الأسماء التي تستخدمها.
إنشاء تهيئة النظام
يجب تفعيل ميزة "prefab" في وحدة نظام Gradle المتوافق مع Android.
لإجراء ذلك، يمكنك إضافة ما يلي إلى كتلة android في الوحدة.
ملف build.gradle:
Kotlin
buildFeatures { prefab = true }
Groovy
buildFeatures { prefab true }
اختياريًا، يمكنك ضبط إصدار
في ملف gradle.properties الخاص بمشروعك:
android.prefabVersion=2.0.0
عادةً ما يتناسب الإصدار الافتراضي المحدد من AGP مع احتياجاتك. يجب عليك فقط إلى تحديد إصدار مختلف إذا كان هناك خطأ تحتاج إلى حله أو ميزة جديدة تريدها.
تعرض كل تبعية ملف Android.mk لإصدارك. وهي
باستخدام الأمر Import-module. يبحث هذا الأمر عن Android.mk
بالمسار المحدد ضمن أدلة استيراد الإصدار (وفقًا للإعدادات)
بواسطة import-add-path) وتعرض الوحدات التي يحدّدها لاستخدامها في
على سبيل المثال، إذا كان التطبيق يعرّف libapp.so ويستخدم cURL،
يجب أن يحتوي ملف Android.mk على ما يلي:
include $(CLEAR_VARS)
LOCAL_MODULE := libapp
LOCAL_SRC_FILES := app.cpp
LOCAL_SHARED_LIBRARIES := curl
include $(BUILD_SHARED_LIBRARY)
# If you don't need your project to build with NDKs older than r21, you can omit
# this block.
ifneq ($(call ndk-major-at-least,21),true)
$(call import-add-path,$(NDK_GRADLE_INJECTED_IMPORT_PATH))
endif
$(call import-module,prefab/curl)
يُرجى العلم أنّ السمة import-add-path الصريحة مطلوبة فقط عند استخدام حِزم عدم الإفصاح السابقة.
إلى r21. اعتبارًا من اليوم 21، سيتم تلقائيًا تطبيق NDK_GRADLE_INJECTED_IMPORT_PATH.
وتتم إضافتها إلى مسارات الاستيراد.
يمكن لتطبيق "app.cpp" الآن إجراء #include "curl/curl.h"، وسيكون "libapp.so" متاحًا.
مرتبطًا تلقائيًا بـ libcurl.so عند البناء، وسيعمل libcurl.so على
مع التطبيق.
نشر المكتبات المجمّعة من رموز برمجية أصلية في AAR
تمت إضافة القدرة على إنشاء تطبيقات AAR أصلية في الإصدار 4.1 من AGP.
لتصدير مكتباتك الأصلية، أضِف ما يلي إلى كتلة 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" } }
Groovy
buildFeatures { prefabPublishing true } prefab { mylibrary { headers "src/main/cpp/mylibrary/include" } myotherlibrary { headers "src/main/cpp/myotherlibrary/include" } }
في هذا المثال، المكتبات mylibrary وmyotherlibrary من إما
سيتم تضمين إصدار ndk-build أو CMake الخارجي في تقنية AAR التي تنتجها
الإصدار الخاص بك، وسيقوم كل منها بتصدير العناوين من الدليل المحدد إلى
التابع لهم.