משתני סביבה

אתם יכולים להגדיר את ההתנהגות של Android Studio ושל כלי שורת הפקודה באמצעות הגדרת משתני סביבה. אחד ממשתני הסביבה הכי שימושיים להגדרה הוא ANDROID_HOME, שכלים רבים קוראים כדי לקבוע את ספריית ההתקנה של Android SDK. כדי להריץ כלים משורת הפקודה בלי לכלול את הנתיב המלא לקובץ ההפעלה, צריך להגדיר את משתנה הסביבה של נתיב החיפוש של הפקודה כך שיכלול את ANDROID_HOME/tools, ANDROID_HOME/tools/bin ו-ANDROID_HOME/platform-tools.

איך מגדירים משתני סביבה

בדוגמאות הבאות אפשר לראות איך מגדירים משתני סביבה בחלון מסוף ובסקריפט מעטפת למערכות הפעלה שונות. הגדרות משתנים בחלונות טרמינל תקפות רק כל עוד החלון פתוח. ב-macOS וב-Linux, בכל פעם שמתחיל מעטפת חדשה, הגדרות המשתנים מוגדרות בסקריפטים של אתחול המעטפת. ב-Windows, אפשר להגדיר משתנים דרך הגדרות המערכת.

‫Windows: בחלון טרמינל, מקלידים את הפקודה הבאה:

set HTTP_PROXY=myserver:1981

אפשר גם להוסיף אותו דרך ממשק המשתמש של Windows. כדי לדעת איך עושים את זה, אפשר לעיין בתיעוד של גרסת Windows שלכם.

‫macOS ו-Linux: השיטה המדויקת להגדרת משתני סביבה תלויה במעטפת שבה אתם משתמשים. כדי לברר איזה סוג של מעטפת פועל, מקלידים את הפקודה הבאה:

echo $0

במעטפות כמו Gnu Bash או Zsh, משתנים מוגדרים באמצעות התחביר הבא:

export VARIABLE_NAME=<new-value>

במעטפות אחרות, כמו TCSH, מגדירים משתנים באמצעות התחביר הבא:

setenv VARIABLE_NAME <new-value>

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

המיקום של סקריפט ההפעלה של המעטפת תלוי במעטפת שבה משתמשים. ב-Gnu Bash, המיקום יכול להיות ~/.bash_profile. ב-Zsh, המיקום יכול להיות ~/.zprofile. ב-TCSH, המיקום יכול להיות ~/.cshrc. כדי לוודא, כדאי לעיין במסמכי העזרה של המעטפת שבה אתם משתמשים.

אפשר גם לעדכן את משתנה הסביבה PATH כך שיכלול את מיקומי הכלים.

ב-Gnu Bash או ב-Zsh:

export ANDROID_HOME=~/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools
  

וב-TCSH:

setenv ANDROID_HOME ~/Library/Android/sdk
setenv PATH $PATH\:$ANDROID_HOME/tools\:$ANDROID_HOME/tools/bin\:$ANDROID_HOME/platform-tools
  

הפניה למשתנים

בטבלה הבאה מתוארים משתני סביבה נפוצים לכלים של Android SDK.

טבלה 1. משתני סביבה

משתני סביבה של Android SDK
ANDROID_HOME ההגדרה קובעת את הנתיב לספריית ההתקנה של ה-SDK. אחרי שמגדירים את הערך, הוא בדרך כלל לא משתנה ויכול להיות משותף לכמה משתמשים באותה מכונה. ‫ANDROID_SDK_ROOT, שגם מצביע על ספריית ההתקנה של ה-SDK, הוצא משימוש. אם תמשיכו להשתמש בו, Android Studio והפלאגין של Android Gradle יבדקו שהמשתנים הישנים והחדשים עקביים.
ANDROID_USER_HOME מגדיר את הנתיב לספריית העדפות המשתמש עבור כלים שמהווים חלק מ-Android SDK. ברירת המחדל היא $HOME/.android/.

חלק מהכלים הישנים יותר, כמו Android Studio מגרסה 4.3 ומטה, לא קוראים את הקובץ ANDROID_USER_HOME. כדי לשנות את מיקום העדפות המשתמש בכלים הישנים האלה, צריך להגדיר את ANDROID_SDK_HOME לספריית האב שרוצים ליצור את הספרייה .android תחתיה.

