diff --git a/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/driver/ios/NKAgent.java b/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/driver/ios/NKAgent.java index 051faa6..3696733 100644 --- a/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/driver/ios/NKAgent.java +++ b/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/driver/ios/NKAgent.java @@ -276,6 +276,23 @@ public final class NKAgent { return screenShotData; } + /** + * 杀死app + * @param string bundleId + * @return 是否成功 + */ + public boolean terminateApp(String string) { + if (string.isEmpty()) { + throw new IllegalArgumentException("bundleId不能为空"); + } + TextData data = new TextData(); + data.setText(string); + ICommandPacket packet = packetTransfer.syncSend(34, data); + if (packet == null) return false; + BooleanCommandData bool = new BooleanCommandData(); + packet.fillICommandData(bool); + return bool.isSuccess(); + } public boolean getStatus() { diff --git a/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/driver/ios/command/data/ScreenShotData.java b/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/driver/ios/command/data/ScreenShotData.java index 1e33052..c494c7a 100644 --- a/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/driver/ios/command/data/ScreenShotData.java +++ b/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/driver/ios/command/data/ScreenShotData.java @@ -15,13 +15,17 @@ public class ScreenShotData implements ICommandData { @Override public void buildFromInput(DataInput dataInput) throws IOException { dataLength = dataInput.readInt(); - data = new byte[dataLength]; - dataInput.readFully(data); + if (dataLength > 0) { + data = new byte[dataLength]; + dataInput.readFully(data); + } } @Override public void encodeToOutput(DataOutput dataOutput) throws IOException { - dataOutput.writeInt(dataLength); - dataOutput.write(data); + if (dataLength > 0) { + dataOutput.writeInt(dataLength); + dataOutput.write(data); + } } } diff --git a/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/service/IosDebuggerServiceImpl.java b/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/service/IosDebuggerServiceImpl.java index 151236e..5e92e5a 100644 --- a/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/service/IosDebuggerServiceImpl.java +++ b/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/service/IosDebuggerServiceImpl.java @@ -7,6 +7,8 @@ import io.appium.java_client.AppiumDriver; import net.northking.cctp.upperComputer.config.MobileProperty; import net.northking.cctp.upperComputer.deviceManager.common.PyMobileDevice; import net.northking.cctp.upperComputer.deviceManager.screen.IosScreenResponseThread; +import net.northking.cctp.upperComputer.deviceManager.thread.IosDeviceInitThread; +import net.northking.cctp.upperComputer.driver.ios.NKAgent; import net.northking.cctp.upperComputer.entity.Attachment; import net.northking.cctp.upperComputer.entity.DebuggerDeviceInfo; import net.northking.cctp.upperComputer.entity.PhoneEntity; @@ -323,8 +325,8 @@ public class IosDebuggerServiceImpl extends AbstractDebuggerService { public boolean terminateApp(String deviceId, String appPackage) { boolean flag = deviceHandleHelper instanceof MacIosHandleHelper; if (flag) { - PyMobileDevice.SpecificAppleDeviceInfo specificAppleDeviceInfo = IOSDeviceManager.getInstance().getSpecificAppleDeviceInfo(deviceId); - boolean killFlag = PyMobileDevice.getInstance().pkill(specificAppleDeviceInfo, appPackage); + NKAgent nkAgent = getNkAgent(deviceId); + boolean killFlag = nkAgent.terminateApp(appPackage); if (killFlag) { logger.info("设备{},执行关闭应用 {} 命令成功", deviceId, appPackage); } else { @@ -382,4 +384,15 @@ public class IosDebuggerServiceImpl extends AbstractDebuggerService { queryDeviceInfoMap.put(info.getCaseId(), deviceAllInfoThread); return true; } + private NKAgent getNkAgent(String deviceId) { + IosDeviceInitThread iosInitThread = IOSDeviceManager.getInstance().getIosInitThread(deviceId); + if (null == iosInitThread || !iosInitThread.isAlive() || iosInitThread.isInterrupted()) { + throw new ExecuteException("设备已经掉线,请重新接入设备"); + } + NKAgent nkAgent = iosInitThread.getNkAgent(); + if (!nkAgent.getStatus()) { + throw new ExecuteException("设备Agent还未准备好,稍后再试"); + } + return nkAgent; + } }