एनवायरमेंट वैरिएबल

एनवायरमेंट वैरिएबल सेट करके, 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 में मौजूद हो सकती है. टीसीएसएच के लिए, जगह की जानकारी ~/.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
  

साथ ही, टीसीएसएच के लिए:

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

वैरिएबल का रेफ़रंस

यहां दी गई टेबल में, Android SDK टूल के लिए आम तौर पर इस्तेमाल किए जाने वाले एनवायरमेंट वैरिएबल के बारे में बताया गया है.

पहली टेबल. एनवायरमेंट वैरिएबल

Android SDK के एनवायरमेंट वैरिएबल
ANDROID_HOME इससे एसडीके टूल इंस्टॉल करने की डायरेक्ट्री का पाथ सेट किया जाता है. एक बार सेट करने के बाद, आम तौर पर इसकी वैल्यू नहीं बदलती. साथ ही, इसे एक ही मशीन पर कई उपयोगकर्ता शेयर कर सकते हैं. ANDROID_SDK_ROOT को अब इस्तेमाल नहीं किया जा सकता. यह एसडीके इंस्टॉल करने की डायरेक्ट्री की ओर भी इशारा करता है. इसका इस्तेमाल जारी रखने पर, 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 Virtual Machine की परफ़ॉर्मेंस की विशेषताओं पर असर डालती हैं. इस फ़ाइल को Android Studio से भी ऐक्सेस किया जा सकता है. अपने वीएम के विकल्पों को पसंद के मुताबिक बनाएं देखें.
STUDIO_PROPERTIES इससे idea.properties फ़ाइल की जगह की जानकारी सेट की जाती है. इस फ़ाइल की मदद से, Android Studio IDE की प्रॉपर्टी को पसंद के मुताबिक बनाया जा सकता है. जैसे, उपयोगकर्ता के इंस्टॉल किए गए प्लगिन का पाथ और IDE के साथ काम करने वाली फ़ाइल का ज़्यादा से ज़्यादा साइज़. अपने आईडीई की प्रॉपर्टी को पसंद के मुताबिक बनाएं लेख पढ़ें.
STUDIO_JDK Android Studio जिस JDK में चलता है उसकी जगह की जानकारी सेट करता है. आईडीई लॉन्च करने पर, यह STUDIO_JDK, JDK_HOME, और JAVA_HOME एनवायरमेंट वैरिएबल की जांच करता है. यह जांच इसी क्रम में की जाती है.
STUDIO_GRADLE_JDK यह विकल्प, JDK की उस जगह की जानकारी सेट करता है जिसका इस्तेमाल Android Studio, Gradle डेमॉन को शुरू करने के लिए करता है. आईडीई लॉन्च करने पर, यह सबसे पहले STUDIO_GRADLE_JDK की जांच करता है. अगर STUDIO_GRADLE_JDK तय नहीं किया गया है, तो आईडीई, प्रोजेक्ट स्ट्रक्चर की सेटिंग में सेट की गई वैल्यू का इस्तेमाल करता है.
एम्युलेटर के एनवायरमेंट वैरिएबल
डिफ़ॉल्ट रूप से, एम्युलेटर कॉन्फ़िगरेशन फ़ाइलों को $HOME/.android/ में और एवीडी डेटा को $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

इस कुकी में, ग्लोबल एचटीटीपी प्रॉक्सी के लिए एचटीटीपी/एचटीटीपीएस प्रॉक्सी सेटिंग होती है. यह होस्ट और पोर्ट के बीच कोलन (:) सेपरेटर का इस्तेमाल करता है. उदाहरण के लिए, 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:: Open Sound System (OSS) बैकएंड का इस्तेमाल करें
  • none:: ऑडियो के साथ काम नहीं करता
set QEMU_AUDIO_DRV=alsa

ऑडियो इनपुट और ऑडियो आउटपुट के लिए अलग-अलग बैकएंड का इस्तेमाल भी किया जा सकता है. इसके लिए, QEMU_AUDIO_OUT_DRV और QEMU_AUDIO_IN_DRV एनवायरमेंट वैरिएबल के लिए, QEMU की कोई एक वैल्यू चुनें:

set QEMU_AUDIO_OUT=esd
set QEMU_AUDIO_IN=oss

अगर आपको ऑडियो की सुविधा बंद करनी है, तो emulator -no-audio विकल्प का इस्तेमाल करें या QEMU_AUDIO_DRV को none पर सेट करें. इन स्थितियों में, आपको ऑडियो बंद करना पड़ सकता है:

  • कुछ मामलों में, ऑडियो ड्राइवर की वजह से एमुलेटर के चालू रहने के दौरान Windows रीबूट हो सकता है.
  • कुछ Linux मशीनों पर, ऑडियो की सुविधा चालू होने पर, एम्युलेटर स्टार्टअप के दौरान अटक सकता है.
adb एनवायरमेंट वैरिएबल
ANDROID_SERIAL इस वैरिएबल का इस्तेमाल, adb कमांड को एम्युलेटर का सीरियल नंबर देने के लिए करें. जैसे, emulator-5555. अगर आपने इस वैरिएबल को सेट किया है, लेकिन कमांड लाइन से सीरियल नंबर तय करने के लिए -s विकल्प का इस्तेमाल किया है, तो कमांड-लाइन इनपुट, ANDROID_SERIAL में मौजूद वैल्यू को बदल देगा.

यहां दिए गए उदाहरण में, ANDROID_SERIAL को सेट किया गया है और adb install helloworld.apk को कॉल किया गया है. इसके बाद, यह emulator-5555 पर Android ऐप्लिकेशन पैकेज इंस्टॉल करता है.

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 इसमें, एमुलेटर के ज़रिए इस्तेमाल किए जाने वाले, ज़्यादा जानकारी वाले आउटपुट विकल्पों (डीबग टैग) की कॉमा लगाकर अलग की गई लिस्ट होती है. यहां दिए गए उदाहरण में, debug-socket और debug-radio डीबग टैग के साथ तय किया गया ANDROID_VERBOSE दिखाया गया है:
set ANDROID_VERBOSE=socket,radio

यह कमांड लाइन से एम्युलेटर को चलाते समय, -verbose -verbose-socket -verbose-radio आर्ग्युमेंट को एक साथ तय करने जैसा है.

ऐसे डीबग टैग को अनदेखा कर दिया जाता है जिनका इस्तेमाल नहीं किया जा सकता. डीबग टैग के बारे में ज़्यादा जानकारी पाने के लिए, emulator -help-debug-tags का इस्तेमाल करें.