סקירה כללית של פרויקטים

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

כשאתם מתחילים פרויקט חדש, Android Studio יוצר את המבנה הנדרש לכל הקבצים שלכם ומאפשר לכם לראות אותם בחלון Project ב-Android Studio. כדי לפתוח את החלון, בוחרים באפשרות View > Tool Windows > Project.

הדף הזה מספק סקירה כללית של הרכיבים העיקריים בפרויקט.

מודולים

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

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

כדי להוסיף מודול חדש לפרויקט, לוחצים על קובץ > חדש > מודול חדש.

ב-Android Studio יש כמה סוגים שונים של מודולים:

מודול האפליקציה ל-Android
מספק קונטיינר לקוד המקור, לקובצי המשאבים ולהגדרות ברמת האפליקציה, כמו קובץ ה-build ברמת המודול וקובץ Android Manifest. כשיוצרים פרויקט חדש, מודול האפליקציה שמוגדר כברירת מחדל נקרא 'app'.

ב-Android Studio יש את סוגי המודולים הבאים לאפליקציות:

  • טלפון וטאבלט
  • Automotive
  • Wear OS
  • טלוויזיה
  • הכלי ליצירת פרופיל Baseline
  • השוואה לשוק

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

מידע נוסף על הוספת מודול זמין במאמר הוספת מודול למכשיר חדש.

מודול תכונות
מייצגת תכונה מודולרית של האפליקציה שאפשר להשתמש בה באמצעות Play Feature Delivery. לדוגמה, באמצעות מודולים של תכונות אפשר לספק למשתמשים תכונות מסוימות של האפליקציה על פי דרישה או כחוויות ללא התקנה דרך Google Play ללא התקנה.

ב-Android Studio יש את סוגי המודולים הבאים של תכונות:

  • מודול של תכונה דינמית
  • מודול של ספריית תכונות דינמיות מיידיות

למידע נוסף, אפשר לקרוא את המאמר העלאת פיצ'רים ב-Play.

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

בחלון Create New Module, ב-Android Studio מוצעים הסוגים הבאים של מודולים של ספריות:

  • ספריית Android: מכילה את כל סוגי הקבצים שנתמכים בפרויקט Android, מלבד קוד C++‏ מקורי, כולל קוד מקור, משאבים וקובצי מניפסט של Java ו-Kotlin. תוצאת ה-build היא קובץ Android Archive‏ (AAR) שאפשר להוסיף כיחס תלות למודול האפליקציה של Android.
  • ספרייה מותאמת של Android: מכילה את כל סוגי הקבצים שנתמכים בפרויקט Android, בדומה לספריית Android. עם זאת, ספריות מקוריות של Android יכולות גם להכיל קוד מקור של C++‎. תוצאת ה-build היא קובץ Android Archive‏ (AAR) שאפשר להוסיף כיחסי תלות למודולים של אפליקציות Android.
  • ספריית Java או Kotlin: מכילה רק קובצי מקור של Kotlin או Java. תוצאת ה-build היא קובץ Java Archive (JAR) שאפשר להוסיף כתלות במודולים של אפליקציות ל-Android או בפרויקטים אחרים שלKotlin או Java.

לפעמים קוראים למודולים פרויקטים משניים, כי גם ב-Gradle מודולים נקראים פרויקטים.

כשיוצרים מודול ספרייה ורוצים להוסיף אותו כיחס תלות למודול האפליקציה ל-Android, צריך להצהיר עליו באופן הבא:

מגניב

dependencies {
    implementation project(':my-library-module')
}

Kotlin

dependencies {
    implementation(project(":my-library-module"))
}

קבצים בפרויקט

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

חלק מההבדלים המבניים בין התצוגה של Android לבין המבנה בדיסק הם שהתצוגה של Android:

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

בכל מודול של אפליקציית Android, הקבצים מוצגים בקבוצות הבאות:

מניפסטים
מכיל את הקובץ AndroidManifest.xml.
java
מכיל את קובצי קוד המקור של Kotlin ו-Java, מופרדים בשמות חבילות, כולל קוד הבדיקה של JUnit.
res
מכילה את כל המשאבים שאינם קוד, כמו מחרוזות של ממשק המשתמש ותמונות בפורמט bitmap, שמחולקות לספריות משנה תואמות. אפשר לקרוא מידע נוסף על סוגי המשאבים האפשריים במאמר סקירה כללית של משאבי האפליקציות.

תצוגת הפרויקט

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

כשבוחרים בתצוגה Project, אפשר לראות הרבה יותר קבצים ומספרות, כולל:

