יחסי תלות במקור עם הפלאגין Android Gradle

ספריות 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 שלך, וכל אחד מהם יייצא את הכותרות מהספרייה שצוינה והתלויים שלהם.