REPO_OS_OVERRIDE מגדירים את המשתנה הזה לערך windows,‏ macosx או linux כשמשתמשים ב-sdkmanager כדי להוריד חבילות למערכת הפעלה שונה מהמחשב הנוכחי.
משתני סביבה להגדרת Android Studio
משתני ההגדרה של Android Studio מכילים הגדרות שמתאימות אישית את המיקום של קובצי ההגדרה ושל ה-JDK. בזמן ההפעלה, Android Studio בודק את המשתנים האלה כדי למצוא הגדרות. מידע נוסף זמין במאמר הגדרת Android Studio.
STUDIO_VM_OPTIONS מגדיר את המיקום של הקובץ studio.vmoptions. הקובץ הזה מכיל הגדרות שמשפיעות על מאפייני הביצועים של המכונה הווירטואלית Java HotSpot. אפשר לגשת לקובץ הזה גם מתוך Android Studio. איך מתאימים אישית את האפשרויות של מכונה וירטואלית
STUDIO_PROPERTIES מגדיר את המיקום של קובץ idea.properties. הקובץ הזה מאפשר לכם להתאים אישית את המאפיינים של סביבת הפיתוח המשולבת (IDE) של Android Studio, כמו הנתיב לתוספים שהמשתמש התקין וגודל הקובץ המקסימלי שנתמך על ידי סביבת הפיתוח המשולבת. איך מתאימים אישית את מאפייני ה-IDE
STUDIO_JDK הגדרת המיקום של JDK שבו פועל Android Studio. כשמפעילים את סביבת הפיתוח המשולבת, היא בודקת את משתני הסביבה STUDIO_JDK, JDK_HOME ו-JAVA_HOME, לפי הסדר הזה.
STUDIO_GRADLE_JDK מגדיר את המיקום של ה-JDK ש-Android Studio משתמש בו כדי להפעיל את Gradle daemon. כשמפעילים את ה-IDE, הוא בודק קודם את STUDIO_GRADLE_JDK. אם לא מוגדר STUDIO_GRADLE_JDK, סביבת הפיתוח המשולבת (IDE) משתמשת בערך שמוגדר בהגדרות של מבנה הפרויקט.
משתני סביבה של אמולטור
כברירת מחדל, האמולטור שומר קובצי הגדרה ב-$HOME/.android/ ונתוני AVD ב-$HOME/.android/avd/. אפשר לשנות את ברירות המחדל באמצעות הגדרת משתני הסביבה הבאים. הפקודה emulator -avd <avd_name> מחפשת בספרייה avd לפי סדר הערכים ב-$ANDROID_AVD_HOME,‏ $ANDROID_USER_HOME/avd/ ו-$HOME/.android/avd/.

כדי לקבל עזרה לגבי משתני סביבה של אמולטור, מקלידים emulator -help-environment בשורת הפקודה. מידע על אפשרויות שורת הפקודה של emulator זמין במאמר הפעלת האמולטור משורת הפקודה.

ANDROID_EMULATOR_HOME מגדירה את הנתיב לספריית התצורה של האמולטור הספציפי למשתמש. ברירת המחדל היא $ANDROID_USER_HOME.

כלים ישנים יותר, כמו Android Studio מגרסה 4.3 ומטה, לא קוראים את ANDROID_USER_HOME. בכלים האלה, ערך ברירת המחדל הוא $ANDROID_SDK_HOME/.android.

ANDROID_AVD_HOME ההגדרה קובעת את הנתיב לספרייה שמכילה את כל הקבצים הספציפיים ל-AVD, שכוללים בעיקר תמונות דיסק גדולות מאוד. מיקום ברירת המחדל הוא $ANDROID_EMULATOR_HOME/avd/. כדאי לציין מיקום חדש אם: אין מספיק מקום פנוי בכונן במיקום ברירת המחדל.
כשמפעילים את אמולטור Android, הוא שולח שאילתות למשתני הסביבה הבאים:
ANDROID_LOG_TAGS מידע נוסף זמין במאמר בנושא ANDROID_LOG_TAGS.
HTTP_PROXY

מכיל את הגדרת ה-proxy ל-HTTP/HTTPS עבור שרת proxy גלובלי ל-HTTP. משתמשים בנקודתיים (:) כמפריד בין המארח לבין היציאה. לדוגמה, set HTTP_PROXY=myserver:1981.

זהה להגדרה של הארגומנט -http-proxy proxy כשמריצים את האמולטור משורת הפקודה.

ANDROID_VERBOSE מידע נוסף זמין במאמר בנושא ANDROID_VERBOSE.
ANDROID_HOME מידע נוסף זמין במאמר בנושא ANDROID_HOME.
ANDROID_EMULATOR_USE_SYSTEM_LIBS הוא מכיל את הערך 0 (ברירת מחדל) או 1. ערך של 1 מציין שהמערכת משתמשת בקובץ libstdc++.so במקום בקובץ שמגיע עם האמולטור. מגדירים את משתנה הסביבה הזה רק אם האמולטור לא מופעל במערכת Linux בגלל בעיה בספריית המערכת. לדוגמה, חלק מספריות של מנהלי התקנים של Linux Radeon GL דורשות קובץ libstdc++.so עדכני יותר.
אודיו באמולטור מהיר (QEMU)
QEMU_AUDIO_DRV QEMU_AUDIO_OUT_DRV QEMU_AUDIO_IN_DRV ב-Linux, אפשר לשנות את קצה העורפי של האודיו שמוגדר כברירת מחדל באמולטור על ידי הגדרת משתנה הסביבה QEMU_AUDIO_DRV לאחד מהערכים הבאים:
  • ‫alsa: שימוש בחלק האחורי של Advanced Linux Sound Architecture‏ (ALSA)
  • ‫esd: שימוש בקצה העורפי של Enlightened Sound Daemon‏ (EsounD)
  • ‫sdl: שימוש בחלק האחורי של האודיו Simple DirectMedia Layer‏ (SDL) (אין תמיכה בקלט אודיו)
  • ‫oss:: שימוש בעורף של מערכת הקול הפתוחה (OSS)
  • ‫none:: לא תומך באודיו
set QEMU_AUDIO_DRV=alsa

אפשר גם להשתמש בשרתי קצה עורפיים שונים לקלט אודיו ולפלט אודיו. לשם כך, בוחרים באחד מהערכים של QEMU עבור משתני הסביבה QEMU_AUDIO_OUT_DRV ו-QEMU_AUDIO_IN_DRV:

set QEMU_AUDIO_OUT=esd
set QEMU_AUDIO_IN=oss

אם רוצים להשבית את התמיכה באודיו, משתמשים באפשרות emulator -no-audio או מגדירים את QEMU_AUDIO_DRV ל-none. יכול להיות שתצטרכו להשבית את האודיו במקרים הבאים:

  • במקרים נדירים, מנהלי התקן של אודיו עלולים לגרום להפעלה מחדש של Windows בזמן שהאמולטור פועל.
  • במחשבי Linux מסוימים, יכול להיות שהאמולטור ייתקע בהפעלה כשהתמיכה באודיו מופעלת.
משתני סביבה של adb
ANDROID_SERIAL משתמשים במשתנה הזה כדי לספק מספר סידורי של אמולטור, כמו emulator-5555, לפקודה adb. אם מגדירים את המשתנה הזה אבל משתמשים באפשרות -s כדי לציין מספר סידורי משורת הפקודה, הקלט משורת הפקודה מבטל את הערך ב-ANDROID_SERIAL.

בדוגמה הבאה מוגדר ANDROID_SERIAL ומופעלת הפקודה adb install helloworld.apk, שמתקינה את חבילת האפליקציה ל-Android באמולטור emulator-5555.

set ANDROID_SERIAL=emulator-555
adb install helloWorld.apk
משתני סביבה של adb logcat
ANDROID_LOG_TAGS משתמשים במשתנה הסביבה הזה כדי להגדיר ביטוי מסנן שמוגדר כברירת מחדל כשמריצים את adb logcat ממחשב הפיתוח. לדוגמה:
set ANDROID_LOG_TAGS=ActivityManager:I MyApp:D *:S

ביטוי הסינון משתמש באותו תחביר כמו האפשרות -logcat tags של האמולטור.

מידע נוסף ודוגמאות זמינים במאמר בנושא סינון של פלט יומן.

ADB_TRACE רשימה מופרדת בפסיקים של פרטי ניפוי הבאגים שרוצים לרשום ביומן. הערכים האפשריים הם: all,‏ adb,‏ sockets,‏ packets,‏ rwx,‏ usb,‏ sync,‏ sysdeps,‏ transport ו-jdwp.

כדי להציג את יומני adb של לקוחות adb ושרת adb, מגדירים את ADB_TRACE לערך all ואז מפעילים את הפקודה adb logcat, באופן הבא:

set ADB_TRACE=all
adb logcat
ANDROID_VERBOSE רשימה מופרדת בפסיקים של אפשרויות פלט מפורט (תגי ניפוי באגים) שמשמשות את האמולטור. בדוגמה הבאה מוצג ANDROID_VERBOSE שמוגדר באמצעות תגי הניפוי באגים debug-socket ו-debug-radio:
set ANDROID_VERBOSE=socket,radio

זה כמו לציין את הארגומנטים -verbose -verbose-socket -verbose-radio יחד כשמריצים את האמולטור משורת הפקודה.

המערכת מתעלמת מתגי ניפוי באגים שלא נתמכים. מידע נוסף על תגי ניפוי באגים זמין במאמר emulator -help-debug-tags.