Пример #1
0
        private void ExecuteADB(object obj)
        {
            string cmd = obj.ToString();
            String adb = Application.StartupPath + "\\adb.exe";

            ProcessHelper.RunResult r = ProcessHelper.Run(adb, cmd);
            if (r.Success)
            {
                this.Invoke(new MethodInvoker(delegate
                {
                    this.txtCmd.AppendText(r.OutputString + "\n");
                }));
            }
            else
            {
                if (LanguageSet.Language == "0")
                {
                    MessageBox.Show("adb 命令出错!");
                }
                else
                {
                    MessageBox.Show("adb Command error!");
                }
            }
        }
Пример #2
0
        /// <summary>
        ///加载模拟器信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void dgPhoneManagement_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            Id.Header                  = resourceManager.GetString("ID", cultureInfo);
            IMEI.Header                = resourceManager.GetString("IMEI", cultureInfo);
            phoneBrand.Header          = resourceManager.GetString("Phone_Brand", cultureInfo);
            phoneType.Header           = resourceManager.GetString("Phone_Type", cultureInfo);
            lblLoginManagement.Content = resourceManager.GetString("Login_Management", cultureInfo);
            AppOptViewModel _appOptViewModel = new AppOptViewModel();

            int index = 0;

            if (DeviceConnectionManager.Instance.Devices != null)
            {
                foreach (string deviceIP in DeviceConnectionManager.Instance.Devices)
                {
                    string cmdImei      = string.Format("getprop phone.imei");
                    string cmdImsi      = string.Format("getprop phone.imsi");
                    string cmdAndroidId = string.Format("getprop phone.androidid");
                    string cmdModel     = string.Format("getprop ro.product.model");
                    string cmdBrand     = string.Format("getprop ro.product.brand");

                    ProcessHelper.WaitTime = 50;//每条命令执行后的等待时间,时间过短可能获取不到值,需要调整一个合适的阀值,默认50即可,如果获取不到可适当调大
                    string flag = @"root@x86:/ #";

                    ProcessHelper.RunResult runResult = ProcessHelper.RunAsContinueMode(ProcessUtils.LDPath + @"\adb", string.Format("-s {0} shell", deviceIP), new[] { cmdImei, cmdImsi, cmdAndroidId, cmdModel, cmdBrand, "exit" });

                    string imei = await ProcessHelper.FilterString(runResult.MoreOutputString[cmdImei], cmdImei, flag);

                    string imsi = await ProcessHelper.FilterString(runResult.MoreOutputString[cmdImsi], cmdImsi, flag);

                    string androidId = await ProcessHelper.FilterString(runResult.MoreOutputString[cmdAndroidId], cmdAndroidId, flag);

                    string model = await ProcessHelper.FilterString(runResult.MoreOutputString[cmdModel], cmdModel, flag);

                    string brand = await ProcessHelper.FilterString(runResult.MoreOutputString[cmdBrand], cmdBrand, flag);

                    _appOptViewModel.simulator.Add(new Simulator()
                    {
                        Id         = index + 1,
                        Imei       = imei,
                        Imsi       = imsi,
                        PhoneBrand = brand,
                        PhoneType  = model,
                        Androidid  = androidId
                    });
                    index++;
                }
            }
            dgPhoneManagement.ItemsSource = _appOptViewModel.simulator;
        }
Пример #3
0
        /// <summary>
        /// 重建模拟器
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnReconstruction_Click(object sender, RoutedEventArgs e)
        {
            Task.Run(() =>
            {
                //TODO 因为可能多选,需要先获取已选的模拟器,遍历
                var devicesList = from item in treeviewReconstructionSimulator.ItemsSourceData.FirstOrDefault().Children
                                  where item.IsChecked

                                  select new
                {
                    id        = (int)item.Id - 1,
                    DevicesIp = "127.0.0.1:55" + (55 + ((int)item.Id - 1) * 2)
                };

                foreach (var p in devicesList)
                {
                    string deviceIP    = p.DevicesIp;
                    string cmdWipeData = string.Format("wipe data");
                    string cmdReboot   = string.Format("reboot");
                    //每条命令执行后的等待时间,时间过短可能获取不到值,需要调整一个合适的阀值,默认50即可,如果获取不到可适当调大
                    ProcessHelper.WaitTime = 50;
                    string flag            = @"root@x86:/ #";

                    // 1、执行擦除命令
                    ProcessHelper.RunResult runResult = ProcessHelper.RunAsContinueMode(ProcessUtils.LDPath + @"\adb", string.Format("-s {0} shell", deviceIP), new[] { cmdWipeData, "exit" });

                    #region adb install方式安装apk
                    //命令原型:adb -s xxxxxx:xxxx install ./facebook.apk
                    //string apkPath = "xxx.apk";
                    string apkPath = $"{ Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)}\\AppDatas\\";

                    var files = Directory.GetFiles(apkPath, "*.apk");
                    //TODO 如果安装多个apk,循环处理,调用下面的ProcessHelper.RunAsContinueMode
                    // 2、安装apk
                    Task.Run(() =>
                    {
                        foreach (var file in files)
                        {
                            runResult = ProcessHelper.RunAsContinueMode(ProcessUtils.LDPath + @"\adb",
                                                                        string.Format("-s {0} install {1}", deviceIP, file, new[] { "exit" }));
                            Thread.Sleep(4500);
                        }
                        #endregion
                        // 3、使用标准命令(standard)执行模式重启
                        ProcessHelper.RunAsStandardModel(ProcessUtils.LDPath + @"\adb", cmdReboot);
                        Thread.Sleep(2000);
                    });
                }
            });
        }