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

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

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

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

מודולים

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

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

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

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

מודול של אפליקציית Android

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

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

  • טלפון וטאבלט
  • Automotive
  • Wear OS
  • טלוויזיה

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

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

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

‫Android Studio מציע את סוגי מודולי התכונות הבאים:

  • מודול תכונות דינמי
  • Instant Dynamic Feature Library Module

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

מודול הספרייה

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

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

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

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

מגניב

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

Kotlin

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

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

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

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

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

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

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

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

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

מניפסטים
מכיל את הקובץ AndroidManifest.xml.
java
Contains the Kotlin and Java source code files, separated by package names, including JUnit test code.
res
מכילה את כל המשאבים שאינם קוד, כמו מחרוזות של ממשק המשתמש ותמונות bitmap, שמחולקים לספריות משנה תואמות. מידע נוסף על סוגי משאבים אפשריים זמין במאמר סקירה כללית על משאבי אפליקציות.

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

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

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

module-name/
build/
מכיל פלטים של build.
libs/
מכיל ספריות פרטיות.
src/
מכיל את כל הקוד וקבצי המשאבים של המודול בספריות המשנה הבאות:
androidTest/
מכיל קוד לבדיקות מכשור שפועלות במכשיר Android. מידע נוסף זמין במאמר בנושא בדיקה ב-Android Studio.
cpp/
מכיל קוד מקורי של C או C++‎ באמצעות Java Native Interface‏ (JNI). מידע נוסף זמין במסמכי התיעוד של Android NDK.
main/
Contains the "main" source set files: the Android code and resources shared by all build variants (files for other build variants reside in sibling directories, such as src/debug/ for the debug build type):
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.gradle הוא שם הקובץ הנכון אם משתמשים ב-Groovy כשפת הסקריפט לבנייה, ו-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 וכלי הבנייה שבהם יש להשתמש כדי לקמפל את המודול.
    • חתימה: מציין את האישור שבו יש להשתמש כדי לחתום על האפליקציה.
  • Dependencies: רשימת יחסי התלות של הספרייה, הקובץ והמודול במודול הזה. בחלונית הזו אפשר להוסיף, לשנות ולמחוק תלויות. מידע נוסף על תלות בין מודולים זמין במאמר בנושא הגדרת וריאציות של בנייה.

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

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

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

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