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

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

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

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

Groovy

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 ל-ניפוי באגים ול-הפצה, ואפשר להגדיר עוד לפי הצורך.