Пример #1
0
        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);
        }
Пример #2
0
 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;
         }
     }
 }
Пример #3
0
        static internal void StopServer()
        {
            AdbServerStatus adb = new AdbServerStatus();

            if (adb.IsRunning)
            {
                AdbClient adbClient = new AdbClient();
                adbClient.KillAdb();
            }
        }
Пример #4
0
        internal void RestartADB()
        {
            AdbServerStatus adbServerStatus = new AdbServerStatus();

            while (!adbServerStatus.IsRunning)
            {
                ManageADB(true);
                adbServerStatus = new AdbServerStatus();
            }
        }
Пример #5
0
        static internal void StartServer()
        {
            AdbServerStatus adb = new AdbServerStatus();

            if (adb.IsRunning)
            {
                AdbClient adbClient = new AdbClient();
                adbClient.KillAdb();
            }
            AdbServer.Instance.StartServer(@"files\adb.exe", true);
        }
Пример #6
0
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            AdbServerStatus adb = new AdbServerStatus();

            if (adb.IsRunning)
            {
                AdbClient adbClient = new AdbClient();
                adbClient.KillAdb();
            }
            fastboot.Dispose();
        }
Пример #7
0
        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());
        }
Пример #8
0
        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;
        }