Пример #1
0
 public void EntryPoint(ILeafUI ui, IDevice device, ICommandExecutor executor)
 {
     using (ui)
     {
         using (executor)
         {
             executor.OutputReceived += (s, e) => ui.WriteLineToDetails(e.Text);
             var text = ClassTextReaderCache.Acquire <EGCM>();
             ui.Show();
             if (device is NetDevice)
             {
                 ui.ShowMessage(text["isNet"]);
                 ui.EFinish();
             }
             else if (device is UsbDevice usbDevice)
             {
                 var endPoint = usbDevice.OpenNetDebugging(5555);
                 if (endPoint != null)
                 {
                     executor.Adb($"connect {endPoint}");
                 }
                 ui.Finish();
             }
             else
             {
                 ui.Finish(text["notsupport"]);
             }
         }
     }
 }
Пример #2
0
        /// <summary>
        /// 捕获,并保存到电脑指定文件夹
        /// </summary>
        /// <param name="savePath"></param>
        public void CaptureAndSaveToFile(string savePath)
        {
            var tmpPath = GenerateTmpFilePath();

            executor.AdbShell(device, $"screencap -p  {tmpPath}").ThrowIfError();
            executor.Adb(device, $"pull {tmpPath} \"{savePath}\"").ThrowIfError();
            executor.AdbShell(device, $"rm  {tmpPath}").ThrowIfError();
        }
Пример #3
0
        public int PushToDevice()
        {
            DirectoryInfo dirInfo = storage.CacheDirectory;
            string        path    = Path.Combine(dirInfo.FullName, PATH_OF_TMP_APK);
            string        command = $"push \"{path}\" {PATH_OF_ATMP_APK}";

            return(executor.Adb(device, command).ExitCode);
        }
        public void EntryPoint(ILeafUI ui, IDevice device, ICommandExecutor executor)
        {
            using (ui)
            {
                ui.Show();
                if (device is UsbDevice usbDevice)
                {
                    string input = null;
                    ushort port  = 0;
                    do
                    {
                        input = ui.InputString(this.RxGetClassText("input_hint"), "5555");
                        if (input == null)
                        {
                            ui.EShutdown();
                        }
                    } while (!ushort.TryParse(input, out port));
                    ui.StatusInfo = this.RxGetClassText("stauts_enabling");
                    IPEndPoint endPoint = null;
                    try
                    {
                        endPoint = usbDevice.OpenNetDebugging(port);
                    }
                    catch (AdbCommandFailedException e)
                    {
                        ui.WriteLineToDetails($"exit code : {e.ExitCode}");
                        ui.EShutdown();
                    }

                    ui.WriteLineToDetails($"Device's IPEndPoint: {endPoint?.ToString() ?? "Can not read"}");
                    if (endPoint != null)
                    {
                        if (ui.DoYN(this.RxGetClassText("yn_try_to_connect")))
                        {
                            ui.StatusInfo = this.RxGetClassText("status_connecting");
                            Thread.Sleep(1500);
                            string msg = executor.Adb($"connect {endPoint}").ExitCode == 0 ? StatusMessages.Success : StatusMessages.Failed;
                            ui.Finish(msg);
                        }
                        else
                        {
                            ui.Finish(StatusMessages.Success);
                        }
                    }
                    else
                    {
                        ui.ShowMessage(this.RxGetClassText("can_not_read_ip"));
                        ui.Finish(StatusMessages.Success);
                    }
                }
                else
                {
                    ui.ShowMessage(this.RxGetClassText("is_not_usb_device"));
                    ui.Shutdown();
                }
            }
        }
Пример #5
0
 public void EntryPoint(ILeafUI ui, IDevice device, ICommandExecutor executor)
 {
     using (ui)
     {
         using (executor)
         {
             var text = ClassTextReaderCache.Acquire <EUnlockSystemParation>();
             ui.Show();
             executor.OutputReceived += (s, e) => ui.WriteLineToDetails(e.Text);
             executor.Adb(device, "root");
             var result = executor.Adb(device, "disable-verity");
             if (result.ExitCode == 0 && ui.DoYN(text["reboot"]))
             {
                 device.Reboot2System();
             }
             ui.Finish(result.ExitCode == 0 ? StatusMessages.Success : StatusMessages.Failed);
         }
     }
 }
