#!/bin/bash # High-Performance Android Emulator Launch Script # Optimized for Linux systems with NVIDIA graphics cards # Author: Matthew Raymer echo "🚀 Launching Android Emulator with GPU Acceleration..." # Check if emulator command exists if ! command -v emulator &> /dev/null; then echo "❌ Error: Android emulator not found!" echo "Please install Android Studio and add emulator to PATH" echo "export PATH=\$PATH:\$ANDROID_HOME/emulator" exit 1 fi # Check if AVD exists if ! emulator -list-avds | grep -q "TimeSafari_Emulator"; then echo "❌ Error: TimeSafari_Emulator AVD not found!" echo "Available AVDs:" emulator -list-avds echo "" echo "Please create TimeSafari_Emulator AVD or modify this script" exit 1 fi # Check if NVIDIA drivers are available if ! ls /usr/share/vulkan/icd.d/nvidia_icd.json &> /dev/null; then echo "⚠️ Warning: NVIDIA Vulkan ICD not found" echo "GPU acceleration may not work optimally" echo "Consider installing NVIDIA drivers with Vulkan support" fi echo "✅ Environment checks passed" echo "🎮 Starting emulator with GPU acceleration..." # Launch emulator with GPU acceleration, network fixes, and performance tuning QT_QPA_PLATFORM=xcb \ __NV_PRIME_RENDER_OFFLOAD=1 \ __GLX_VENDOR_LIBRARY_NAME=nvidia \ __VK_LAYER_NV_optimus=NVIDIA_only \ VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json \ DRI_PRIME=1 \ emulator -avd TimeSafari_Emulator \ -gpu host \ -feature Vulkan \ -accel on \ -cores 6 \ -memory 4096 \ -no-boot-anim \ -no-snapshot-load \ -dns-server 8.8.8.8,1.1.1.1 \ -feature -Bluetooth echo "🎯 Emulator launched with GPU acceleration!" echo "" echo "📋 Performance Features Enabled:" echo " - Hardware GPU acceleration" echo " - Vulkan graphics API support" echo " - NVIDIA GPU offloading" echo " - 6 CPU cores allocated" echo " - 4GB RAM allocated" echo " - Fast startup (no boot animation)" echo " - Clean state (no snapshot loading)" echo " - Fixed DNS servers (8.8.8.8, 1.1.1.1)" echo " - Bluetooth disabled (prevents hangs)" echo "" echo "🔧 Troubleshooting:" echo " - If emulator is slow, check NVIDIA drivers" echo " - For Intel/AMD graphics, remove NVIDIA-specific variables" echo " - Monitor GPU usage with: nvidia-smi" echo "" echo "🔍 GPU Binding Issues:" echo " If OpenGL still binds to Intel iGPU instead of NVIDIA:" echo " 1. Check emulator banner for 'OpenGL Vendor=Google (NVIDIA)'" echo " 2. Try alternative GPU modes:" echo " - Pure OpenGL: Remove -feature Vulkan flag" echo " - ANGLE path: Use -gpu angle_indirect" echo " - Mesa fallback: Use -gpu mesa" echo " 3. Verify dGPU usage: nvidia-smi dmon -s u" echo "" echo "📋 Performance Verification:" echo " - Monitor GPU utilization: watch -n1 'nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv,noheader | grep qemu'" echo " - Check ADB connection: adb kill-server && adb start-server" echo " - Clean snapshots: Delete ~/.android/avd/TimeSafari_Emulator.avd/snapshots/"