בדף הזה מתוארות הגדרות שימושיות של אפליקציות בקובץ 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" } ... }
Groovy
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" ... }
Groovy
android { namespace "com.example.myapp" ... }
במהלך ה-build של האפליקציה לחבילת האפליקציה הסופית (APK), כלי ה-build של Android משתמשים במרחב השמות כמרחב השמות של הכיתה R
שנוצרה באפליקציה, שמשמשת לגישה למשאבי האפליקציה.
לדוגמה, בקובץ ה-build הקודם, הכיתה R
נוצרת ב-com.example.myapp.R
.
השם שהגדרתם למאפיין namespace
בקובץ build.gradle.kts
צריך תמיד להתאים לשם החבילה הבסיסית של הפרויקט, שבה שומרים את הפעילויות ואת קוד האפליקציה האחר. אפשר לכלול בחבילת המשנה הזו חבילות משנה אחרות, אבל הקבצים האלה חייבים לייבא את הכיתה R
באמצעות מרחב השמות מנכס namespace
.
כדי לפשט את תהליך העבודה, מומלץ לשמור על זהות בין מרחב השמות למזהה האפליקציה, כפי שהם מוגדרים כברירת מחדל.
שינוי מרחב השמות
ברוב המקרים, כדאי להשאיר את מרחבי השמות ומזהי האפליקציות ללא שינוי, כפי שהם מוגדרים כברירת מחדל. עם זאת, יכול להיות שתצטרכו לשנות את מרחב השמות בשלב מסוים אם תערכו ארגון מחדש של הקוד או כדי למנוע התנגשויות במרחב השמות.
במקרים כאלה, משנים את מרחב השמות על ידי עדכון המאפיין namespace
בקובץ build.gradle.kts
של המודול, ללא קשר למזהה האפליקציה. לפני כן, חשוב לוודא שמזהה האפליקציה מוגדר באופן מפורש, כדי ששינוי מרחב השמות לא ישנה גם את מזהה האפליקציה. למידע נוסף על האופן שבו מרחב השמות יכול להשפיע על מזהה האפליקציה, ראו הגדרת מזהה האפליקציה.
אם יש שמות שונים ל-namespace
ול-applicationId
של Gradle, כלי ה-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" ... }
Groovy
android { namespace "com.example.myapp" testNamespace "com.example.mytestapp" ... }
זהירות: אל תגדירו ל-testNamespace
ול-namespace
את אותו ערך, אחרת יהיו התנגשויות במרחב השמות.
מידע נוסף על בדיקות זמין במאמר בדיקת אפליקציות ב-Android.