module-name/
build/
מכיל את הפלט של ה-build.
libs/
מכילה ספריות פרטיות.
src/
מכילה את כל קובצי הקוד והמשאבים של המודול בספריות המשנה הבאות:
androidTest/
מכיל קוד לבדיקות של מכשירי מדידה שפועלות במכשיר Android. מידע נוסף זמין במאמר בדיקה ב-Android Studio.
cpp/
מכיל קוד מקומי של C או C++‎ באמצעות Java Native Interface‏ (JNI). למידע נוסף, עיינו במסמכי העזרה של Android NDK.
main/
מכיל את הקבצים 'העיקריים' של קבוצת המקור: הקוד והמשאבים של Android ששותפו על ידי כל הווריאציות של ה-build (קבצים של וריאציות אחרות של build נמצאים בספריות אחיות, למשל src/debug/ לסוג ה-build של ניפוי באגים):
AndroidManifest.xml
תיאור של אופי האפליקציה וכל אחד מהרכיבים שלה. למידע נוסף, עיינו בסקירה הכללית על מניפסט האפליקציה.
java/
מכילה מקורות קוד Kotlin או Java, או את שניהם, אם לאפליקציה יש גם קוד מקור של Kotlin וגם Java.
kotlin/
מכיל רק מקורות קוד של Kotlin.
res/
מכיל משאבי אפליקציה, כמו קבצים ניתנים לציור וקבצי מחרוזות של ממשק משתמש. מידע נוסף זמין בסקירה הכללית על משאבי האפליקציה.
assets/
מכיל קבצים שצריך לקמפל לקובץ APK כפי שהם. לדוגמה, זהו מיקום טוב לתמונות טקסטורה ולנתוני משחק. אפשר לנווט בספרייה הזו באותו אופן שבו מנווטים במערכת קבצים רגילה, באמצעות כתובות URI ולקרוא קבצים כזרם של ביטים באמצעות AssetManager.
test/
מכיל קוד לבדיקות מקומיות שפועלות ב-JVM המארח.
build.gradle או build.gradle.kts (מודול)
הגדרת תצורות build ספציפיות למודול. build.gradle הוא שם הקובץ הנכון אם משתמשים ב-Groovy כשפת סקריפט ה-build, ו-build.gradle.kts אם משתמשים בסקריפט Kotlin.
build.gradle או build.gradle.kts (פרויקט)
הגדרת תצורת ה-build שחלה על כל המודולים. build.gradle הוא שם הקובץ הנכון אם משתמשים ב-Groovy כשפת סקריפט ה-build, ו-build.gradle.kts אם משתמשים בסקריפט Kotlin. הקובץ הזה הוא חלק בלתי נפרד מהפרויקט, לכן חשוב לשמור עליו במערכת בקרת הגרסאות עם כל שאר קודי המקור.

במאמר הגדרת ה-build תוכלו לקרוא מידע נוסף על קובצי build אחרים.

הגדרות המבנה של הפרויקט

כדי לשנות הגדרות שונות בפרויקט ב-Android Studio, פותחים את תיבת הדו-שיח Project Structure (מבנה הפרויקט) בלחיצה על File (קובץ) > Project Structure (מבנה הפרויקט). הוא מכיל את הקטעים הבאים:

  • Project:הגדרת הגרסה של Gradle והפלאגין של Android Gradle ושם המיקום של המאגר.
  • מיקום ה-SDK: ההגדרה הזו קובעת את המיקום של ה-JDK, Android SDK ו-Android NDK שבהם משתמשים בפרויקט.
  • משתנים: מאפשרים לערוך משתנים שמשמשים בסקריפטים של ה-build.
  • מודולים: מאפשרים לערוך הגדרות build ספציפיות למודולים, כולל ערכת ה-SDK היעד והערכה המינימלית, חתימה על האפליקציה ויחסי התלות בספריות. דף ההגדרות של כל מודול מחולק לכרטיסיות הבאות:
    • מאפיינים: מציינים את הגרסאות של ה-SDK וכלי ה-build שבהם צריך להשתמש כדי לקמפל את המודול.
    • Signing:קובע את האישור שמשמש לחתימה על האפליקציה.
  • Dependencies:רשימה של יחסי התלות בספרייה, בקובץ ובמודול של המודול הזה. אפשר להוסיף, לשנות ולמחוק יחסי תלות בחלונית הזו. מידע נוסף על יחסי תלות בין מודולים זמין במאמר הגדרת וריאנטים של גרסאות build.

  • Build Variants: מאפשרת להגדיר סוגים שונים של build וטעמים שונים לפרויקט.

    • Flavors: מאפשרים ליצור כמה flavors של build, שבכל אחד מהם מצוינות קבוצות של הגדרות תצורה, כמו גרסת ה-SDK המינימלית והיעד של המודול וקוד הגרסה ושם הגרסה.

      לדוגמה, אפשר להגדיר גרסה אחת עם גרסת SDK מינימלית של 21 וגרסת SDK יעד של 29, וגרסה אחרת עם גרסת SDK מינימלית של 24 וגרסת SDK יעד של 33.

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