משאבי האפליקציה, כמו סמלי אפליקציה, מחרוזות שעברו לוקליזציה ומפות סיביות, מאורגנים בספריות ספציפיות לסוגים בתוך הספרייה res/ של כל מודול. אפשר גם להוסיף גרסאות חלופיות של כל קובץ שעברו אופטימיזציה להגדרות שונות של מכשירים, כמו גרסה ברזולוציה גבוהה של מפת סיביות למסכים בצפיפות גבוהה.
ב-Android Studio יש כמה דרכים להוסיף משאבים חדשים ומשאבים חלופיים, בהתאם לסוג המשאב שרוצים להוסיף. בדף הזה מוסבר איך מוסיפים קובצי משאבים בסיסיים, איך משנים את המיקום של המשאבים ואיך מתבצע מיזוג של משאבים.
ב-Jetpack Compose, מגדירים את ממשק המשתמש ב-Kotlin ולא בפריסות XML.
עם זאת, עדיין משתמשים בספרייה res/ כדי לאחסן נכסים סטטיים ברמת האפליקציה, כמו סמלים, גופנים ותרגומים. במאמר משאבים ב-Compose מוסבר איך לגשת למשאבים האלה בפונקציות הניתנות להרכבה.
בדפים הבאים מוסבר איך ליצור סוגים ספציפיים של משאבים:
- כדי להוסיף קובצי מחרוזות, אפשר לעיין במאמר בנושא לוקליזציה של ממשק המשתמש באמצעות הכלי לעריכת תרגומים.
- מידע על הוספת מפות סיביות זמין במאמר בנושא יצירת סמלי אפליקציות.
- כדי להוסיף קובצי SVG, אפשר לעיין במאמר בנושא הוספת גרפיקה וקטורית עם כמה רמות צפיפות.
במאמר סקירה כללית על משאבי אפליקציות מוסבר איך להפנות למשאבים מקוד האפליקציה.
הוספת קובץ משאבים בפורמט XML
למרות שבקישורים שבדף הקודם מתואמים תהליכי עבודה שמותאמים לכל סוג של משאב, אפשר להוסיף כל קובץ משאב XML באמצעות השלבים הבאים:
- בחלון Project (פרויקט), לוחצים על מודול אפליקציית היעד בתצוגה Android (אנדרואיד) או בתצוגה Project (פרויקט).
- לוחצים על File > New > Android resource file (קובץ > חדש > קובץ משאבים של Android).
איור 1. תיבת הדו-שיח New Resource File (קובץ משאבים חדש).
- ממלאים את הפרטים בתיבת הדו-שיח:
- שם הקובץ: מזינים את השם של קובץ ה-XML (לא צריך להוסיף את הסיומת
.xml). - סוג המשאב: בוחרים את סוג המשאב שרוצים ליצור.
- Root element (רכיב הבסיס): אם רלוונטי, בוחרים את רכיב הבסיס ב-XML של הקובץ. חלק מסוגי המשאבים תומכים רק בסוג אחד של רכיב בסיס. יכול להיות שלא תהיה אפשרות לערוך את השדה הזה, בהתאם לסוג המשאב שנבחר.
- קבוצת מקורות: בוחרים את קבוצת המקורות שבה רוצים לשמור את הקובץ.
- שם הספרייה: צריך לתת לספרייה שם שספציפי לסוג המשאב ולמאפייני ההגדרה. אל תערכו את השדה הזה, אלא אם אתם רוצים להוסיף ידנית מזהים להגדרת התצורה לשם הספרייה (במקום זאת, השתמשו במזהים זמינים).
- מסווגים זמינים: במקום להוסיף ידנית מסווגי תצורה לשם הספרייה, אפשר לבחור מסווג מהרשימה וללחוץ על הוספה
.
- שם הקובץ: מזינים את השם של קובץ ה-XML (לא צריך להוסיף את הסיומת
- אחרי שמוסיפים את כל התנאים הרצויים, לוחצים על אישור.
משאבי XML מורכבים בקוד
חלק מהמשאבים המורכבים דורשים כמה קובצי משאבי XML. לדוגמה, ל-Compose יש ממשקי API חזקים לאנימציות, אבל יכול להיות שתצטרכו להשתמש בפריט גרפי וקטורי מונפש שניתן לשרטוט, שכולל אובייקט פריט גרפי וקטורי שניתן לשרטוט ואובייקט אנימציה, ודורש לפחות שלושה קובצי XML.
בדוגמה הזו, אתם יכולים ליצור ולשמור את שלושת קובצי ה-XML הנפרדים אם אתם צריכים לעשות שימוש חוזר באחד או יותר מהם. אבל אם קובצי ה-XML משמשים רק לפריט הגרפי הווקטורי שניתן לשרטוט המונפש הזה, אפשר להשתמש במקום זאת בפורמט המשאב המוטבע שמופיע בכלי Android Asset Packaging Tool (AAPT). בעזרת AAPT, אפשר להגדיר את כל שלושת המשאבים בקובץ XML אחד. מידע נוסף מופיע במאמר בנושא משאבי XML מורכבים מוטבעים.
הוספת ספריית משאבים
כדי להוסיף ספריית משאבים חדשה, פועלים לפי השלבים הבאים:
- לוחצים על מודול אפליקציית היעד בחלון פרויקט.
- בוחרים באפשרות קובץ > חדש > ספריית משאבים של Android.
איור 2. תיבת הדו-שיח New Resource Directory (ספריית משאבים חדשה).
- ממלאים את הפרטים בתיבת הדו-שיח:
- שם הספרייה: שם הספרייה צריך להיות ספציפי לסוג המשאב ולשילוב של מזהי ההגדרה. אל תערכו את השדה הזה אלא אם אתם רוצים להוסיף ידנית מסנני הגדרה לשם הספרייה (במקום זאת, השתמשו במסננים זמינים).
- סוג המשאב: בוחרים את סוג המשאב שרוצים שיהיה בספרייה.
- קבוצת מקורות: בוחרים את קבוצת המקורות שבה רוצים שהספרייה תופיע.
- מסננים זמינים: במקום להוסיף מסננים של הגדרות באופן ידני לשם הספרייה, אפשר לבחור מסנן מהרשימה וללחוץ על הוספה
.
- אחרי שמוסיפים את כל התנאים הרצויים, לוחצים על אישור.
שינוי ספריית המשאבים
כברירת מחדל, המשאבים שלכם נמצאים ב-module-name/src/source-set-name/res/.
לדוגמה, משאבים של קבוצת המקורות הראשית של המודול נמצאים ב-src/main/res/, ומשאבים של קבוצת המקורות של ניפוי הבאגים נמצאים ב-src/debug/res/.
עם זאת, אפשר לשנות את הנתיבים האלה לכל מיקום אחר (ביחס לקובץ build.gradle) באמצעות המאפיין res.srcDirs בבלוק sourceSets. לדוגמה:
מגניב
android { sourceSets { main { res.srcDirs = ['resources/main'] } debug { res.srcDirs = ['resources/debug'] } } }
Kotlin
android { sourceSets { getByName("main") { res.srcDirs("resources/main") } getByName("debug") { res.srcDirs("resources/debug") } } }
אפשר גם לציין כמה ספריות משאבים עבור קבוצת מקורות אחת, ואז כלי הבנייה ימזגו אותן. לדוגמה:
מגניב
android { sourceSets { main { res.srcDirs = ['res1', 'res2'] } } }
Kotlin
android { sourceSets { main { res.srcDirs("res1", "res2") } } }
מידע נוסף זמין במאמר בנושא קבוצות מקורות.
מיזוג משאבים
המשאבים בקובץ האפליקציה הסופי יכולים להגיע משלושה מקורות:
- ערכת המקור הראשית (בדרך כלל נמצאת ב-
src/main/res/) - קבוצות מקורות של וריאנט build
- ספריות Android (AAR)
אם כל המשאבים מכל קבוצת מקור או ספרייה הם ייחודיים, כולם יתווספו לאפליקציה הסופית. משאב נחשב ייחודי אם שם הקובץ שלו ייחודי גם בספרייה של סוג המשאב וגם במסווג המשאב (אם הוא מוגדר).
אם יש שתי גרסאות תואמות או יותר של אותו משאב, רק גרסה אחת תיכלל באפליקציה הסופית. כלי הבנייה בוחרים איזו גרסה לשמור לפי סדר העדיפות הבא (העדיפות הגבוהה ביותר בצד ימין):
build variant > build type > product flavor > main source set > library dependencies
לדוגמה, אם קבוצת המקורות הראשית מכילה:
res/values/strings.xmlres/values-es/strings.xml
וסוג ה-build לניפוי באגים מכיל:
res/values/strings.xml
אז האפליקציה הסופית כוללת את res/values/strings.xml מגרסת build לניפוי באגים ואת res/values-es/strings.xml מקבוצת מקורות המידע הראשית.
עם זאת, אם בהגדרת ה-build מצוינים כמה תיקיות משאבים עבור קבוצת מקורות מסוימת, ויש התנגשויות בין המקורות האלה, תתרחש שגיאה והמיזוג ייכשל כי לכל תיקיית משאבים יש את אותו סדר עדיפות.