/// <summary> /// 主函数 /// </summary> /// <param name="toolKit"></param> /// <returns></returns> protected override Output MainMethod(ToolKit <DeviceImageExtractorArgs> toolKit) { var outBuilder = new AdvanceOutputBuilder(); string path = DeviceImageFinder.PathOf(toolKit.Args.DevBasicInfo.Serial, toolKit.Args.ImageType); if (path == null) { return(null); } _getPathSuccessful = true; using (AndroidShell shell = new AndroidShell(toolKit.Args.DevBasicInfo.Serial)) { shell.Connect(); shell.Switch2Su(); //复制到程序根目录 string copyPath = $"/sdcard/{tempFileName}"; var copyResult = shell.SafetyInput($"cp {path} {copyPath}"); outBuilder.Append(copyResult); if (copyResult.IsSuccessful) { _copySuccessful = copyResult.IsSuccessful; var filePullerArgs = new FilePullerArgs() { DevBasicInfo = toolKit.Args.DevBasicInfo, SavePath = toolKit.Args.SavePath + $"\\{toolKit.Args.ImageType.ToString().ToLower()}.img", FilePathOnDevice = copyPath, }; var pullResult = new FilePuller().Run(filePullerArgs); _pullSuccessful = (pullResult.ExitCode == 0); toolKit.Ae("rm -rf " + copyPath); outBuilder.Append(pullResult.OutputData); } } return(outBuilder.Result); }
/// <summary> /// 主函数 /// </summary> /// <param name="toolKit"></param> /// <returns></returns> protected override Output MainMethod(ToolKit <DeviceImageFlasherArgs> toolKit) { var outputBuilder = new AdvanceOutputBuilder(); /*push image file to sdcard*/ var pushArgs = new FilePusherArgs() { DevBasicInfo = toolKit.Args.DevBasicInfo, SavePath = _savePath, SourceFile = toolKit.Args.SourceFile, }; var pushResult = new FilePusher().Run(pushArgs); outputBuilder.Append(pushResult.OutputData); /*move file to img path*/ string path = DeviceImageFinder.PathOf(toolKit.Args.DevBasicInfo.Serial, toolKit.Args.ImageType); using (AndroidShell shell = new AndroidShell(toolKit.Args.DevBasicInfo.Serial)) { shell.Connect(); shell.Switch2Su(); moveResult = shell.SafetyInput($"mv {_savePath} {path}"); outputBuilder.Append(moveResult); } return(outputBuilder.Result); }
public DeviceBuildPropSetter(DeviceSerialNumber serial) { this.DeviceSerial = serial; shellAsSu = new AndroidShell(serial); shellAsSu.Connect(); if (!shellAsSu.Switch2Su()) { throw new DeviceHaveNoRootException(); } ReloadFromDevice(); }
/// <summary> /// 主方法 /// </summary> /// <param name="toolKit"></param> /// <returns></returns> protected override Output MainMethod(ToolKit <ShScriptExecuterArgs> toolKit) { _tooKit = toolKit; var ob = new AdvanceOutputBuilder(); if (AppPackageName != null && AppActivity != null) { Logger.Info(this, Activity.Start(toolKit.Args.Serial, AppPackageName, AppActivity)); Thread.Sleep(Delay); } int retCode = 0; using (AndroidShell shell = new AndroidShell(toolKit.Args.DevBasicInfo.Serial)) { shell.Connect(); ob.Register(shell); retCode = shell.SafetyInput($"sh {ScriptPath}").GetExitCode(); } ob.ExitCode = retCode; _result = ob.Result; return(_result); }