הגדרת מודול האפליקציה

בדף הזה מתוארות הגדרות שימושיות לאפליקציה ברמת המודול build.gradle.kts חדש. בנוסף להצגת סקירה כללית של מאפיינים חשובים שמוגדרים קובץ build.gradle.kts, כך עושים את זה:

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

הגדרת מזהה האפליקציה

לכל אפליקציה ל-Android יש מזהה אפליקציה ייחודי שנראה כמו Java או חבילת Kotlin למשל, com.example.myapp. המזהה הזה הוא המזהה הייחודי של האפליקציה במכשיר ובחנות Google Play.

מזהה האפליקציה שלך מוגדר באמצעות המאפיין applicationId במודול קובץ build.gradle.kts, כמו שאפשר לראות כאן. עדכון הערך של applicationId על ידי החלפת com.example.myapp עם המזהה של האפליקציה:

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"
        minSdk = 15
        targetSdk = 24
        versionCode = 1
        versionName = "1.0"
    }
    ...
}

מגניב

android {
    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    ...
}

למרות שמזהה האפליקציה נראה כמו חבילת Kotlin או Java מסורתית השם, הכללים למתן שמות למזהה האפליקציה הן קצת יותר מגבילות:

  • חייבים להיות בו שני קטעים לפחות (נקודה אחת או יותר).
  • כל מקטע חייב להתחיל באות.
  • כל התווים חייבים להיות אלפאנומריים או לקו תחתון [a-zA-Z0-9_].

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

מומלץ לבצע את הפעולות הבאות כשמגדירים את מזהה האפליקציה:

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

שינוי מזהה האפליקציה לבדיקה

כברירת מחדל, כלי ה-build מחילים מזהה אפליקציה על בדיקת אינסטרומנטציה APK שמשתמש במזהה האפליקציה של גרסת ה-build הנתונה שמצורף אליו .test. לדוגמה, APK לבדיקה עבור וריאנט build אחד (com.example.myapp.free) כולל את מזהה האפליקציה com.example.myapp.free.test.

למרות שאין צורך בכך, אפשר לשנות את מזהה האפליקציה על ידי הגדרת הנכס testApplicationId ב-defaultConfig או חסימת productFlavor.

הגדרת מרחב השמות

לכל מודול של Android יש מרחב שמות שמשמש כ-Kotlin או Java שם חבילה של R ו-BuildConfig המחלקות שנוצרו בו.

מרחב השמות שלך מוגדר על ידי המאפיין namespace במודול build.gradle.kts, כמו שמוצג בקטע הקוד הבא. namespace מוגדר בהתחלה לשם החבילה שתבחרו יוצרים את הפרויקט.

Kotlin

android {
    namespace = "com.example.myapp"
    ...
}

מגניב

android {
    namespace "com.example.myapp"
    ...
}

בזמן בניית האפליקציה לחבילת האפליקציה הסופית (APK), ה-Android כלי build משתמשים במרחב השמות בתור מרחב השמות של R שנוצר על ידי האפליקציה שמשמשת לגישה אל משאבים לאפליקציות. לדוגמה, בקובץ ה-build הקודם, המחלקה R נוצרת ב- com.example.myapp.R.

השם שהגדרתם למאפיין namespace של הקובץ build.gradle.kts תמיד צריך להתאים לשם החבילה הבסיסית של הפרויקט, שבו משאירים את פעילויות וקוד אפליקציה אחר. אפשר ליצור חבילות משנה אחרות ב- את הפרויקט, אבל הקבצים האלה חייבים לייבא את המחלקה R באמצעות מרחב השמות מהמאפיין namespace.

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

שינוי מרחב השמות

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

במקרים כאלה, משנים את מרחב השמות על ידי עדכון המאפיין namespace בקובץ build.gradle.kts של המודול, ללא קשר מזהה האפליקציה. לפני שתעשו זאת, עליכם לוודא שמזהה הבקשה שלכם הוא מוגדרת במפורש, כך ששינוי מרחב השמות לא ישנה גם את מזהה האפליקציה. למידע נוסף על ההשפעה של מרחב השמות במאמר הגדרת מזהה האפליקציה.

אם יש לכם שמות שונים ל-namespace ו-Gradle applicationId, העותק של כלי ה-build מזהה האפליקציה בקובץ המניפסט הסופי של האפליקציה בסוף ה-build. לכן, אם בודקים את קובץ AndroidManifest.xml אחרי build, המאפיין package מוגדר מזהה האפליקציה. המאפיין package של המניפסט שמוזג הוא המקום שבו למעשה, חנות Google Play ופלטפורמת Android מזהים את האפליקציה שלכם.

שינוי מרחב השמות לבדיקה

מרחב השמות שמוגדר כברירת מחדל עבור קבוצות המקורות androidTest ו-test הוא מרחב שמות, כאשר .test נוסף בסוף. לדוגמה, אם המאפיין namespace בקובץ build.gradle הוא com.example.myapp, כברירת מחדל, מרחב השמות לבדיקה מוגדר כ- com.example.myapp.test כדי לשנות את מרחב השמות לבדיקה, משתמשים ב testNamespace כפי שמוצג בקטע הקוד הבא:

Kotlin

android {
    namespace = "com.example.myapp"
    testNamespace = "com.example.mytestapp"
    ...
}

מגניב

android {
    namespace "com.example.myapp"
    testNamespace "com.example.mytestapp"
    ...
}

זהירות: אין להגדיר את testNamespace ואת namespace לאותו ערך, אחרת מרחב שמות התנגשויות מתרחשות.

למידע נוסף על בדיקות, אפשר לעיין במאמר בדיקת אפליקציות ב-Android.