Skip to content
This repository was archived by the owner on Oct 5, 2023. It is now read-only.

Commit

Permalink
better
Browse files Browse the repository at this point in the history
  • Loading branch information
jiangyitao committed Jul 8, 2020
1 parent fce9864 commit 8553b1e
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 11 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.daxiang</groupId>
<artifactId>agent</artifactId>
<version>0.7.0</version>
<version>0.7.1</version>
<packaging>jar</packaging>

<properties>
Expand Down
25 changes: 15 additions & 10 deletions src/main/java/com/daxiang/core/mobile/ios/IosDevice.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import com.daxiang.core.mobile.appium.AppiumServer;
import com.daxiang.core.mobile.appium.IosNativePageSourceHandler;
import com.daxiang.core.mobile.Mobile;
import com.daxiang.utils.Terminal;
import com.daxiang.utils.UUIDUtil;
import io.appium.java_client.ios.IOSDriver;
import io.appium.java_client.ios.IOSStartScreenRecordingOptions;
Expand All @@ -33,11 +32,6 @@
@Slf4j
public class IosDevice extends MobileDevice {

/**
* iproxy localPort remotePort mobileId
*/
private static final String IPROXY_CMD = "iproxy %d %d %s";

private ExecuteWatchdog iproxyMjpegServerWatchdog;

public IosDevice(Mobile mobile, AppiumServer appiumServer) {
Expand Down Expand Up @@ -93,6 +87,19 @@ protected Capabilities newCaps(Capabilities capsToMerge) {
return capabilities;
}

@Override
public void installApp(File appFile) {
if (appFile.getName().endsWith(".ipa")) {
try {
IosUtil.installAppByIdeviceinstaller(getId(), appFile.getAbsolutePath());
} catch (IOException e) {
throw new RuntimeException(e);
}
} else {
super.installApp(appFile);
}
}

@Override
public void uninstallApp(String app) {
IosUtil.uninstallApp(driver, app);
Expand Down Expand Up @@ -143,10 +150,8 @@ public long getMjpegServerPort() {

public long startMjpegServerIproxy() throws IOException {
long mjpegServerPort = getMjpegServerPort();
String cmd = String.format(IPROXY_CMD, mjpegServerPort, mjpegServerPort, getId());

log.info("[{}]startMjpegServerIproxy: {}", getId(), cmd);
iproxyMjpegServerWatchdog = Terminal.executeAsyncAndGetWatchdog(cmd);
log.info("[{}]startMjpegServerIproxy", getId());
iproxyMjpegServerWatchdog = IosUtil.iproxy(mjpegServerPort, mjpegServerPort, getId());
return mjpegServerPort;
}

Expand Down
25 changes: 25 additions & 0 deletions src/main/java/com/daxiang/core/mobile/ios/IosUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.daxiang.utils.Terminal;
import com.google.common.collect.ImmutableMap;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.exec.ExecuteWatchdog;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.springframework.util.StringUtils;

Expand Down Expand Up @@ -79,6 +80,11 @@ public static String getDeviceName(String mobileId, boolean isRealDevice) throws
}
}

public static void installAppByIdeviceinstaller(String mobileId, String appPath) throws IOException {
String cmd = "ideviceinstaller -u %s -i %s";
Terminal.execute(String.format(cmd, mobileId, appPath));
}

public static void uninstallApp(RemoteWebDriver driver, String bundleId) {
driver.executeScript("mobile: removeApp", ImmutableMap.of("bundleId", bundleId));
}
Expand All @@ -96,4 +102,23 @@ public static boolean terminateApp(RemoteWebDriver driver, String bundleId) {
public static void pressHome(RemoteWebDriver driver) {
driver.executeScript("mobile:pressButton", ImmutableMap.of("name", "home"));
}

private static Boolean isOldIproxy = null;

public static ExecuteWatchdog iproxy(long localPort, long remotePort, String mobileId) throws IOException {
if (isOldIproxy == null) {
// libusbmuxd < 2.0.2
isOldIproxy = Terminal.execute("iproxy -v")
.contains("usage: iproxy LOCAL_TCP_PORT DEVICE_TCP_PORT [UDID]");
}

String cmd;
if (isOldIproxy) {
cmd = String.format("iproxy %d %d %s", localPort, remotePort, mobileId);
} else {
cmd = String.format("iproxy %d:%d -u %s", localPort, remotePort, mobileId);
}

return Terminal.executeAsyncAndGetWatchdog(cmd);
}
}

0 comments on commit 8553b1e

Please sign in to comment.