Exemplo n.º 1
0
        public static bool AcpServiceIsRunning(DeviceSerialNumber device)
        {
            CheckInstallApp(device);
            var result = AcpCommunicator.GetAcpCommunicator(device).SendCommand(Acp.CMD_TEST);

            return(result.IsSuccessful);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 清空app数据
        /// </summary>
        /// <param name="device"></param>
        /// <param name="packageName"></param>
        /// <returns></returns>
        public static bool CleanAppData(DeviceSerialNumber device, string packageName)
        {
            var exeResult = PackageManagerShared.Executer.QuicklyShell(device, "pm clear " + packageName);

            Logger.Info(TAG, $"clean {packageName} data success?{exeResult.IsSuccessful}");
            return(exeResult.IsSuccessful);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 获取一个对远端设备的某个端口的本地转发端口
        /// </summary>
        /// <param name="device">设备</param>
        /// <param name="remotePort">需要被转发的远程`端口</param>
        /// <returns></returns>
        public static ushort GetForwardByRemotePort(DeviceSerialNumber device, ushort remotePort)
        {
            //先获取所有的转发信息
            var forwards = GetAllForward();
            //在所有的转发信息里查找是否有需要被转发的端口
            var forwardInfos = forwards.FindAll((info) =>
            {
                return(info.Remote == remotePort);
            });
            //声明好需要返回的转发后的本地端口号
            ushort localPort;

            //如果需要被转发的端口已经被转发过了,并且是对当前设备的转发
            if (forwardInfos.Count > 0 && forwardInfos.First().DeviceSerial.Equals(device))
            {
                //就设定返回的本地端口为已转发的值
                localPort = forwardInfos.First().Local;
            }
            else//否则,设置一个新的转发
            {
                ushort idlePort = GetIdlePort();
                Forward(device, idlePort, remotePort);
                localPort = idlePort;
            }
            return(localPort);
        }
Exemplo n.º 4
0
 private static void CheckInstallApp(DeviceSerialNumber device)
 {
     if (!IsInstallAutumnBoxApp(device))
     {
         throw new AndroidAppIsNotInstallException();
     }
 }
Exemplo n.º 5
0
 public CloseNetDebugging(DevicesPanel root, DeviceSerialNumber serial)
 {
     InitializeComponent();
     _serial   = serial;
     TBIP.Text = serial.ToString();
     this.root = root;
 }
Exemplo n.º 6
0
 /// <summary>
 /// 构建一个使用adb.exe运行的命令,并且这个命令指定了设备
 /// </summary>
 /// <param name="_serial">设备序列号</param>
 /// <param name="command">命令</param>
 /// <returns>命令对象</returns>
 public static Command MakeForAdb(DeviceSerialNumber _serial, string command)
 {
     return(new Command()
     {
         FileName = AdbConstants.FullAdbFileName,
         Args = $"-s {_serial} {command}",
     });
 }
Exemplo n.º 7
0
        public static AcpCommunicator GetAcpCommunicator(DeviceSerialNumber device)
        {
            var communicator = communicators.Find((c) =>
            {
                return(c.device.Equals(device));
            });

            return(communicator ?? new AcpCommunicator(device));
        }
Exemplo n.º 8
0
 private AcpCommunicator(DeviceSerialNumber device, bool connectAfterCreate = true)
 {
     this.device = device;
     if (connectAfterCreate)
     {
         Connect();
     }
     communicators.Add(this);
 }
Exemplo n.º 9
0
        /// <summary>
        /// 进行转发,不建议外部进行调用,建议使用GetForwardByRemotePort() 有效避免端口浪费
        /// </summary>
        /// <param name="device">设备</param>
        /// <param name="localPort">本地端口</param>
        /// <param name="remotePort">远程端口</param>
        public static void Forward(DeviceSerialNumber device, ushort localPort, ushort remotePort)
        {
            var exeReuslt = executer.Execute(Command.MakeForAdb(device, $"forward tcp:{localPort} tcp:{remotePort}"));

            if (!exeReuslt.IsSuccessful)
            {
                throw new ExcutionException(exeReuslt);
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// 获取设备上的所有包
        /// </summary>
        /// <param name="devSerial"></param>
        /// <returns></returns>
        public static List <PackageInfo> GetPackages(DeviceSerialNumber devSerial)
        {
            var result  = PackageManagerShared.Executer.QuicklyShell(devSerial, $"pm list packages");
            var matches = Regex.Matches(result.ToString(), packagesPattern);
            List <PackageInfo> packages = new List <PackageInfo>();

            foreach (Match m in matches)
            {
                packages.Add(new PackageInfo(devSerial, m.Result("${package}")));
            }
            return(packages);
        }
Exemplo n.º 11
0
        /// <summary>
        /// 便捷的执行一段shell代码,但更建议使用AndroidShellV2来完成
        /// </summary>
        /// <param name="dev"></param>
        /// <param name="command"></param>
        /// <returns></returns>
        public AdvanceOutput QuicklyShell(DeviceSerialNumber dev, string command)
        {
            leastShellExitCode = null;
            var cmd      = Command.MakeForAdb(dev, $"shell \"{command} ; echo exitcode$?\"");
            var result   = Execute(cmd);
            var match    = Regex.Match(result.ToString(), exitCodePattern);
            int exitCode = 1;

            if (match.Success)
            {
                exitCode = int.Parse(match.Result("${code}"));
            }
            return(new AdvanceOutput(result, leastShellExitCode ?? 1));
        }
Exemplo n.º 12
0
 /// <summary>
 /// 构建
 /// </summary>
 /// <param name="device"></param>
 public AndroidShellV2(DeviceSerialNumber device)
 {
     this.device   = device;
     outputBuilder = new AdvanceOutputBuilder();
     pStartInfo    = new ProcessStartInfo()
     {
         StandardOutputEncoding = Encoding.UTF8,
         StandardErrorEncoding  = Encoding.UTF8,
         CreateNoWindow         = true,
         UseShellExecute        = false,
         RedirectStandardError  = true,
         RedirectStandardOutput = true,
         FileName = AdbConstants.FullAdbFileName,
     };
 }
Exemplo n.º 13
0
        public string GenerateRandomNumber()
        {
            var message    = "Save";
            var lastnumber = this.GetLastSerialNo();
            var length     = 600;

            if (this.IsAllDevicesUsed())
            {
                for (int serialNo = lastnumber; serialNo < (lastnumber + length); serialNo++)
                {
                    var prefix = "";

                    if (serialNo.ToString().Count() == 1)
                    {
                        prefix = "000";
                    }
                    else if (serialNo.ToString().Count() == 2)
                    {
                        prefix = "00";
                    }
                    else if (serialNo.ToString().Count() == 3)
                    {
                        prefix = "0";
                    }
                    else
                    {
                        prefix = "";
                    }
                    DeviceSerialNumber deviceSerialNumber = new DeviceSerialNumber
                    {
                        CreatedOn    = DateTime.Now,
                        UpdatedOn    = DateTime.Now,
                        IsActive     = true,
                        IsUsed       = false,
                        SerialNumber = FourDigitGenerateRandomNo().ToString() + FourDigitGenerateRandomNo().ToString() + FourDigitGenerateRandomNo().ToString() + (prefix + serialNo).ToString()
                    };
                    context.DeviceSerialNumbers.Add(deviceSerialNumber);
                    context.SaveChanges();
                }
            }
            else
            {
                message = "Please Use All Number";
            }


            return(message);
        }
Exemplo n.º 14
0
        private void UpdateDevice(object param)
        {
            try
            {
                if (SelectedDevice == null)
                {
                    throw new Exception("Устройство не выбрано");
                }

                if (string.IsNullOrEmpty(DeviceName.Trim()) || string.IsNullOrEmpty(DeviceSerialNumber.Trim()) ||
                    string.IsNullOrEmpty(DeviceIpAddress.Trim()) || PlatformId < 1)
                {
                    throw new Exception("Не заполнены обязательные поля");
                }

                using (var deviceService = _ppsClientViewModel.ServiceProxy.GetPpsChannelFactory <IDeviceService>())
                {
                    var channel = deviceService.CreateChannel();
                    var result  =
                        channel.UpdateDevice(SelectedDevice, new DeviceInfoDataContract
                    {
                        DeviceId           = SelectedDevice.DeviceId,
                        DeviceName         = DeviceName.Trim(),
                        DeviceSerialNumber = DeviceSerialNumber.Trim(),
                        DeviceMacAddress   = DeviceMacAddress.Trim(),
                        DeviceIpAddress    = DeviceIpAddress.Trim(),
                        DevicePlatformId   = PlatformId
                    });

                    if (!result.BoolRes || !string.IsNullOrEmpty(result.ErrorRes))
                    {
                        throw new Exception(result.ErrorRes);
                    }

                    _ppsClientViewModel.GetDeviceCollection();
                    _ppsClientViewModel.AddEvent(EventConstants.EVENT_UPD_DEVICE, SelectedDevice.DeviceSerialNumber);
                }
            }
            catch (Exception ex)
            {
                _ppsClientViewModel.WriteLogMessage("Не удалось изменить устройство - " + ex.Message);
            }
        }
Exemplo n.º 15
0
 /// <summary>
 /// 实例化
 /// </summary>
 /// <param name="id"></param>
 public AndroidShell(DeviceSerialNumber serial)
 {
     _mainProcess = new Process
     {
         StartInfo = new ProcessStartInfo()
         {
             StandardOutputEncoding = Encoding.UTF8,
             StandardErrorEncoding  = Encoding.UTF8,
             RedirectStandardError  = true,
             RedirectStandardInput  = true,
             RedirectStandardOutput = true,
             CreateNoWindow         = true,
             UseShellExecute        = false,
             FileName  = AdbConstants.FullAdbFileName,
             Arguments = $" -s {serial.ToString()} shell"
         }
     };
     _mainProcess.OutputDataReceived += (s, e) => { OnOutputReceived(new OutputReceivedEventArgs(e, false)); };
     _mainProcess.ErrorDataReceived  += (s, e) => { OnOutputReceived(new OutputReceivedEventArgs(e, true)); };
 }
Exemplo n.º 16
0
 public MiFlashBatExecuteProcess(string batFileName, DeviceSerialNumber serial)
 {
     this.StartInfo = new ProcessStartInfo()
     {
         UseShellExecute        = false,
         CreateNoWindow         = true,
         Arguments              = $"/q /c {batFileName} {serial.ToFullSerial()}",
         FileName               = "cmd.exe",
         WorkingDirectory       = AdbConstants.toolsPath,
         RedirectStandardError  = true,
         RedirectStandardOutput = true,
     };
     Logger.Warn(this, $"file path:{StartInfo.Arguments}");
     OutputDataReceived += (s, e) =>
     {
         OutputReceived?.Invoke(this, new OutputReceivedEventArgs(e, false));
     };
     ErrorDataReceived += (s, e) =>
     {
         OutputReceived?.Invoke(this, new OutputReceivedEventArgs(e, true));
     };
 }
Exemplo n.º 17
0
        /// <summary>
        /// 获取所有的端口转发信息
        /// </summary>
        /// <param name="device"></param>
        /// <returns></returns>
        public static List <ForwardInfo> GetAllForward(DeviceSerialNumber device = null)
        {
            List <ForwardInfo> forwards     = new List <ForwardInfo>();
            Command            queryCommand = device == null?
                                              Command.MakeForAdb(device, "forward --list") :
                                                  Command.MakeForAdb("forward --list");

            var queryResult = executer.Execute(queryCommand);

            //Logger.D(queryResult.Output.ToString());
            if (queryResult.IsSuccessful)
            {
                var matches = regex.Matches(queryResult.ToString());
                foreach (Match match in matches)
                {
                    forwards.Add(new ForwardInfo(
                                     new DeviceSerialNumber(match.Result("${serial}")),
                                     ushort.Parse(match.Result("${local}")),
                                     ushort.Parse(match.Result("${remote}"))
                                     ));
                }
            }
            return(forwards);
        }
Exemplo n.º 18
0
 private void MainWindow_Loaded(object sender, RoutedEventArgs e)
 {
     new TBLoadingEffect(TBLoading).Start();
     Task.Run(() =>
     {
         try
         {
             DeviceSerialNumber serial = null;
             this.Dispatcher.Invoke(() =>
             {
                 serial = ShowInfo.Serial;
             });
             var product = new DeviceInfoGetterInFastboot(serial).GetProduct();
             this.Dispatcher.Invoke(() =>
             {
                 TBSerial.Text += product == null ? null : "--" + product;
             });
         }
         catch (Exception ex)
         {
             Logger.Warn(this, "A exception happend  when getting product info on fastboot", ex);
         }
     });
 }
Exemplo n.º 19
0
 public OpenNetDebugging(DevicesPanel root, DeviceSerialNumber serial)
 {
     InitializeComponent();
     this.root = root;
     _serial   = serial;
 }
Exemplo n.º 20
0
 /// <summary>
 /// 构建
 /// </summary>
 /// <param name="owner"></param>
 /// <param name="name"></param>
 public PackageInfo(DeviceSerialNumber owner, string name)
 {
     this.Name  = name;
     this.Owner = owner;
 }
Exemplo n.º 21
0
 public UserManagerWindow(DeviceSerialNumber device)
 {
     InitializeComponent();
     userManager             = new UserManager(device);
     ButtonRemove.Visibility = Visibility.Hidden;
 }
Exemplo n.º 22
0
        /// <summary>
        /// 卸载App
        /// </summary>
        /// <param name="device"></param>
        /// <param name="packageName"></param>
        /// <returns></returns>
        public static bool UninstallApp(DeviceSerialNumber device, string packageName)
        {
            var exeResult = PackageManagerShared.Executer.Execute(Command.MakeForAdb(device, "uninstall " + packageName));

            return(!exeResult.Contains("Failure"));
        }
Exemplo n.º 23
0
 public static AdvanceOutput StopAcpService(DeviceSerialNumber device)
 {
     return(Broadcast.Send(device, BROADCAST_STOP_ACP_SERVICE));
 }
Exemplo n.º 24
0
        /// <summary>
        /// 检查是否安装了某个APP
        /// </summary>
        /// <param name="devSerial">设备</param>
        /// <param name="packageName">应用名</param>
        /// <returns></returns>
        public static bool?IsInstall(DeviceSerialNumber devSerial, string packageName)
        {
            var result = PackageManagerShared.Executer.QuicklyShell(devSerial, $"pm path {packageName}");

            return(result.IsSuccessful);
        }
Exemplo n.º 25
0
 /// <summary>
 /// 构造一个用户管理器
 /// </summary>
 /// <param name="device"></param>
 public UserManager(DeviceSerialNumber device)
 {
     this.shell = new AndroidShellV2(device);
 }
Exemplo n.º 26
0
 public static bool IsInstallAutumnBoxApp(DeviceSerialNumber serial)
 {
     return(PackageManager.IsInstall(serial, PACKAGE_NAME) == true);
 }
Exemplo n.º 27
0
 public static AdvanceOutput StartMainActivity(DeviceSerialNumber device)
 {
     return(Activity.Start(device, PACKAGE_NAME, MAIN_ACTIVITY_NAME));
 }
Exemplo n.º 28
0
 private static IPEndPoint GetEndPoint(DeviceSerialNumber serial)
 {
     return(new IPEndPoint(IPAddress.Parse("127.0.0.1"),
                           ForwardManager.GetForwardByRemotePort(serial, Acp.STD_PORT)));
 }
Exemplo n.º 29
0
 /// <summary>
 /// 启动一个Activty
 /// </summary>
 /// <param name="device">设备</param>
 /// <param name="pkgName">包名</param>
 /// <param name="className">Activity的类名</param>
 /// <returns></returns>
 public static AdvanceOutput Start(DeviceSerialNumber device, string pkgName, string className)
 {
     return(ActivityManagerShared.Executer.QuicklyShell(device, $"am start {pkgName}/.{className}"));
 }
Exemplo n.º 30
0
 public static AdvanceOutput AwakeAcpService(DeviceSerialNumber device)
 {
     CheckInstallApp(device);
     StartMainActivity(device);
     return(Service.StartService(device, PACKAGE_NAME, SERVICE_NAME));
 }