Пример #6
0
        /// <summary>
        /// 安装位于PC机上的APK文件
        /// </summary>
        /// <returns></returns>
        public ICommandResult Install(FileInfo packageFile,
                                      bool allowDowngrade = true)
        {
            if (packageFile == null)
            {
                throw new ArgumentNullException(nameof(packageFile));
            }
            string args = allowDowngrade ? "-d" : "";

            return(executor.Adb(device, $"install {args} {packageFile}"));
        }
Пример #7
0
        /// <summary>
        /// 截图
        /// </summary>
        /// <exception cref="CommandErrorException">命令执行失败</exception>
        /// <exception cref="CommandCancelledException">命令被外部进程终止</exception>
        /// <returns>保存到PC上的截图文件名</returns>
        public FileInfo Cap(bool wakeUpDevice = true)
        {
            if (wakeUpDevice)
            {
                new KeyInputer(device, executor).RaiseKeyEvent(AndroidKeyCode.WakeUp);
            }
            string fileName   = GenerateUniqueFileName();
            string pcFileName = Path.Combine(tmpDir, fileName);

            executor.AdbShell(device, $"screencap -p /sdcard/{fileName}").ThrowIfError();
            executor.Adb(device, $"pull /sdcard/{fileName} {pcFileName}").ThrowIfError();
            executor.AdbShell(device, $"rm /sdcard/{fileName}");
            return(new FileInfo(pcFileName));
        }
Пример #8
0
        private Tuple <int, int, int> Install(List <FileInfo> files)
        {
            int successed         = 0;
            int error             = 0;
            int currentInstalling = 1;
            int totalCount        = files.Count;

            SetTip(currentInstalling, totalCount);
            foreach (var file in files)
            {
                try
                {
                    var result = executor.Adb(device, $"install -r -t -d \"{file.FullName}\"");
                    if (result.ExitCode == 0)
                    {
                        successed++;
                    }
                    else
                    {
                        error++;
                    }
                }
                catch (Exception ex)
                {
                    SLogger <EApkInstaller> .Warn("install apk failed", ex);

                    error++;
                }
                if (currentInstalling < totalCount)
                {
                    currentInstalling++;
                    SetTip(currentInstalling, totalCount);
                }
            }
            ;
            string fmtString = this.RxGetClassText("result_fmt");

            ui.StatusDescription = (string.Format(fmtString, successed, error, totalCount));
            return(new Tuple <int, int, int>(totalCount, successed, error));
        }
Пример #9
0
        public void EntryPoint(ILeafUI ui, ICommandExecutor executor)
        {
            var textCarrier = new TextCarrier();

            using (ui)
            {
                ui.Show();
                string     input    = null;
                IPEndPoint endPoint = null;
                do
                {
                    if (input != null)//输入错误
                    {
                        if (!ui.DoYN(textCarrier.RxGetClassText("input_error"), textCarrier.RxGetClassText("input_retry"), textCarrier.RxGetClassText("input_cancel")))
                        {
                            ui.EShutdown();
                        }
                    }
                    input = ui.InputString(textCarrier.RxGetClassText("input_hint"), input ?? "192.168.XX.X:5555");
                    if (input == null)
                    {
                        ui.EShutdown();
                    }
                } while (!TryParse(input, out endPoint));
                ui.Closing += (s, e) =>
                {
                    executor.CancelCurrent();
                    return(true);
                };
                executor.OutputReceived += (s, e) => ui.WriteLineToDetails(e.Text);
                if (executor.Adb($"connect {endPoint}").ExitCode == 0)
                {
                    ui.Finish(StatusMessages.Success);
                }
                else
                {
                    ui.Finish(StatusMessages.Failed);
                }
            }
        }