এনভায়রনমেন্ট ভেরিয়েবল

আপনি এনভায়রনমেন্ট ভেরিয়েবল সেট করার মাধ্যমে 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 UI-এর মাধ্যমে এটি যোগ করুন। কীভাবে করতে হয় তা জানতে আপনার 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 টুলের জন্য সাধারণত ব্যবহৃত এনভায়রনমেন্ট ভেরিয়েবল সম্পর্কে বর্ণনা করা হয়েছে।

টেবিল ১. এনভায়রনমেন্ট ভেরিয়েবল

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 ডিরেক্টরির অধীনে ডিরেক্টরি তৈরি করতে চান সেটির ANDROID_SDK_HOME প্যারেন্ট ডিরেক্টরি সেট করুন।

REPO_OS_OVERRIDE বর্তমান মেশিনের থেকে আলাদা অপারেটিং সিস্টেমের জন্য প্যাকেজ ডাউনলোড করতে sdkmanager ব্যবহার করলে এই ভেরিয়েবলকে windows, macosx বা linux হিসেবে সেট করুন।
Android Studio কনফিগারেশন এনভায়রনমেন্ট ভেরিয়েবল
Android Studio কনফিগারেশন ভেরিয়েবলে এমন সেটিংস থাকে যা কনফিগারেশন ফাইল ও JDK-এর লোকেশন কাস্টমাইজ করে। শুরু করার সময়, Android Studio সেটিংসের জন্য এইসব ভেরিয়েবল চেক করে। আরও তথ্যের জন্য, Android Studio কনফিগার করুন দেখুন।
STUDIO_VM_OPTIONS studio.vmoptions ফাইলের লোকেশন সেট করে। এই ফাইলে এমন সেটিংস আছে যা Java HotSpot ভার্চুয়াল মেশিনের পারফর্ম্যান্সের বৈশিষ্ট্যকে প্রভাবিত করে। Android Studio থেকেও এই ফাইল অ্যাক্সেস করা যাবে। দেখুন আপনার VM বিকল্প কাস্টমাইজ করুন।
STUDIO_PROPERTIES idea.properties ফাইলের লোকেশন সেট করে। এই ফাইলটি আপনাকে Android Studio IDE প্রপার্টি কাস্টমাইজ করতে দেয়, যেমন ব্যবহারকারীর ইনস্টল করা প্লাগ-ইন এবং IDE-তে কাজ করে এমন সর্বাধিক ফাইল সাইজের পাথ। দেখুন আপনার IDE প্রপার্টি কাস্টমাইজ করুন।
STUDIO_JDK Android Studio যে JDK-তে চলে তার লোকেশন সেট করে। আপনি IDE লঞ্চ করলে, এটি সেই ক্রমে STUDIO_JDK, JDK_HOME ও JAVA_HOME এনভায়রনমেন্ট ভেরিয়েবল চেক করে।
STUDIO_GRADLE_JDK Android Studio, Gradle ডেমন চালু করার জন্য যে JDK ব্যবহার করে তার লোকেশন সেট করে। আপনি IDE লঞ্চ করলে, এটি প্রথমে STUDIO_GRADLE_JDK চেক করে। STUDIO_GRADLE_JDK সংজ্ঞায়িত করা না থাকলে, IDE প্রোজেক্ট স্ট্রাকচার সেটিংসে সেট করা মান ব্যবহার করে।
ইমুলেটর এনভায়রনমেন্ট ভেরিয়েবল
ডিফল্ট হিসেবে, এমুলেটর কনফিগারেশন ফাইল $HOME/.android/-এর অধীনে এবং AVD ডেটা $HOME/.android/avd/-এর অধীনে স্টোর করে। আপনি নিম্নলিখিত এনভায়রনমেন্ট ভেরিয়েবল সেট করে ডিফল্ট ওভাররাইড করতে পারবেন। emulator -avd <avd_name> কমান্ডটি $ANDROID_AVD_HOME, $ANDROID_USER_HOME/avd/ এবং $HOME/.android/avd/-এর ভ্যালুর ক্রম অনুযায়ী 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

গ্লোবাল HTTP প্রক্সির জন্য HTTP/HTTPS প্রক্সি সেটিং থাকে। হোস্ট ও পোর্টের মধ্যে কোলন (:) সেপারেটর ব্যবহার করে। যেমন, set HTTP_PROXY=myserver:1981।

এটি কমান্ড লাইন থেকে এমুলেটর চালানোর সময় -http-proxy proxy আর্গুমেন্ট নির্দিষ্ট করার মতোই।

ANDROID_VERBOSE ANDROID_VERBOSE দেখুন।
ANDROID_HOME ANDROID_HOME দেখুন।
ANDROID_EMULATOR_USE_SYSTEM_LIBS এতে ০ (ডিফল্ট) বা ১ ভ্যালু থাকে। ১ ভ্যালু মানে হল, এমুলেটরের সাথে বান্ডেল করা ফাইলের পরিবর্তে সিস্টেমের 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: উন্নত Linux সাউন্ড আর্কিটেকচার (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 ব্যবহার করুন।