ספריות 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 מתאימה לצרכים שלך. צריך רק תצטרכו לבחור גרסה אחרת אם יש באג שצריך לעקוף או ופיצ'ר חדש שרציתם.
יחסי תלות שמיובאים מ-AAR נחשפים ל-CMake דרך CMake_FIND_ROOT_PATH. הערך הזה יוגדר באופן אוטומטי על ידי Gradle כאשר ה-CMake מופעל, כך שאם ה-build שלך משנה את המשתנה הזה, עליך לוודא במקום להקצות לו.
כל תלות חושפת חבילת קובץ config ל-build שלכם. הנושאים האלה
שיובאה באמצעות הפקודה find_package. הפקודה הזו מחפשת קובץ config
חבילות שתואמות לשם ולגרסה הנתונים של החבילה, וחושף את היעדים
שמגדירות לשימוש ב-build שלכם. לדוגמה, אם האפליקציה שלך מגדירה
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.
כדי לייצא את הספריות המותאמות, צריך להוסיף את הקוד הבא לבלוק 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 שלך, וכל אחד מהם יייצא את הכותרות מהספרייה שצוינה
והתלויים שלהם.