ספריות AAR יכולות להכיל יחסי תלות מקומיים שהפלאגין של Android Gradle יכול לצרוך. AGP יכולה גם ליצור AAR שחושפות ספריות נייטיב לצרכנים שלהם.
שימוש ביחסי תלות מקומיים
החל מגרסה 4.0 של הפלאגין Android Gradle, ניתן לייבא יחסי תלות של C/C++
AAR מקושרים בקובץ build.gradle. אפליקציית Gradle תיצור את התמונות האלה באופן אוטומטי
זמין למערכת ה-build המקורית, אבל צריך להגדיר את מערכת ה-build
כדי להשתמש בספריות ובכותרות שיובאו. כי יחסי התלות של C/C++ הם
מופצים כמזהי AAR, כדאי להיעזר בקישורים הבאים בנושא AAR כלליים:
- יצירת ספריית Android למסמכי תיעוד כללית של AAR וכן איך לשלב אותם בפרויקט, במיוחד כשרוצים שימוש ב-AAR כתלות מקומית של C/C++.
- מוסיפים יחסי תלות של build כדי לקבל מידע על הוספת יחסי תלות לקובץ
build.gradle, במיוחד בתחום של יחסי התלות מרחוק.
המסמך מתמקד באופן ההגדרה של מערכת ה-build המקורית, ומבוסס על ההנחה שכבר הוספתם AAR של תלות ב-C/C++ לסביבת ה-build של Gradle של הפרויקט.
יחסי תלות מקומיים ב-AAR
יחסי תלות של AAR במודולים של Gradle יכולים לחשוף ספריות נייטיב לשימוש
את האפליקציה שלך. בתוך AAR, הספרייה prefab מכילה Prefab
שכוללת את הכותרות והספריות של התלות במקור.
כל תלות יכולה לחשוף חבילת Prefab אחת לכל היותר, שמורכבת מאחת או מודולים נוספים. מודול Prefab הוא ספרייה אחת, שיכולה להיות משותפת, סטטית או לכותרת בלבד.
שמות החבילות והמודולים צריכים להיות ידועים כדי שניתן יהיה להשתמש בספריות. על ידי שם החבילה יהיה תואם לשם הארטיפקט של Maven ולמודול יהיה תואם לשם הספרייה C/C++, אך אין חובה לעשות זאת. נכנסים ל- של יחסי התלות כדי לקבוע באילו שמות היא משתמשת.
יצירת תצורת המערכת
צריך להפעיל את התכונה prefab במודול Android Gradle.
כדי לעשות זאת, צריך להוסיף את הקוד הבא לבלוק android של המודול
קובץ build.gradle:
Kotlin
buildFeatures { prefab = true }
מגניב
buildFeatures { prefab true }
אפשר גם להגדיר גרסה
בקובץ gradle.properties של הפרויקט שלך:
android.prefabVersion=2.0.0
בדרך כלל גרסת ברירת המחדל שנבחרה ב-AGP מתאימה לצרכים שלך. צריך רק תצטרכו לבחור גרסה אחרת אם יש באג שצריך לעקוף או ופיצ'ר חדש שרציתם.
כל תלות חושפת קובץ Android.mk ל-build שלכם. הנושאים האלה
יובא באמצעות הפקודה ייבא-מודול. הפקודה הזו מחפשת את Android.mk.
קבצים עם הנתיב הנתון בספריות הייבוא של ה-build (כפי שהוגדר
של import-add-path), וחושף את המודולים שהוא מגדיר לשימוש
build. לדוגמה, אם באפליקציה שלך מוגדר 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 הבוטה נדרש רק כשמשתמשים ב-NDK בעבר.
ל-r21. החל מ-r21, NDK_GRADLE_INJECTED_IMPORT_PATH יהיה באופן אוטומטי
נוסף לנתיבי הייבוא.
app.cpp יכול עכשיו #include "curl/curl.h", libapp.so
קושר באופן אוטומטי אל libcurl.so במהלך הבנייה, ו-libcurl.so:
ייכללו באפליקציה.
פרסום ספריות מקוריות בקובצי AAR
היכולת ליצור AAR מקוריים נוספה לראשונה ב-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 build מקורי חיצוני יאורגנו ב-AAR שמופק על ידי
של ה-build שלך, וכל אחד מהם יייצא את הכותרות מהספרייה שצוינה
והתלויים שלהם.