#!/usr/bin/env bash # ===== Config ===== SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" APP_NAME="com.example.hmg_qline.hmg_qline/.MainActivity" LOG_DIR="$SCRIPT_DIR/logs" # ===== Parse Arguments ===== while [[ $# -gt 0 ]]; do key="$1" case $key in -ipfile) IP_FILE="$2" shift # past argument shift # past value ;; *) echo "Unknown option: $1" echo "Usage: sh restart_qline.sh -ipfile " exit 1 ;; esac done if [[ -z "$IP_FILE" ]]; then echo "Usage: sh restart_qline.sh -ipfile " exit 1 fi # ===== Wi-Fi Check ==== wifi_interface=$(networksetup -listallhardwareports | \ awk '/Wi-Fi|AirPort/{getline; print $2}') current_ssid=$(networksetup -getairportnetwork "$wifi_interface" 2>/dev/null | \ awk -F': ' '{print $2}' | tr '[:upper:]' '[:lower:]') expected_ssid="cloud solutions" if [[ "$current_ssid" != "$expected_ssid" ]]; then echo "❌ Not connected to required Wi-Fi network: $expected_ssid" echo "🔌 Current network: ${current_ssid:-Not connected}" exit 1 fi echo "✅ Connected to correct Wi-Fi: Cloud Solutions" # Create log dir mkdir -p "$LOG_DIR" # ===== Read IPs ===== if [[ ! -f "$IP_FILE" ]]; then echo "❌ IP file not found at $IP_FILE" exit 1 fi ipList=() while IFS= read -r line; do [[ -n "$line" ]] && ipList+=("$line") done < "$IP_FILE" if [[ ${#ipList[@]} -eq 0 ]]; then echo "❌ No IPs found in file" exit 1 fi echo "✅ Found ${#ipList[@]} IPs" printf '%s\n' "${ipList[@]}" # ===== Connect to Devices ===== for ip in "${ipList[@]}"; do cleanIP="${ip%%:*}" # strip port if exists echo "🔌 Connecting to $cleanIP..." output=$(adb connect "$cleanIP:5555" 2>&1) if [[ "$output" == *connected* ]]; then echo "✅ Connected to $cleanIP" else echo "❌ Failed to connect to $cleanIP: $output" fi done # ===== Get Connected Devices ===== devices=$(adb devices | awk 'NR>1 && $2=="device" {print $1}') for device in $devices; do echo "📱 Processing $device..." echo "❌ Closing app if running..." adb -s "$device" shell am force-stop "${APP_NAME%%/*}" echo "🚀 Launching app..." adb -s "$device" shell am start -n "$APP_NAME" log_file="$LOG_DIR/logs_${device//[^a-zA-Z0-9]/_}.txt" echo "📝 Logging to $log_file" adb -s "$device" logcat -s flutter > "$log_file" & done echo "✅ Done! Logs are saved to $LOG_DIR"