הגדרת מודול האפליקציה (original) (raw)

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

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

לכל אפליקציה ל-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 מסורתית השם, הכללים למתן שמות למזהה האפליקציה הן קצת יותר מגבילות:

כשיוצרים פרויקט חדש ב-Android Studio, 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.