You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.3 KiB
107 lines
3.3 KiB
#!/bin/bash
|
|
|
|
# Android Emulator Network Verification Script
|
|
# Diagnoses network connectivity issues that cause ANRs and Play Services failures
|
|
# Author: Matthew Raymer
|
|
|
|
echo "🔍 Android Emulator Network Verification"
|
|
echo "========================================"
|
|
echo ""
|
|
|
|
# Check if emulator is running
|
|
if ! adb devices | grep -q "emulator.*device"; then
|
|
echo "❌ Error: No emulator detected!"
|
|
echo "Please start an emulator first"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ Emulator detected"
|
|
echo ""
|
|
|
|
echo "📋 Network Diagnostics:"
|
|
echo ""
|
|
|
|
echo "1. 🔧 ADB Connection Status:"
|
|
adb devices
|
|
echo ""
|
|
|
|
echo "2. ✈️ Airplane Mode Status:"
|
|
AIRPLANE_MODE=$(adb -e shell settings get global airplane_mode_on 2>/dev/null)
|
|
if [ "$AIRPLANE_MODE" = "1" ]; then
|
|
echo " ❌ Airplane mode is ON - this will block network access"
|
|
echo " 💡 Fix: adb -e shell settings put global airplane_mode_on 0"
|
|
else
|
|
echo " ✅ Airplane mode is OFF"
|
|
fi
|
|
echo ""
|
|
|
|
echo "3. 🌐 Network Interfaces:"
|
|
echo " Network interfaces:"
|
|
adb -e shell ip addr | grep -E "(inet |UP|DOWN)" | head -10
|
|
echo ""
|
|
echo " Routing table:"
|
|
adb -e shell ip route | head -5
|
|
echo ""
|
|
|
|
echo "4. 🏓 DNS Resolution Tests:"
|
|
echo " Testing Google DNS (8.8.8.8):"
|
|
if adb -e shell ping -c1 8.8.8.8 >/dev/null 2>&1; then
|
|
echo " ✅ Google DNS reachable"
|
|
else
|
|
echo " ❌ Google DNS unreachable - host/VPN/firewall blocking"
|
|
fi
|
|
|
|
echo " Testing connectivity check (connectivitycheck.gstatic.com):"
|
|
if adb -e shell ping -c1 connectivitycheck.gstatic.com >/dev/null 2>&1; then
|
|
echo " ✅ Hostname resolution working"
|
|
else
|
|
echo " ❌ Hostname resolution failed - DNS issue"
|
|
fi
|
|
echo ""
|
|
|
|
echo "5. 🔍 Play Services Status:"
|
|
echo " Google Play Services:"
|
|
adb -e shell dumpsys package com.google.android.gms | grep -E "(versionName|enabled)" | head -2
|
|
echo ""
|
|
|
|
echo "6. 📊 Network Monitor Logs:"
|
|
echo " Recent network errors (last 10 lines):"
|
|
adb -e logcat -d | grep -E "(NetworkMonitor|ECONNREFUSED|UnknownHostException)" | tail -5
|
|
echo ""
|
|
|
|
echo "🎯 Diagnosis Summary:"
|
|
echo ""
|
|
|
|
# Determine issue type
|
|
if [ "$AIRPLANE_MODE" = "1" ]; then
|
|
echo "❌ PRIMARY ISSUE: Airplane mode is ON"
|
|
echo " Solution: Turn off airplane mode"
|
|
elif ! adb -e shell ping -c1 8.8.8.8 >/dev/null 2>&1; then
|
|
echo "❌ PRIMARY ISSUE: No internet connectivity"
|
|
echo " Solutions:"
|
|
echo " - Check host VPN/killswitch settings"
|
|
echo " - Verify firewall rules allow emulator traffic"
|
|
echo " - Try: ./launch-emulator-network-fix.sh"
|
|
elif ! adb -e shell ping -c1 connectivitycheck.gstatic.com >/dev/null 2>&1; then
|
|
echo "❌ PRIMARY ISSUE: DNS resolution failure"
|
|
echo " Solutions:"
|
|
echo " - Use explicit DNS: -dns-server 8.8.8.8,1.1.1.1"
|
|
echo " - Check corporate proxy settings"
|
|
echo " - Try: ./launch-emulator-network-fix.sh"
|
|
else
|
|
echo "✅ Network connectivity appears normal"
|
|
echo " If still experiencing ANRs, check Play Services cache:"
|
|
echo " adb -e shell pm clear com.google.android.gms"
|
|
fi
|
|
|
|
echo ""
|
|
echo "🔧 Quick Fixes:"
|
|
echo " # Clear Play Services cache"
|
|
echo " adb -e shell pm clear com.google.android.gms"
|
|
echo " adb -e shell pm clear com.android.vending"
|
|
echo ""
|
|
echo " # Restart ADB"
|
|
echo " adb kill-server && adb start-server"
|
|
echo ""
|
|
echo " # Launch with network fixes"
|
|
echo " ./launch-emulator-network-fix.sh"
|
|
|