מבנה ה-build של Android

פרויקטים ב-Android מכילים הרבה קבצים ומבני ספריות שקשורים ל-build, לארגן את מקור האפליקציה והמשאבים. לפני שממשיכים פרטי ההגדרה, נבחן את המבנה הכולל ואת העקרונות הבסיסיים של מה ששייך לכל אחד מהחלקים.

בטבלה הזו מפורטים קבצים אופייניים בפרויקט Android. התיאורים של כל אחד מהמסלולים כולל הערות לגבי סוג התוכן שמופיע בהן. הטובה ביותר שיטות העבודה משתנות עם הזמן, ויכול להיות שהתיאורים האלה לא יהיו תואמים לפרויקט ירשתם או הורדתם מהאינטרנט.

צריך להשתמש בגישה הצהרתית כדי לכתוב קובצי build. לפתח לוגיקה ומשימה ההגדרות צריכות להופיע רק ביישומי פלאגין. באמצעות הגבלה של לוגיקת ה-build ליישומי פלאגין, קובצי build הופכים להצהרות נתונים, ישירות להבנה ועריכה. גרסאות עתידיות עשויות לכלול מפרט חלופי כמו Declarative Gradle, שתמנע לוגיקה של פיתוח .

תיקייה/קובץ

שימוש

.gradle/

ספריית המטמון של פרויקט Gradle

מנוהל על ידי Gradle ומכיל את הפצת Gradle, את מטמון הפרויקט ואת קובצי התצורה.

אל תשנו את הקבצים בספרייה הזאת!

.idea/

מטא-נתונים של פרויקטים ב-Android Studio

אל תשנו את הקבצים בספרייה הזאת!

build.gradle(.kts)

קובץ build ברמה הבסיסית

צריכה להכיל הצהרות יישומי פלאגין רק כדי להגדיר נתיב Classpath משותף של יישומי פלאגין בין תתי-פרויקטים.

קוד אחר צריך להימצא בהגדרות או בקובצי build ברמת הפרויקט בתוך הפרויקט.

gradle.properties

הגדרת ביצוע של Gradle

מכילה את מאפייני Gradle, ושולטת בהיבטים של סביבת ה-build של Gradle, כמו גודל תמונת מצב של הזיכרון, שמירה במטמון וביצוע מקביל.

כמה מאפיינים זמניים של Android מוגדרים כאן כדי לצמצם את השינויים ב-AGP DSL כשהם נוספים ומוסרים מאוחר יותר.

GRidlew (linux, Mac)

gradlew.bat (Windows)

קובץ Gradle wrapper קובץ

אתחול ה-build על ידי הורדת הפצת Gradle, ולאחר מכן העברת פקודות אליה. כך תוכלו להריץ גרסאות build בלי להתקין מראש את Gradle.

Local.properties

הגדרת מכונה מקומית

מכיל מאפיינים שקשורים למכונה המקומית, כמו המיקום של Android SDK.

החרגת הקובץ הזה מבקרת המקור!

settings.gradle(.kts)

אתחול build של Gradle

מכיל פרטי build גלובליים לאתחול Gradle ולהגדרת פרויקט, כמו

  • שם הפרויקט
  • רשימה של תתי-פרויקטים שייכללו ב-build הזה
  • מפרטים של מאגרי נתונים כדי לאתר יישומי פלאגין ויחסי תלות
  • ייבוא של קטלוג גרסאות חיצוני.

gradle/

↳ libs.versions.toml

קטלוג הגרסאות

מגדירה משתנים ליחסי תלות וליישומי פלאגין שמשמשים ב-build שלכם. אתם צריכים לציין כאן את הגרסאות שאתם רוצים להשתמש בהן, כדי לשמור על עקביות בכל פרויקטי המשנה בפרויקט.

↳ wrapper/

↳ gradle-wrapper.jar

Gradle Shoestrapping קובץ הפעלה

הורדה של התפלגות Gradle שצוינה (אם היא לא קיימת), והפעלה שלה והעברת ארגומנטים כלשהם

↳ gradle-wrapper.properties

הגדרה של Gradle wrapper

מציינת איפה להוריד את הפצת Gradle (כולל באיזו גרסה להשתמש).

app/

ספריית פרויקט המשנה

תתי-פרויקטים (שנקראים 'מודולים' ב-Android Studio) יכולים ליצור אפליקציות או ספריות, והם עשויים להיות תלויים בפרויקטים משנה אחרים או ביחסי תלות חיצוניים.

app הוא השם המקובל לפרויקט משנה של אפליקציה ברמה העליונה (אבל הוא לא השם הנדרש). לפרויקטים משניים אחרים יש מבנים דומים עם שמות שונים.

