בדף הזה מתוארות הגדרות שימושיות לאפליקציה ברמת המודול 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.