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!"); } } }
/// <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; }
/// <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); }); } }); }