כל ספרייה יכולה להיות תת-פרויקט, וצריך להכיל לפחות קובץ build.gradle(.kts), ולכלול אותה ב-build באמצעות settings.gradle(.kts).

↳ build.gradle(.kts)

קובץ build ברמת הפרויקט המשני

מסביר איך ליצור את פרויקט המשנה הזה. לכל פרויקט משנה נדרש קובץ build נפרד, והוא צריך לכלול

  • יישומי פלאגין שמשמשים לבניית פרויקט המשנה הזה
  • בלוקים של הגדרות אישיות שנדרשים על ידי יישומי פלאגין
  • של יחסי התלות (ספריות ופלטפורמות) שנכללים במהלך היצירה של פרויקט המשנה הזה

אסור לכלול לוגיקת build (כמו הגדרות או תנאים של פונקציות Kotlin) או הצהרות על משימות בקובצי ה-build. הלוגיקה והמשימות צריכות להיות שייכות רק ליישומי פלאגין.

↳ src/

קובצי מקור בפרויקט משנה

מקבץ קובצי מקור (קוד אפליקציות ומשאבים) בערכות מקור. קבוצת המקור main מכילה קובצי מקור המשותפים לכל הווריאציות, בעוד שקבוצות מקור אחרות מכילות קובצי מקור ייחודיים לווריאנט.

↳ main/

קבוצת מקור ראשית

קוד מקור ומשאבים שמשותפים בכל הווריאציות של ה-build. המקור הזה משמש כבסיס לכל גרסאות ה-build, וקבוצות מקורות אחרות וספציפיות יותר שמוסיפים למקור הזה או מבטלים אותו.

↳ Java/

↳ kotlin/

קוד המקור של Kootlin ו-Java

הספרייה java יכולה להכיל קוד מקור מעורב של Java ו-Kotlin. אם תת-הפרויקט הזה מכיל רק קוד Kotlin, אפשר לשנות את השם של הספרייה הזו kotlin.

Android
היא פלטפורמת Kotlin-first. יש תמיכה במקור Java, אבל ממשקי API חדשים מטרגטים את שפת Kotlin. מומלץ להשתמש ב-Kotlin לכל הקוד החדש והעדכונים העיקריים בקוד הקיים.

↳ res/

קובצי משאבים ב-Android

מכיל משאבי אפליקציות, כמו קובצי XML ותמונות. כל האפליקציות משתמשות במשאבים בסיסיים מסוימים, כמו סמלי מרכז האפליקציות, אבל רבים מהמשאבים האלה, כמו פריסות ותפריטים, משמשים רק באפליקציות שמבוססות על תצוגה. אפליקציות ליצירת אפליקציות משתמשות במשאבי מחרוזות שמוגדרים בספרייה הזו.

↳ AndroidManifest.xml

מטא-נתונים של אפליקציות ל-Android

ייקרא על ידי מנהל החבילות של Android כדי לומר למערכת

  • רכיבים שהוגדרו על ידי האפליקציה שלכם
  • ההרשאות הנדרשות
  • אין לי מכשיר תואם
  • הגבלות על פלטפורמת Android

↳ androidTest/

בדיקת מכשיר קבוצת מקור

'מכיל מקור' לבדיקות שירוצו במכשיר או באמולטור מבוסס Android. לבדיקות האלה יש גישה לסביבת Android אמיתית, אבל הן מבצעות לאט יותר מאשר בבדיקות המארח.

כל קובצי המקור בקבוצת המקור main זמינים לשימוש על ידי המקור ב-androidTest.

↳ test/

בדיקת מארח קבוצת מקור

מכילה מקור לבדיקות שרצות באופן מקומי ב-JVM, בניגוד לבדיקות שרצות במכשיר. הרצת הבדיקות האלה מהירה יותר מבדיקות המכשיר. עם זאת, כל הפעלות המערכת (כולל מחזורי החיים שמריצים את האפליקציה) חייבות להיות מוקפות, לזייף, לדגום או לבצע סימולציה אחרת.

כל קובצי המקור בקבוצת המקור main זמינים לשימוש על ידי המקור בבדיקה.

↳ proGuard-כללים.pro

כללים להגדרת R8

הגדרת כללים לשליטה בכיווץ, באופטימיזציה ובערפול קוד (obfuscation) של אפליקציות. שיטת R8 מסירה קוד ומשאבים שלא נחוצים, מבצעת אופטימיזציה לביצועים של סביבת זמן ריצה ומצמצמת עוד יותר את הקוד על ידי שינוי השם של המזהים.