From f5e4e8db981bd7c0edf6e31d8dd2f9a3e00e8b29 Mon Sep 17 00:00:00 2001 From: Holger Ihrig Date: Tue, 21 Apr 2015 21:51:28 +0200 Subject: [PATCH 1/4] Add restart function to IOSDevice --- .../ios/driver/binding/services/IOSDevice.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/org/libimobiledevice/ios/driver/binding/services/IOSDevice.java b/src/main/java/org/libimobiledevice/ios/driver/binding/services/IOSDevice.java index 44f40b5..275c5fd 100644 --- a/src/main/java/org/libimobiledevice/ios/driver/binding/services/IOSDevice.java +++ b/src/main/java/org/libimobiledevice/ios/driver/binding/services/IOSDevice.java @@ -22,6 +22,7 @@ import java.util.logging.Logger; import static org.libimobiledevice.ios.driver.binding.exceptions.SDKErrorCode.throwIfNeeded; +import static org.libimobiledevice.ios.driver.binding.raw.ImobiledeviceSdkLibrary.sdk_idevice_restart; import static org.libimobiledevice.ios.driver.binding.raw.ImobiledeviceSdkLibrary.sdk_idevice_free; import static org.libimobiledevice.ios.driver.binding.raw.ImobiledeviceSdkLibrary.sdk_idevice_new; import static org.libimobiledevice.ios.driver.binding.raw.ImobiledeviceSdkLibrary.sdk_idevice_t; @@ -67,6 +68,10 @@ public SysLogService getSysLogService() throws SDKException { } return sysLogService; } + + public void restart() throws SDKException { + throwIfNeeded(sdk_idevice_restart(sdk_handle)); + } } From 92fb842973fde8b6e95caceed17ac8b0549e15f9 Mon Sep 17 00:00:00 2001 From: Holger Ihrig Date: Wed, 29 Apr 2015 13:33:36 +0200 Subject: [PATCH 2/4] Add appId parameter to InstallerService Adding the appId parameter to the InstallerService so that the SyslogListener can listen to the right package identifier instead of the hardcoded com.ebay.iphone identifier --- .../ios/driver/binding/services/InstallerService.java | 7 +++++-- .../org/libimobiledevice/ios/driver/test/DebugTest.java | 3 ++- .../org/libimobiledevice/ios/driver/test/InstallTest.java | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/libimobiledevice/ios/driver/binding/services/InstallerService.java b/src/main/java/org/libimobiledevice/ios/driver/binding/services/InstallerService.java index a597c8b..63b00ec 100644 --- a/src/main/java/org/libimobiledevice/ios/driver/binding/services/InstallerService.java +++ b/src/main/java/org/libimobiledevice/ios/driver/binding/services/InstallerService.java @@ -23,6 +23,7 @@ import java.util.Date; import java.util.List; import java.util.concurrent.Callable; +import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -88,7 +89,7 @@ private List parse(String raw) { return infos; } - public void install(final File ipa, final InstallCallback cb) throws SDKException { + public void install(final String appId, final File ipa, final InstallCallback cb) throws SDKException { if (!ipa.exists()) { throw new SDKException("the ipa file " + ipa + " doesn't exist."); } @@ -111,7 +112,7 @@ public Integer call() throws Exception { @Override public void onLog(SysLogLine line) { if (line.getMessage() - .equals("LaunchServices: Adding com.ebay.iphone to registration list")) { + .contains("ADDING REMOTE " + appId)) { if (line.getDate().after(now)) { cb.onUpdate("Done from syslog", 100, "Done"); future.cancel(true); @@ -129,6 +130,8 @@ public void onLog(SysLogLine line) { // ignore } catch (ExecutionException e) { // ignore + } catch (CancellationException e) { + // ignore } finally { device.getSysLogService().remove(checkSyslogForCompletion); } diff --git a/src/test/java/org/libimobiledevice/ios/driver/test/DebugTest.java b/src/test/java/org/libimobiledevice/ios/driver/test/DebugTest.java index 256aff3..aa56b3b 100644 --- a/src/test/java/org/libimobiledevice/ios/driver/test/DebugTest.java +++ b/src/test/java/org/libimobiledevice/ios/driver/test/DebugTest.java @@ -34,6 +34,7 @@ public void openURL() throws InterruptedException, IOSDevice d = DeviceService.get(main); InstallerService installer = new InstallerService(d); + String appId = "ios-driver.ios-driver"; try { installer.getApplication("ios-driver.ios-driver"); } catch (SDKException e) { @@ -43,7 +44,7 @@ protected void onUpdate(String operation, int percent, String message) { sout(operation, percent, message); } }; - installer.install(new File("/Users/freynaud/ios-driver.ipa"), cb); + installer.install(appId, new File("/Users/freynaud/ios-driver.ipa"), cb); } DebugService service = new DebugService(DeviceService.get(main)); diff --git a/src/test/java/org/libimobiledevice/ios/driver/test/InstallTest.java b/src/test/java/org/libimobiledevice/ios/driver/test/InstallTest.java index 6245d58..565380e 100644 --- a/src/test/java/org/libimobiledevice/ios/driver/test/InstallTest.java +++ b/src/test/java/org/libimobiledevice/ios/driver/test/InstallTest.java @@ -11,6 +11,7 @@ import java.io.File; import java.util.List; +import static org.libimobiledevice.ios.driver.test.ConnectedDevices.ebayId4; import static org.libimobiledevice.ios.driver.test.ConnectedDevices.main; public class InstallTest { @@ -45,8 +46,9 @@ protected void onUpdate(String operation, int percent, String message) { File ui = new File("/Users/freynaud/UICatalog.ipa"); // File ui = new File("/Users/freynaud/out/com.yourcompany.UICatalog.ipa"); File eBay = new File("/Users/freynaud/tmp/com.ebay.iphone.ipa"); + String appId = "com.ebay.iphone"; - service.install(ui, cb); + service.install(appId, eBay, cb); service.free(); // service.install(new File("/Users/freynaud/Downloads/ebay_iphone_enterprise_3.2.0a1_build6.ipa")); From ffa8692e9d7a64ffe436a369eb7883b141aea7db Mon Sep 17 00:00:00 2001 From: Holger Ihrig Date: Wed, 29 Apr 2015 13:33:38 +0200 Subject: [PATCH 3/4] Remove Device from DeviceService before restarting --- .../libimobiledevice/ios/driver/binding/services/IOSDevice.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/libimobiledevice/ios/driver/binding/services/IOSDevice.java b/src/main/java/org/libimobiledevice/ios/driver/binding/services/IOSDevice.java index 275c5fd..132f465 100644 --- a/src/main/java/org/libimobiledevice/ios/driver/binding/services/IOSDevice.java +++ b/src/main/java/org/libimobiledevice/ios/driver/binding/services/IOSDevice.java @@ -70,6 +70,7 @@ public SysLogService getSysLogService() throws SDKException { } public void restart() throws SDKException { + DeviceService.remove(uuid); throwIfNeeded(sdk_idevice_restart(sdk_handle)); } } From d9fa26223bd71f0dd9f80c70c7a2a3b85efcb61b Mon Sep 17 00:00:00 2001 From: Holger Ihrig Date: Wed, 29 Apr 2015 13:33:39 +0200 Subject: [PATCH 4/4] Make SysLogService public --- .../ios/driver/binding/services/SysLogService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/libimobiledevice/ios/driver/binding/services/SysLogService.java b/src/main/java/org/libimobiledevice/ios/driver/binding/services/SysLogService.java index 2dcfce6..0768793 100644 --- a/src/main/java/org/libimobiledevice/ios/driver/binding/services/SysLogService.java +++ b/src/main/java/org/libimobiledevice/ios/driver/binding/services/SysLogService.java @@ -30,7 +30,7 @@ public class SysLogService { private final SyslogMessageListeners handlers = new SyslogMessageListeners(); private boolean started = false; - SysLogService(IOSDevice d) throws SDKException { + public SysLogService(IOSDevice d) throws SDKException { PointerByReference ptr = new PointerByReference(); throwIfNeeded(syslog_service_new(d.getSDKHandle(), ptr));