AVD (Android Virtual Device) হল একটি এমুলেটর কনফিগারেশন যা ডেভেলপারের কম্পিউটারে একটি বাস্তব Android ডিভাইস অনুকরণ করে। প্রতিটি AVD-তে নির্বাচিত OS সংস্করণ (System Image), ডিভাইসের ধরন (ফোন, ট্যাবলেট, Wear OS), স্ক্রিনের আকার এবং মেমোরি ক্ষমতা অন্তর্ভুক্ত থাকে। Google Android Developers, 2026 অনুসারে, AVD ব্যবহার করা হয় বিভিন্ন Android সংস্করণ এবং কনফিগারেশনে ডজনখানেক ফিজিক্যাল ডিভাইস না কিনেই অ্যাপ পরীক্ষা করার জন্য। QEMU হল হাইপারভাইজার যার উপর এমুলেটর চলে।
মূল বিষয়
AVD (Android Virtual Device) হল একটি সফ্টওয়্যার কনফিগারেশন যা একটি ভার্চুয়াল Android ডিভাইস বর্ণনা করে। ফিজিক্যাল ফোনের বিপরীতে, AVD-র হার্ডওয়্যারের প্রয়োজন হয় না — এটি QEMU-ভিত্তিক Android এমুলেটরের মাধ্যমে কম্পিউটারে চলে। একজন ডেভেলপার পরীক্ষার জন্য প্রয়োজন অনুযায়ী একাধিক AVD তৈরি করে: বিভিন্ন Android সংস্করণ, স্ক্রিন সাইজ, মেমোরি ক্ষমতা এবং পিক্সেল ঘনত্বের জন্য।
প্রতিটি AVD একটি নির্দিষ্ট SDK Platform-এর সাথে সংযুক্ত। এর মানে হল Android 14 (API Level 34) দিয়ে AVD তৈরি করতে, প্রথমে SDK Manager-এর মাধ্যমে সেই সংস্করণের System Image ইন্সটল করতে হবে। System Image হল একটি অপারেটিং সিস্টেম ইমেজ যা সমস্ত সিস্টেম অ্যাপ, Google পরিষেবা (যদি Google APIs ইমেজ নির্বাচিত হয়) এবং রানটাইম উপাদান অন্তর্ভুক্ত করে। Google সুপারিশ করে বাস্তব ডিভাইসের সাথে সর্বোচ্চ সামঞ্জস্যের জন্য Google Play পরিষেবাসহ Google APIs ইমেজ ব্যবহার করুন।
বেশ কয়েকটি কারণে AVD ডেভেলপমেন্টে অপরিহার্য। প্রথমত, এটি ডজনখানেক ডিভাইস না কিনেই বিভিন্ন Android সংস্করণে অ্যাপ পরীক্ষার অনুমতি দেয়। দ্বিতীয়ত, AVD স্ন্যাপশট (Snapshots) সমর্থন করে — সিস্টেম অবস্থা সংরক্ষণ, যা স্টার্টআপ দ্রুত করে। তৃতীয়ত, এমুলেটর Android Studio-র সাথে সংহত: APK ইন্সটলেশন, ডিবাগিং এবং লগিং ফিজিক্যাল ডিভাইসের মতোই কাজ করে।
AVD বিভিন্ন ধরনের ডিভাইস সমর্থন করে: ফোন, ট্যাবলেট, Wear OS ঘড়ি, Android TV এবং Android Automotive। প্রতিটি প্রকারের জন্য, AVD Manager Google থেকে তৈরি প্রোফাইল সরবরাহ করে: Pixel 8, Pixel 9 Pro, Nexus 7, Samsung Galaxy Tab এবং অন্যান্য। ডিভাইস প্রোফাইল স্ক্রিনের আকার, রেজোলিউশন, পিক্সেল ঘনত্ব (dpi) এবং নেভিগেশন (জেসচার বা বাটন) নির্ধারণ করে।
| ডিভাইসের ধরন | উদাহরণ প্রোফাইল | রেজোলিউশন | dpi |
|---|---|---|---|
| Phone | Pixel 8 | 1080x2400 | 420 |
| Phone | Pixel 9 Pro | 1280x2856 | 490 |
| Tablet | Pixel Tablet | 2560x1600 | 320 |
| Wear OS | Pixel Watch | 384x384 | 320 |
| Android TV | Android TV 4K | 1920x1080 | 240 |
প্রতিটি AVD হল কনফিগারেশন ফাইল এবং ইমেজের একটি সেট। প্রধান কনফিগারেশন ফাইল হল config.ini, যা ভার্চুয়াল ডিভাইসের প্যারামিটার সংরক্ষণ করে: নাম, ধরন, API Level, স্ক্রিন সাইজ, RAM এবং VM heap আকার। ফাইলটি $HOME/.android/avd/AVDনাম.avd/ ডিরেক্টরিতে অবস্থিত এবং ম্যানুয়ালি পরিবর্তন করা যেতে পারে, যদিও এটি সাধারণত AVD Manager-এর মাধ্যমে সম্পাদনা করা হয়।
config.ini ছাড়াও, AVD ডিরেক্টরিতে সংরক্ষিত হয়: userdata.img (ব্যবহারকারী ডেটা ইমেজ — অ্যাপ, সেটিংস, ফাইল), system.img (ইন্সটল করা SDK Platform-এর System Image-এর লিংক), cache.img (ক্যাশ) এবং sdcard.img (SD কার্ড ইমেজ)। Wipe Data সম্পাদন করলে, userdata.img মুছে যায় এবং একটি নতুন খালি ইমেজ তৈরি হয়। স্ন্যাপশট AVD ডিরেক্টরির ভিতরে আলাদা snapshots/ ফোল্ডারে সংরক্ষিত হয়।
System Image AVD থেকে আলাদাভাবে ডাউনলোড করা হয় — একটি ইমেজ একাধিক ভার্চুয়াল ডিভাইস দ্বারা ব্যবহার করা যেতে পারে। সিস্টেম ইমেজ Android SDK ডিরেক্টরিতে সংরক্ষিত হয়: $ANDROID_SDK/system-images/android-{API}/{type}/{arch}/। ইমেজের ধরন: google_apis (Google পরিষেবা সহ), google_apis_playstore (Google Play Store সহ) এবং default (Google পরিষেবা ছাড়া খাঁটি AOSP)।
| ইমেজের ধরন | Google পরিষেবা | Google Play | উদ্দেশ্য |
|---|---|---|---|
| AOSP (default) | না | না | মৌলিক পরীক্ষা, খাঁটি Android |
| Google APIs | হ্যাঁ | না | Google পরিষেবা, Maps, FCM পরীক্ষা |
| Google Play | হ্যাঁ | হ্যাঁ | Play Store এবং লাইসেন্সিং সহ সম্পূর্ণ পরীক্ষা |
AVD Manager হল Android Studio-তে ভার্চুয়াল ডিভাইস তৈরি এবং পরিচালনার জন্য একটি গ্রাফিকাল টুল। এটি Tools → Device Manager মেনু বা টুলবার আইকনের মাধ্যমে খোলা যেতে পারে। AVD Manager তৈরি ডিভাইসের তালিকা, তাদের অবস্থা (চলমান/বন্ধ), Android সংস্করণ এবং উপলব্ধ ক্রিয়া (শুরু, বন্ধ, ডেটা মুছা, সম্পাদনা) দেখায়।
নতুন AVD তৈরি করতে, Create device বাটনে ক্লিক করুন। তৈরি তালিকা থেকে একটি ডিভাইস প্রোফাইল নির্বাচন করুন — Google সমস্ত জনপ্রিয় ডিভাইসের জন্য প্রোফাইল সরবরাহ করে। প্রোফাইল নির্বাচনের পর, System Image নির্দিষ্ট করুন: Android সংস্করণ এবং ইমেজের ধরন। নতুন প্রকল্পের জন্য, Google APIs ইমেজ সহ সর্বশেষ স্থিতিশীল সংস্করণ নির্বাচন করুন। তারপর AVD নাম, স্ক্রিন ওরিয়েন্টেশন, RAM এবং VM heap আকার কনফিগার করুন। তৈরি করার পর, AVD লঞ্চের জন্য প্রস্তুত।
# 1. উপলব্ধ System Images-এর তালিকা
sdkmanager --list | grep system-images
# 2. Google APIs সহ API 35-এর জন্য System Image ইন্সটল করুন
sdkmanager "system-images;android-35;google_apis;x86_64"
# 3. pixel8_api35 নামে AVD তৈরি করুন
avdmanager create avd -n pixel8_api35 \
-k "system-images;android-35;google_apis;x86_64" \
-d pixel_8
# 4. তৈরি AVD লঞ্চ করুন
emulator -avd pixel8_api35 -gpu host -memory 2048
# 5. সমস্ত AVD-র তালিকা
avdmanager list avd
AVD Manager ভার্চুয়াল ডিভাইসের হার্ডওয়্যার বৈশিষ্ট্যগুলির বিস্তারিত কনফিগারেশনের অনুমতি দেয়। প্রধান প্যারামিটার: RAM (র্যান্ডম অ্যাক্সেস মেমোরি, প্রস্তাবিত মান 2048–4096 MB), VM heap (ভার্চুয়াল মেশিন হিপ আকার, 256–512 MB), Internal Storage (অভ্যন্তরীণ স্টোরেজ, 2–8 GB) এবং SD Card (ভার্চুয়াল SD কার্ড)। এই প্যারামিটারগুলি অ্যাপ্লিকেশনের পারফরম্যান্স এবং কম মেমোরি অবস্থায় তার আচরণকে প্রভাবিত করে।
অতিরিক্ত সেটিংস অন্তর্ভুক্ত: ক্যামেরা (এমুলেটেড বা হোস্ট ওয়েবক্যাম সংযোগ), সেন্সর (অ্যাক্সেলেরোমিটার, জাইরোস্কোপ), NFC, Bluetooth এবং ব্যাটারি। উদাহরণস্বরূপ, অবস্থান শনাক্তকরণ অ্যাপ পরীক্ষার জন্য, এমুলেটর নিয়ন্ত্রণ বাটন বা ADB-এর মাধ্যমে ডিভাইস ঘূর্ণন অনুকরণ করা যেতে পারে। সেন্সর এমুলেশন সেইসব পরিস্থিতি পরীক্ষার অনুমতি দেয় যা ফিজিক্যাল ডিভাইসে পুনরুৎপাদন করা কঠিন।
| প্যারামিটার | বর্ণনা | প্রস্তাবিত মান |
|---|---|---|
| hw.ramSize | ডিভাইস RAM | 2048 |
| vm.heapSize | ভার্চুয়াল মেশিন হিপ আকার | 256 |
| hw.gpuEnabled | হার্ডওয়্যার গ্রাফিক্স ত্বরণ | yes |
| hw.gpuMode | GPU মোড (host/mesa) | host |
| disk.dataPartition.size | ডেটা পার্টিশনের আকার | 4096M |
| hw.camera | ক্যামেরা এমুলেশন ধরন | emulated |
AVD-র গতি সরাসরি হার্ডওয়্যার ভার্চুয়ালাইজেশনের উপর নির্ভর করে। Windows-এ Windows Hypervisor Platform (WHPX) ব্যবহার করা হয়, macOS-এ — Hypervisor.Framework, Linux-এ — KVM। যদি ভার্চুয়ালাইজেশন নিষ্ক্রিয় থাকে, AVD খাঁটি সফ্টওয়্যার এমুলেশন মোডে কাজ করে, যা 10–20 গুণ ধীর। ভার্চুয়ালাইজেশন সক্ষম কিনা পরীক্ষা করতে, -accel-check ফ্ল্যাগ দিয়ে এমুলেটর চালান।
দ্বিতীয় মূল কারণ হল System Image আর্কিটেকচারের পছন্দ। x86_64 ইমেজ Intel এবং AMD প্রসেসরযুক্ত কম্পিউটারে arm64-v8a-র তুলনায় উল্লেখযোগ্যভাবে দ্রুত কাজ করে, কারণ তাদের ARM নির্দেশের গতিশীল অনুবাদের প্রয়োজন হয় না। Intel প্রসেসরযুক্ত Windows এবং macOS-এ ডেভেলপমেন্টের জন্য সর্বদা x86_64 ইমেজ ব্যবহার করুন। Mac ARM প্রসেসরে (Apple Silicon), নেটিভ arm64-v8a ইমেজ ব্যবহার করুন।
# হার্ডওয়্যার ভার্চুয়ালাইজেশন এবং GPU ত্বরণ সহ লঞ্চ করুন
emulator -avd pixel8_api35 -gpu host -memory 4096 -cores 4
# ভার্চুয়ালাইজেশন সমর্থন পরীক্ষা করুন
emulator -accel-check
# GUI ছাড়া চালান (CI-র জন্য)
emulator -avd pixel8_api35 -no-window -no-audio -gpu off
# দ্রুত স্টার্টআপের জন্য স্ন্যাপশট ব্যবহার করুন
emulator -avd pixel8_api35 -snapshot mysnapshot -no-snapshot-save
সর্বোচ্চ AVD পারফরম্যান্সের জন্য: এমুলেটরে কমপক্ষে 2–4 GB RAM বরাদ্দ করুন, GPU Host সক্ষম করুন (রেন্ডারিংয়ের জন্য কম্পিউটারের গ্রাফিক্স কার্ড ব্যবহার করে), প্রয়োজনে শব্দ বন্ধ করুন (ফ্ল্যাগ -no-audio), এবং পরিষ্কার অবস্থায় দ্রুত ফিরে যেতে স্ন্যাপশট ব্যবহার করুন। স্ন্যাপশট সম্পূর্ণ সিস্টেম অবস্থা সংরক্ষণ করে — স্ন্যাপশট থেকে লঞ্চ করতে 30–60 সেকেন্ডের পূর্ণ বুটের পরিবর্তে 2–5 সেকেন্ড সময় লাগে।
এছাড়াও SSD ড্রাইভে AVD সংরক্ষণ করার পরামর্শ দেওয়া হয় — সিস্টেম বুট এবং APK ইন্সটলের সময় I/O অপারেশন উল্লেখযোগ্যভাবে দ্রুত হয়। একসাথে একাধিক AVD চালানোর জন্য, কম্পিউটারে মোট RAM-র পরিমাণ বাড়ান এবং অপরিবর্তনীয় এমুলেটরের জন্য -read-only ফ্ল্যাগ ব্যবহার করুন।
Android Studio ছাড়া কমান্ড লাইন থেকে AVD-র উপর সম্পূর্ণ নিয়ন্ত্রণ সম্ভব। avdmanager এবং emulator টুলগুলি Android SDK-র অংশ এবং সমস্ত ক্রিয়াকলাপ সম্পাদন করে: AVD তৈরি, মুছে ফেলা, লঞ্চ এবং কনফিগার করা। কমান্ড লাইন বিশেষত CI/CD পাইপলাইনে উপযোগী, যেখানে গ্রাফিকাল ইন্টারফেস নেই, এবং টেস্ট অটোমেশনের জন্য।
# কাস্টম প্যারামিটার সহ AVD তৈরি করুন
avdmanager create avd -n test_device \
-k "system-images;android-34;google_apis;x86_64" \
--device "pixel_8" \
--force
# AVD মুছুন
avdmanager delete avd -n test_device
# AVD ক্লোন করুন (ফাইল কপি করে)
cp -r ~/.android/avd/pixel8_api35.avd ~/.android/avd/pixel8_clone.avd
# AVD ডেটা রিসেট করুন
emulator -avd test_device -wipe-data
# চলমান AVD-তে APK ইন্সটল করুন
adb -s emulator-5554 install app-release.apk
AVD লঞ্চ করার পর, ADB (Android Debug Bridge)-এর মাধ্যমে ফিজিক্যাল ডিভাইসের মতোই এর সাথে কাজ করা যায়। ADB অ্যাপ্লিকেশন ইন্সটল, ইন্টেন্ট লঞ্চ, ইভেন্ট (কল, SMS, GPS) অনুকরণ, স্ক্রিনশট নেওয়া এবং স্ক্রিন ভিডিও রেকর্ড করার অনুমতি দেয়। এটি AVD-কে স্বয়ংক্রিয় পরীক্ষার জন্য একটি পূর্ণাঙ্গ পরিবেশে পরিণত করে।
# সংযুক্ত ডিভাইসের তালিকা (AVD সহ)
adb devices
# ইনকামিং কল অনুকরণ
adb emu gsm call +15551234567
# GPS স্থানাঙ্ক অনুকরণ
adb emu geo fix -122.084 37.422
# স্ক্রিনশট নিন
adb exec-out screencap -p > screenshot.png
# SMS পাঠান
adb emu sms send +15551234567 "Hello from AVD"
কখনও কখনও ডেভেলপারের কোডে নির্ধারণ করতে হয় যে অ্যাপ্লিকেশনটি এমুলেটরে চলছে নাকি ফিজিক্যাল ডিভাইসে। এটি অ্যানালিটিক্স নিষ্ক্রিয় করতে (প্রোডাকশন ডেটা দূষণ এড়াতে), বর্ধিত লগিং সক্ষম করতে, বা এমুলেটরে কাজ করে না এমন হার্ডওয়্যার-নির্ভর বৈশিষ্ট্য নিষ্ক্রিয় করতে প্রয়োজন হতে পারে। Google Build ক্লাস এবং সিস্টেম প্রপার্টির মাধ্যমে পরীক্ষার মানক পদ্ধতি সরবরাহ করে।
object EmulatorDetector {
fun isEmulator(): Boolean {
return (Build.BRAND.startsWith("generic") &&
Build.DEVICE.startsWith("generic")) ||
Build.FINGERPRINT.startsWith("generic") ||
Build.FINGERPRINT.startsWith("unknown") ||
Build.HARDWARE.contains("goldfish") ||
Build.HARDWARE.contains("ranchu") ||
Build.MODEL.contains("google_sdk") ||
Build.MODEL.contains("Emulator") ||
Build.MODEL.contains("Android SDK")
}
}
// ব্যবহার
if (EmulatorDetector.isEmulator()) {
Log.d("App", "Running on emulator — enable debug mode")
}
একটি অতিরিক্ত পদ্ধতি হল Build.getRadioVersion()-এর মাধ্যমে সিস্টেম প্রপার্টি পড়া এবং ro.kernel.qemu পরীক্ষা করা। এমুলেটরে, radio version null ফেরত দেয় এবং qemu প্রপার্টি 1 এ সেট থাকে। এই পদ্ধতি পুরনো Android সংস্করণে আরও নির্ভরযোগ্য যেখানে Build.FINGERPRINT ডিভাইস প্রস্তুতকারকের দ্বারা জাল হতে পারে।
fun isRunningOnEmulator(): Boolean {
// রেডিও সংস্করণের মাধ্যমে পরীক্ষা — এমুলেটরে সর্বদা null
val radioVersion = try {
Build.getRadioVersion()
} catch (e: Exception) {
null
}
if (radioVersion.isNullOrBlank()) return true
// সিস্টেম প্রপার্টির মাধ্যমে পরীক্ষা
return try {
val props = ProcessBuilder()
.command("getprop", "ro.kernel.qemu")
.start()
.inputStream.bufferedReader().readText().trim()
props == "1"
} catch (e: Exception) {
false
}
}
সচরাচর জিজ্ঞাসিত প্রশ্ন
AVD QEMU-তে চলে এবং সম্পূর্ণরূপে হার্ডওয়্যার বৈশিষ্ট্য অনুকরণ করতে পারে না: বাস্তব ক্যামেরা, NFC, Bluetooth। AVD UI পরীক্ষা, লাইফসাইকেল যাচাই এবং OS সংস্করণ সামঞ্জস্যের জন্য আদর্শ। নির্ভুল ক্যামেরা এবং সেন্সর পরীক্ষার জন্য ফিজিক্যাল ডিভাইস প্রয়োজন।
কমপক্ষে 2–3টি AVD: নতুন বৈশিষ্ট্য পরীক্ষার জন্য সবচেয়ে নতুন API Level, সামঞ্জস্যের জন্য ন্যূনতম সমর্থিত (minSdk), এবং নির্দিষ্ট স্ক্রিনে UI পরীক্ষার জন্য একটি জনপ্রিয় ডিভাইস মডেল (Pixel 8 বা Samsung Galaxy)।
প্রধান কারণ: হার্ডওয়্যার ভার্চুয়ালাইজেশন নিষ্ক্রিয় (WHPX, Hypervisor.Framework, KVM), অপর্যাপ্ত RAM (2 GB-র কম), GPU Host বন্ধ। -gpu host সক্ষম করুন এবং মেমোরি 2–4 GB-তে বাড়ান — এটি এমুলেটরকে 3–5 গুণ দ্রুত করবে।
হ্যাঁ। কমান্ড লাইন থেকে emulator -avd AVD_নাম এর মাধ্যমে এমুলেটর লঞ্চ করা হয়। এর জন্য Android SDK, Platform-Tools এবং ইন্সটল করা System Image প্রয়োজন। AVD Manager একটি কনসোল ইউটিলিটি হিসাবেও উপলব্ধ যাকে avdmanager বলা হয়।
AVD Manager-এ, Wipe Data নির্বাচন করুন — এটি userdata.img মুছে ফেলবে এবং এমুলেটরকে তার প্রাথমিক অবস্থায় ফিরিয়ে আনবে। কমান্ড লাইন থেকে: emulator -avd নাম -wipe-data। স্ন্যাপশট সংরক্ষিত থাকে যদি আলাদাভাবে মুছে না ফেলা হয়।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন