public WarpAdbManager(DeviceManager manager) { DeviceManager = manager; AdbServerStatus status = AdbServer.Instance.GetStatus(); if (!status.IsRunning) { SystemLog.E(TAG, "ADB 没有运行! 重新启动ADB..."); AdbServer.Instance.StartServer(adbpath, true); } status = AdbServer.Instance.GetStatus(); if (status.IsRunning) { InitAdbSocket(); Moniter(); //不必要要此处初始化,一直连着电脑里,也会被MOniter到. //try //{ // CurrentDeviceData = AdbClient.Instance.GetDevices().First(); // SystemLog.I(TAG, "初始获得设备连接:" + CurrentDeviceData.Name); //} //catch //{ // SystemLog.E(TAG, "初始获得设备连接错误:"); //} } ProgLog.D(TAG, "" + status.Version + ".." + status.IsRunning); }
private void ManageADB(bool v) { while (true) { if (v) { try { AdbServerStatus adbServerStatus = new AdbServerStatus(); if (!adbServerStatus.IsRunning) { ADB.SendADBCommand("start-server"); } mainForm.SetLastStatus($"connected to Port {AdbClient.AdbServerPort}"); break; } catch (Exception) { continue; } } else { AdbServerStatus adbServerStatus = new AdbServerStatus(); if (adbServerStatus.IsRunning) { ADB.SendADBCommand("kill-server"); } break; } } }
static internal void StopServer() { AdbServerStatus adb = new AdbServerStatus(); if (adb.IsRunning) { AdbClient adbClient = new AdbClient(); adbClient.KillAdb(); } }
internal void RestartADB() { AdbServerStatus adbServerStatus = new AdbServerStatus(); while (!adbServerStatus.IsRunning) { ManageADB(true); adbServerStatus = new AdbServerStatus(); } }
static internal void StartServer() { AdbServerStatus adb = new AdbServerStatus(); if (adb.IsRunning) { AdbClient adbClient = new AdbClient(); adbClient.KillAdb(); } AdbServer.Instance.StartServer(@"files\adb.exe", true); }
private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { AdbServerStatus adb = new AdbServerStatus(); if (adb.IsRunning) { AdbClient adbClient = new AdbClient(); adbClient.KillAdb(); } fastboot.Dispose(); }
public void ToStringTest() { AdbServerStatus s = new AdbServerStatus() { IsRunning = true, Version = new Version(1, 0, 32) }; Assert.AreEqual("Version 1.0.32 of the adb daemon is running.", s.ToString()); s.IsRunning = false; Assert.AreEqual("The adb daemon is not running.", s.ToString()); }
static void Main(string[] args) { Console.WriteLine("Connecting to the ADB server. Please wait.."); AdbServer server = new AdbServer(); AdbServerStatus currentStatus = server.GetStatus(); StartServerResult startStatus = server.StartServer(ConfigurationManager.AppSettings["AdbPath"], restartServerIfNewer: false); switch (startStatus) { case StartServerResult.AlreadyRunning: Console.WriteLine("ADB daemon already running."); break; case StartServerResult.RestartedOutdatedDaemon: Console.WriteLine("Restarted outdated ADB daemon."); break; case StartServerResult.Started: Console.WriteLine("ADB daemon has been started."); break; } AdbClient client = new AdbClient(); Console.WriteLine("Currently connected devices:"); List <DeviceData> devices = client.GetDevices(); for (int c = 0; c < devices.Count; c++) { Console.WriteLine($"\t{c}: {devices[c].Name}"); } Console.Write("Device to attach: "); int deviceNumber = int.Parse(Console.ReadLine()); Console.WriteLine("Running processes: "); List <ProcInfo> procs = GetProcs(client, devices[deviceNumber]); foreach (ProcInfo proc in procs) { Console.WriteLine($"\t{proc.Name}"); } Console.Write("Process to monitor (name): "); string procName = Console.ReadLine(); Console.Write("Keyword to search for: "); string keyWord = Console.ReadLine(); if (string.IsNullOrEmpty(keyWord)) { keyWord = null; } ProcInfo procToMonitor = procs.Where(n => n.Name == procName).FirstOrDefault(); if (procToMonitor != null) { Console.WriteLine($"Watching {procToMonitor.Name} with PID {procToMonitor.Pid}..."); DateTime lastLoggedAt = new DateTime(); for (; ;) { procs = GetProcs(client, devices[deviceNumber]); if (procs.Any(n => n.Pid == procToMonitor.Pid && n.Name == n.Name)) { ConsoleOutputReceiver logcatInspect = new ConsoleOutputReceiver(); client.ExecuteRemoteCommand("logcat -d", devices[deviceNumber], logcatInspect); string[] allLogs = logcatInspect.ToString().Split("\n"); foreach (string log in allLogs) { string dateTimeString = Regex.Match(log, @"\d{2}-\d{2} \d{1,2}:\d{1,2}:\d{1,2}.\d{1,3}").Value; if (!string.IsNullOrEmpty(dateTimeString)) { DateTime loggedAt = DateTime.ParseExact(dateTimeString, "MM-dd HH:mm:ss.fff", null); if (loggedAt > lastLoggedAt) { if (keyWord != null && log.Contains(keyWord)) { Console.WriteLine($"Keyword {keyWord} found: {log}"); } lastLoggedAt = loggedAt; } } } Thread.Sleep(1000); } else { Console.WriteLine("Broke! Dumping logs!"); break; } } } ConsoleOutputReceiver consoleOutput = new ConsoleOutputReceiver(); client.ExecuteRemoteCommand("logcat -d", devices[deviceNumber], consoleOutput); File.WriteAllText($"logcat_dump_{procToMonitor.Name}_{procToMonitor.Pid}.txt", consoleOutput.ToString()); return; }