From da9dae6e8949193901059498eb92eafbaf254b2b Mon Sep 17 00:00:00 2001 From: David Rogers Date: Wed, 2 Dec 2020 10:56:27 -0600 Subject: [PATCH 01/16] Adding my local changes. Delta installs, fixed logging and other stuff --- .../Commands/FBDeviceApplicationCommands.h | 8 ++++ .../Commands/FBDeviceApplicationCommands.m | 43 +++++++++++++++++++ .../Commands/FBDeviceLogCommands.h | 2 + .../Commands/FBDeviceLogCommands.m | 1 + FBDeviceControl/FBDeviceControl.h | 4 ++ .../Management/FBAMDServiceConnection.h | 5 +++ .../Management/FBAMDServiceConnection.m | 6 ++- FBDeviceControl/Management/FBAMDefines.h | 1 + FBDeviceControl/Management/FBAMDevice.m | 2 + .../Utility/FBDeviceControlFrameworkLoader.m | 1 + FBSimulatorControl.xcodeproj/project.pbxproj | 25 ++++++++--- 11 files changed, 89 insertions(+), 9 deletions(-) diff --git a/FBDeviceControl/Commands/FBDeviceApplicationCommands.h b/FBDeviceControl/Commands/FBDeviceApplicationCommands.h index 020535bfb..277885c4e 100644 --- a/FBDeviceControl/Commands/FBDeviceApplicationCommands.h +++ b/FBDeviceControl/Commands/FBDeviceApplicationCommands.h @@ -17,6 +17,14 @@ NS_ASSUME_NONNULL_BEGIN An Implementation of FBApplicationCommands for Devices */ @interface FBDeviceApplicationCommands : NSObject +/** + Instantiates the Commands instance. + + @param target the target to use. + @return a new instance of the Command. + */ ++ (instancetype)commandsWithTarget:(FBDevice *)target; +- (FBFuture *)deltaInstallApplicationWithPath:(NSString *)path andShadowDirectory:(NSString *)shadowDir; @end diff --git a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m index ddbf630a3..01f374b80 100644 --- a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m +++ b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m @@ -111,6 +111,24 @@ - (instancetype)initWithDevice:(FBDevice *)device }]; } +- (FBFuture *)deltaInstallApplicationWithPath:(NSString *)path andShadowDirectory:(NSString *)shadowDir +{ + NSString *cacheDirectory = shadowDir; + if (cacheDirectory == nil) { + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); + cacheDirectory = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"idb"]; + } + + // Ensure that the shadow directory exists as the Apple API will not create it. + NSError *error = nil; + [[NSFileManager defaultManager] createDirectoryAtPath:cacheDirectory withIntermediateDirectories:TRUE attributes:nil error:&error]; + + NSDictionary *options = @{@"PackageType" : @"Developer", @"ShadowParentKey" : [NSURL fileURLWithPath:cacheDirectory]}; + NSURL *appURL = [NSURL fileURLWithPath:path isDirectory:YES]; + + return [self secureDeltaInstallApplication:appURL options:options]; +} + - (FBFuture *)uninstallApplicationWithBundleID:(NSString *)bundleID { // It may be better to investigate if FB_AMDeviceSecureUninstallApplication @@ -307,6 +325,30 @@ - (instancetype)initWithDevice:(FBDevice *)device }]; } +- (FBFuture *)secureDeltaInstallApplication:(NSURL *)appURL options:(NSDictionary *)options +{ + return [[self.device + connectToDeviceWithPurpose:@"install"] + onQueue:self.device.workQueue pop:^ FBFuture * (id device) { + [self.device.logger logFormat:@"Installing Application %@", appURL]; + int status = device.calls.SecureInstallApplicationBundle( + device.amDeviceRef, + (__bridge CFURLRef _Nonnull)(appURL), + (__bridge CFDictionaryRef _Nonnull)(options), + (AMDeviceProgressCallback) InstallCallback, + (__bridge void *) (device) + ); + if (status != 0) { + NSString *errorMessage = CFBridgingRelease(device.calls.CopyErrorText(status)); + return [[FBDeviceControlError + describeFormat:@"Failed to install application %@ 0x%x (%@)", [appURL lastPathComponent], status, errorMessage] + failFuture]; + } + [self.device.logger logFormat:@"Installed Application %@", appURL]; + return FBFuture.empty; + }]; +} + - (FBFuture *> *> *)installedApplicationsData:(NSArray *)returnAttributes { return [[self.device @@ -335,6 +377,7 @@ - (instancetype)initWithDevice:(FBDevice *)device { // There is a change in service names in iOS 14 that we have to account for. // Both of these channels are fine to use with the same underlying protocol, so long as the secure wrapper is used on the transport. + // FIXME: iOS 13.7 requires secure. 13.3.1 does not. Figure out when that changed BOOL usesSecureConnection = self.device.osVersion.version.majorVersion >= 14; return [[[self.device ensureDiskImageIsMounted] diff --git a/FBDeviceControl/Commands/FBDeviceLogCommands.h b/FBDeviceControl/Commands/FBDeviceLogCommands.h index 73b8e418c..7f00cf9a3 100644 --- a/FBDeviceControl/Commands/FBDeviceLogCommands.h +++ b/FBDeviceControl/Commands/FBDeviceLogCommands.h @@ -17,6 +17,8 @@ NS_ASSUME_NONNULL_BEGIN An implementation of Log Commands for Devices. */ @interface FBDeviceLogCommands : NSObject ++ (instancetype)commandsWithTarget:(FBDevice *)target; +- (FBFuture> *)tailLog:(NSArray *)arguments consumer:(id)consumer; @end diff --git a/FBDeviceControl/Commands/FBDeviceLogCommands.m b/FBDeviceControl/Commands/FBDeviceLogCommands.m index 834e06cf9..cc02baf3b 100644 --- a/FBDeviceControl/Commands/FBDeviceLogCommands.m +++ b/FBDeviceControl/Commands/FBDeviceLogCommands.m @@ -93,6 +93,7 @@ - (instancetype)initWithDevice:(FBDevice *)device return [[self.device startService:@"com.apple.syslog_relay"] onQueue:queue enter:^(FBAMDServiceConnection *connection, FBMutableFuture *teardown) { + connection.readBufferSize = 1; FBFuture *readCompleted = [connection consume:consumer onQueue:dispatch_queue_create("com.facebook.fbdevicecontrol.device_log_consumer", DISPATCH_QUEUE_SERIAL)]; return [[FBDeviceLogOperation alloc] initWithConsumer:consumer readCompleted:readCompleted serviceCompleted:teardown]; }]; diff --git a/FBDeviceControl/FBDeviceControl.h b/FBDeviceControl/FBDeviceControl.h index c5fd5f1b7..a1e92a8e3 100644 --- a/FBDeviceControl/FBDeviceControl.h +++ b/FBDeviceControl/FBDeviceControl.h @@ -9,12 +9,16 @@ #import #import #import +#import #import #import #import +#import #import #import #import +#import +#import #import #import #import diff --git a/FBDeviceControl/Management/FBAMDServiceConnection.h b/FBDeviceControl/Management/FBAMDServiceConnection.h index ec9be4430..fad4dfb44 100644 --- a/FBDeviceControl/Management/FBAMDServiceConnection.h +++ b/FBDeviceControl/Management/FBAMDServiceConnection.h @@ -187,6 +187,11 @@ NS_ASSUME_NONNULL_BEGIN */ @property (nonatomic, assign, readonly) AMSecureIOContext secureIOContext; +/** + The size of the read buffer. Public so specific services(such as syslog) can override the default. + */ +@property (nonatomic, assign) int readBufferSize; + @end NS_ASSUME_NONNULL_END diff --git a/FBDeviceControl/Management/FBAMDServiceConnection.m b/FBDeviceControl/Management/FBAMDServiceConnection.m index 33f054ea9..dc8333096 100644 --- a/FBDeviceControl/Management/FBAMDServiceConnection.m +++ b/FBDeviceControl/Management/FBAMDServiceConnection.m @@ -47,6 +47,8 @@ - (instancetype)initWithServiceConnection:(AMDServiceConnectionRef)connection de _device = device; _calls = calls; _logger = logger; + // There's an upper limit on the number of bytes we can read at once + _readBufferSize = 1024 * 4; return self; } @@ -99,9 +101,9 @@ - (id)sendAndReceiveMessage:(id)message error:(NSError **)error { return [FBFuture onQueue:queue resolve:^{ - void *buffer = alloca(ReadBufferSize); + void *buffer = alloca(self.readBufferSize); while (true) { - ssize_t readBytes = self.calls.ServiceConnectionReceive(self.connection, buffer, ReadBufferSize); + ssize_t readBytes = self.calls.ServiceConnectionReceive(self.connection, buffer, (size_t)self.readBufferSize); if (readBytes < 1) { [consumer consumeEndOfFile]; return FBFuture.empty; diff --git a/FBDeviceControl/Management/FBAMDefines.h b/FBDeviceControl/Management/FBAMDefines.h index b9b68f50b..2204cfc96 100644 --- a/FBDeviceControl/Management/FBAMDefines.h +++ b/FBDeviceControl/Management/FBAMDefines.h @@ -169,6 +169,7 @@ typedef struct { int (*SecureStartService)(AMDeviceRef device, CFStringRef service_name, _Nullable CFDictionaryRef userinfo, CFTypeRef *serviceOut); int (*SecureTransferPath)(int arg0, AMDeviceRef device, CFURLRef arg2, CFDictionaryRef arg3, _Nullable AMDeviceProgressCallback callback, void *_Nullable context); int (*SecureInstallApplication)(int arg0, AMDeviceRef device, CFURLRef arg2, CFDictionaryRef arg3, _Nullable AMDeviceProgressCallback callback, void *_Nullable context); + int (*SecureInstallApplicationBundle)(AMDeviceRef device, CFURLRef arg2, CFDictionaryRef arg3, _Nullable AMDeviceProgressCallback callback, void *_Nullable context); int (*SecureUninstallApplication)(int arg0, AMDeviceRef device, CFStringRef arg2, int arg3, _Nullable AMDeviceProgressCallback callback, void *_Nullable context); int (*LookupApplications)(AMDeviceRef device, CFDictionaryRef _Nullable options, CFDictionaryRef _Nonnull * _Nonnull attributesOut); int (*CreateHouseArrestService)(AMDeviceRef device, CFStringRef bundleID, void *_Nullable unused, AFCConnectionRef *connectionOut); diff --git a/FBDeviceControl/Management/FBAMDevice.m b/FBDeviceControl/Management/FBAMDevice.m index a12850f7f..39b62491d 100644 --- a/FBDeviceControl/Management/FBAMDevice.m +++ b/FBDeviceControl/Management/FBAMDevice.m @@ -278,6 +278,8 @@ + (NSString *)osVersionForDeviceClass:(NSString *)deviceClass productVersion:(NS NSDictionary *deviceClassOSPrefixMapping = @{ @"iPhone" : @"iOS", @"iPad" : @"iOS", + @"iPod" : @"iOS", + @"AppleTV" : @"tvOS", }; NSString *osPrefix = deviceClassOSPrefixMapping[deviceClass]; if (!osPrefix) { diff --git a/FBDeviceControl/Utility/FBDeviceControlFrameworkLoader.m b/FBDeviceControl/Utility/FBDeviceControlFrameworkLoader.m index 1ccfd8fd9..11b504181 100644 --- a/FBDeviceControl/Utility/FBDeviceControlFrameworkLoader.m +++ b/FBDeviceControl/Utility/FBDeviceControlFrameworkLoader.m @@ -129,6 +129,7 @@ + (void)populateMobileDeviceSymbols:(AMDCalls *)calls calls->RestorableDeviceUnregisterForNotifications = FBGetSymbolFromHandle(handle, "AMRestorableDeviceUnregisterForNotifications"); calls->Retain = FBGetSymbolFromHandle(handle, "AMDeviceRetain"); calls->SecureInstallApplication = FBGetSymbolFromHandle(handle, "AMDeviceSecureInstallApplication"); + calls->SecureInstallApplicationBundle = FBGetSymbolFromHandle(handle, "AMDeviceSecureInstallApplicationBundle"); calls->SecureStartService = FBGetSymbolFromHandle(handle, "AMDeviceSecureStartService"); calls->SecureTransferPath = FBGetSymbolFromHandle(handle, "AMDeviceSecureTransferPath"); calls->SecureUninstallApplication = FBGetSymbolFromHandle(handle, "AMDeviceSecureUninstallApplication"); diff --git a/FBSimulatorControl.xcodeproj/project.pbxproj b/FBSimulatorControl.xcodeproj/project.pbxproj index a8d7eb4f7..caf956a2a 100644 --- a/FBSimulatorControl.xcodeproj/project.pbxproj +++ b/FBSimulatorControl.xcodeproj/project.pbxproj @@ -31,7 +31,7 @@ 2F8294D01FBC5AAE0011E722 /* FBLogicReporterAdapterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F8294CF1FBC5AAE0011E722 /* FBLogicReporterAdapterTests.m */; }; 2F8294D21FBC797F0011E722 /* FBLogicReporterAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F8294C91FBC571A0011E722 /* FBLogicReporterAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2F8294D31FBC798C0011E722 /* FBLogicXCTestReporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F8294C81FBC571A0011E722 /* FBLogicXCTestReporter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2FB811101FB5C97400A848FB /* FBDeviceLogCommands.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FB8110E1FB5C97400A848FB /* FBDeviceLogCommands.h */; }; + 2FB811101FB5C97400A848FB /* FBDeviceLogCommands.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FB8110E1FB5C97400A848FB /* FBDeviceLogCommands.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2FB811111FB5C97400A848FB /* FBDeviceLogCommands.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FB8110F1FB5C97400A848FB /* FBDeviceLogCommands.m */; }; 3E14993C1D4C5042005A5C8F /* FBTestManagerTestReporterJUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E14993A1D4C5042005A5C8F /* FBTestManagerTestReporterJUnit.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3E14993D1D4C5042005A5C8F /* FBTestManagerTestReporterJUnit.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E14993B1D4C5042005A5C8F /* FBTestManagerTestReporterJUnit.m */; }; @@ -145,7 +145,7 @@ AA3B92B11DD1C716000C045B /* FBControlCoreLoggerDouble.m in Sources */ = {isa = PBXBuildFile; fileRef = AA3B92B01DD1C716000C045B /* FBControlCoreLoggerDouble.m */; }; AA3C18421D5DE3BB00419EAA /* IOSurface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA3C18411D5DE3BB00419EAA /* IOSurface.framework */; }; AA3C18441D5DE47D00419EAA /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA3C18431D5DE47D00419EAA /* CoreImage.framework */; }; - AA3E44401F14AE2C00F333D2 /* FBDeviceApplicationCommands.h in Headers */ = {isa = PBXBuildFile; fileRef = AA3E443E1F14AE2C00F333D2 /* FBDeviceApplicationCommands.h */; }; + AA3E44401F14AE2C00F333D2 /* FBDeviceApplicationCommands.h in Headers */ = {isa = PBXBuildFile; fileRef = AA3E443E1F14AE2C00F333D2 /* FBDeviceApplicationCommands.h */; settings = {ATTRIBUTES = (Public, ); }; }; AA3E44411F14AE2C00F333D2 /* FBDeviceApplicationCommands.m in Sources */ = {isa = PBXBuildFile; fileRef = AA3E443F1F14AE2C00F333D2 /* FBDeviceApplicationCommands.m */; }; AA3EA8531F31B20D003FBDC1 /* FBSimulatorFileCommands.h in Headers */ = {isa = PBXBuildFile; fileRef = AA3EA8511F31B20D003FBDC1 /* FBSimulatorFileCommands.h */; settings = {ATTRIBUTES = (Public, ); }; }; AA3EA8541F31B20D003FBDC1 /* FBSimulatorFileCommands.m in Sources */ = {isa = PBXBuildFile; fileRef = AA3EA8521F31B20D003FBDC1 /* FBSimulatorFileCommands.m */; }; @@ -408,7 +408,7 @@ AABA7CF020BB3CFF00C1E73A /* FBAMDServiceConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = AABA7CEE20BB3CFF00C1E73A /* FBAMDServiceConnection.m */; }; AABA7CF220BB3D1900C1E73A /* FBAFCConnectionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = AABA7CF120BB3D1900C1E73A /* FBAFCConnectionTests.m */; }; AABA7CF520BB450B00C1E73A /* FBDeviceFileCommands.m in Sources */ = {isa = PBXBuildFile; fileRef = AABA7CF320BB450B00C1E73A /* FBDeviceFileCommands.m */; }; - AABA7CF620BB450B00C1E73A /* FBDeviceFileCommands.h in Headers */ = {isa = PBXBuildFile; fileRef = AABA7CF420BB450B00C1E73A /* FBDeviceFileCommands.h */; }; + AABA7CF620BB450B00C1E73A /* FBDeviceFileCommands.h in Headers */ = {isa = PBXBuildFile; fileRef = AABA7CF420BB450B00C1E73A /* FBDeviceFileCommands.h */; settings = {ATTRIBUTES = (Public, ); }; }; AABA7CF920BB45B900C1E73A /* FBDeviceCrashLogCommands.m in Sources */ = {isa = PBXBuildFile; fileRef = AABA7CF720BB45B900C1E73A /* FBDeviceCrashLogCommands.m */; }; AABA7CFA20BB45B900C1E73A /* FBDeviceCrashLogCommands.h in Headers */ = {isa = PBXBuildFile; fileRef = AABA7CF820BB45B900C1E73A /* FBDeviceCrashLogCommands.h */; }; AABBF3231DAC110000E2B6AF /* FBTaskBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = AABBF3211DAC110000E2B6AF /* FBTaskBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -456,7 +456,7 @@ AAD288011D586D6C00981DFC /* FBSimulatorSubprocessTerminationStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = AAD287FF1D586D6C00981DFC /* FBSimulatorSubprocessTerminationStrategy.h */; settings = {ATTRIBUTES = (Public, ); }; }; AAD288021D586D6C00981DFC /* FBSimulatorSubprocessTerminationStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = AAD288001D586D6C00981DFC /* FBSimulatorSubprocessTerminationStrategy.m */; }; AAD305201BD4D5B10047376E /* photo1.png in Resources */ = {isa = PBXBuildFile; fileRef = AAD3051E1BD4D5B10047376E /* photo1.png */; }; - AAD4B11F24892F350021487B /* FBAMDeviceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = AAD4B11D24892F350021487B /* FBAMDeviceManager.h */; }; + AAD4B11F24892F350021487B /* FBAMDeviceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = AAD4B11D24892F350021487B /* FBAMDeviceManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; AAD4B12024892F350021487B /* FBAMDeviceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = AAD4B11E24892F350021487B /* FBAMDeviceManager.m */; }; AAD4B12324892FC30021487B /* FBDeviceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = AAD4B12124892FC30021487B /* FBDeviceManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; AAD4B12424892FC30021487B /* FBDeviceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = AAD4B12224892FC30021487B /* FBDeviceManager.m */; }; @@ -3007,13 +3007,13 @@ AA758B4C20E3C0720064EC18 /* FBAMDeviceServiceManager.h in Headers */, AAE248021DF8978700E0949D /* FBDeviceVideoRecordingCommands.h in Headers */, AA682B1A1CEC9E8B009B6ECA /* FBDeviceSet.h in Headers */, - 2FB811101FB5C97400A848FB /* FBDeviceLogCommands.h in Headers */, AAE119662293EFB000173417 /* FBDeviceLinkClient.h in Headers */, - AABA7CF620BB450B00C1E73A /* FBDeviceFileCommands.h in Headers */, 1F34A5102512B638001A12F7 /* FBDevicePowerCommands.h in Headers */, AABA7CEF20BB3CFF00C1E73A /* FBAMDServiceConnection.h in Headers */, AAC8B2511CEC51520034A865 /* FBDevice.h in Headers */, AA4D30701E79983700A9FBD0 /* FBDeviceVideoStream.h in Headers */, + 2FB811101FB5C97400A848FB /* FBDeviceLogCommands.h in Headers */, + AABA7CF620BB450B00C1E73A /* FBDeviceFileCommands.h in Headers */, AAB1507420F5ED7600BB17A1 /* FBAMDefines.h in Headers */, AA685CDF255029B000E2DD9D /* FBDeviceDeveloperDiskImageCommands.h in Headers */, AA9DB39B24DA9C1F00960765 /* FBDeviceRecoveryCommands.h in Headers */, @@ -3983,6 +3983,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = AAA46E431C0CB92A009D6452 /* FBSimulatorControl.xcconfig */; buildSettings = { + ONLY_ACTIVE_ARCH = NO; }; name = Debug; }; @@ -3994,7 +3995,6 @@ ENABLE_TESTABILITY = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1"; - ONLY_ACTIVE_ARCH = YES; }; name = Debug; }; @@ -4002,6 +4002,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = AAA46E431C0CB92A009D6452 /* FBSimulatorControl.xcconfig */; buildSettings = { + ONLY_ACTIVE_ARCH = NO; }; name = Profile; }; @@ -4018,6 +4019,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = AAA46E431C0CB92A009D6452 /* FBSimulatorControl.xcconfig */; buildSettings = { + ONLY_ACTIVE_ARCH = NO; }; name = Release; }; @@ -4055,6 +4057,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = AAC8B25B1CEC52540034A865 /* FBDeviceControl.xcconfig */; buildSettings = { + ONLY_ACTIVE_ARCH = NO; }; name = Debug; }; @@ -4062,6 +4065,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = AAC8B25B1CEC52540034A865 /* FBDeviceControl.xcconfig */; buildSettings = { + ONLY_ACTIVE_ARCH = NO; }; name = Profile; }; @@ -4069,6 +4073,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = AAC8B25B1CEC52540034A865 /* FBDeviceControl.xcconfig */; buildSettings = { + ONLY_ACTIVE_ARCH = NO; }; name = Release; }; @@ -4104,6 +4109,7 @@ "$(inherited)", "$(PROJECT_DIR)/Shims/Binaries", ); + ONLY_ACTIVE_ARCH = NO; }; name = Debug; }; @@ -4115,6 +4121,7 @@ "$(inherited)", "$(PROJECT_DIR)/Shims/Binaries", ); + ONLY_ACTIVE_ARCH = NO; }; name = Profile; }; @@ -4126,6 +4133,7 @@ "$(inherited)", "$(PROJECT_DIR)/Shims/Binaries", ); + ONLY_ACTIVE_ARCH = NO; }; name = Release; }; @@ -4178,6 +4186,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = EEBD60341C9062E900298A07 /* FBControlCore.xcconfig */; buildSettings = { + ONLY_ACTIVE_ARCH = NO; }; name = Debug; }; @@ -4185,6 +4194,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = EEBD60341C9062E900298A07 /* FBControlCore.xcconfig */; buildSettings = { + ONLY_ACTIVE_ARCH = NO; }; name = Profile; }; @@ -4192,6 +4202,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = EEBD60341C9062E900298A07 /* FBControlCore.xcconfig */; buildSettings = { + ONLY_ACTIVE_ARCH = NO; }; name = Release; }; From 5c6241bf5a53f79ed473d462bbf231a5bb6add68 Mon Sep 17 00:00:00 2001 From: David Rogers Date: Wed, 2 Dec 2020 11:03:45 -0600 Subject: [PATCH 02/16] We know that iOS 13.7+ require a secure connection --- FBDeviceControl/Commands/FBDeviceApplicationCommands.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m index 01f374b80..4c332a147 100644 --- a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m +++ b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m @@ -378,7 +378,7 @@ - (instancetype)initWithDevice:(FBDevice *)device // There is a change in service names in iOS 14 that we have to account for. // Both of these channels are fine to use with the same underlying protocol, so long as the secure wrapper is used on the transport. // FIXME: iOS 13.7 requires secure. 13.3.1 does not. Figure out when that changed - BOOL usesSecureConnection = self.device.osVersion.version.majorVersion >= 14; + BOOL usesSecureConnection = self.device.osVersion.version.majorVersion >= 13 && self.device.osVersion.version.minorVersion >= 7; return [[[self.device ensureDiskImageIsMounted] onQueue:self.device.workQueue pushTeardown:^(id _) { From 8f71fd5bc0022e1c67fbf47f89e78abc0e1b224c Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Fri, 4 Dec 2020 17:34:51 +0100 Subject: [PATCH 03/16] Fixed iOS version check for requiring secure connection --- FBDeviceControl/Commands/FBDeviceApplicationCommands.m | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m index 4c332a147..7bc946acf 100644 --- a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m +++ b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m @@ -375,10 +375,9 @@ - (instancetype)initWithDevice:(FBDevice *)device - (FBFutureContext *)remoteInstrumentsClient { - // There is a change in service names in iOS 14 that we have to account for. + // There is a change in service names in iOS 13.6 that we have to account for. // Both of these channels are fine to use with the same underlying protocol, so long as the secure wrapper is used on the transport. - // FIXME: iOS 13.7 requires secure. 13.3.1 does not. Figure out when that changed - BOOL usesSecureConnection = self.device.osVersion.version.majorVersion >= 13 && self.device.osVersion.version.minorVersion >= 7; + BOOL usesSecureConnection = self.device.osVersion.version.majorVersion > 13 || (self.device.osVersion.version.majorVersion == 13 && self.device.osVersion.version.minorVersion >= 6); return [[[self.device ensureDiskImageIsMounted] onQueue:self.device.workQueue pushTeardown:^(id _) { From 552dbedb2f3ee184a0ad85cabe0f9ed14e514f5a Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Thu, 17 Dec 2020 20:00:56 +0100 Subject: [PATCH 04/16] Documented now exposed deltaInstallApplicatoinWithPath --- FBDeviceControl/Commands/FBDeviceApplicationCommands.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/FBDeviceControl/Commands/FBDeviceApplicationCommands.h b/FBDeviceControl/Commands/FBDeviceApplicationCommands.h index 277885c4e..2a05ba995 100644 --- a/FBDeviceControl/Commands/FBDeviceApplicationCommands.h +++ b/FBDeviceControl/Commands/FBDeviceApplicationCommands.h @@ -24,6 +24,14 @@ NS_ASSUME_NONNULL_BEGIN @return a new instance of the Command. */ + (instancetype)commandsWithTarget:(FBDevice *)target; + +/** + Installs application at given path on the host using a shadow dir on the host to only install changed files. + + @param path the file path of the Application Bundle on the host. + @param shadowDir directory on the host that is used for the shadow copy. + @return A future that resolves when successful. + */ - (FBFuture *)deltaInstallApplicationWithPath:(NSString *)path andShadowDirectory:(NSString *)shadowDir; @end From 2f11fce8cd7434e8ff3849e5d00842e1989cd5b9 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Sat, 19 Dec 2020 11:16:43 +0100 Subject: [PATCH 05/16] Expose configurable work queues on FBDeviceSet init --- FBDeviceControl/Management/FBDeviceSet.h | 14 ++++++++++++++ FBDeviceControl/Management/FBDeviceSet.m | 7 ++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/FBDeviceControl/Management/FBDeviceSet.h b/FBDeviceControl/Management/FBDeviceSet.h index e68f361da..e7b3340f3 100644 --- a/FBDeviceControl/Management/FBDeviceSet.h +++ b/FBDeviceControl/Management/FBDeviceSet.h @@ -30,6 +30,20 @@ NS_ASSUME_NONNULL_BEGIN */ + (nullable instancetype)setWithLogger:(id)logger delegate:(nullable id)delegate ecidFilter:(nullable NSString *)ecidFilter error:(NSError **)error; +/** + Advanced initializer that allows to set custom work queues. + This is useful e.g. for console applications which don't have the main queue continously fed or components embedded in systems that are not aware of the main dispatch queue. + + @param workQueue the main sync work queue to use (typically the main queue, dispatch_get_main_queue). + @param asyncQueue work queue for async tasks. + @param logger the logger to use. + @param delegate a delegate that gets called when device status changes. + @param ecidFilter a filter to restrict discovery to a single ECID. + @param error an error out for any error that occurs constructing the set. + @return the Default Device Set if successful, nil otherwise. + */ ++ (nullable instancetype)setWithWorkQueue:(dispatch_queue_t)workQueue asyncQueue:(dispatch_queue_t)asyncQueue logger:(id)logger delegate:(nullable id)delegate ecidFilter:(nullable NSString *)ecidFilter error:(NSError **)error; + #pragma mark Querying /** diff --git a/FBDeviceControl/Management/FBDeviceSet.m b/FBDeviceControl/Management/FBDeviceSet.m index d22e63bf6..6725e9ed5 100644 --- a/FBDeviceControl/Management/FBDeviceSet.m +++ b/FBDeviceControl/Management/FBDeviceSet.m @@ -46,9 +46,14 @@ + (void)initialize + (nullable instancetype)setWithLogger:(id)logger delegate:(id)delegate ecidFilter:(NSString *)ecidFilter error:(NSError **)error { - AMDCalls calls = FBDeviceControlFrameworkLoader.amDeviceCalls; dispatch_queue_t workQueue = dispatch_get_main_queue(); dispatch_queue_t asyncQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0); + return [FBDeviceSet setWithWorkQueue:workQueue asyncQueue:asyncQueue logger:logger delegate:delegate ecidFilter:ecidFilter error:error]; +} + ++ (nullable instancetype)setWithWorkQueue:(dispatch_queue_t)workQueue asyncQueue:(dispatch_queue_t)asyncQueue logger:(id)logger delegate:(id)delegate ecidFilter:(NSString *)ecidFilter error:(NSError **)error +{ + AMDCalls calls = FBDeviceControlFrameworkLoader.amDeviceCalls; FBAMDeviceManager *amDeviceManager = [[FBAMDeviceManager alloc] initWithCalls:calls workQueue:workQueue asyncQueue:asyncQueue ecidFilter:ecidFilter logger:logger]; FBAMRestorableDeviceManager *restorableDeviceManager = [[FBAMRestorableDeviceManager alloc] initWithCalls:calls workQueue:workQueue asyncQueue:asyncQueue ecidFilter:ecidFilter logger:logger]; FBDeviceSet *deviceSet = [[FBDeviceSet alloc] initWithAMDeviceManager:amDeviceManager restorableDeviceManager:restorableDeviceManager logger:logger delegate:delegate]; From c8c16c8991f166021e89abf0e916834d39bc0d66 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Tue, 22 Dec 2020 17:14:55 +0100 Subject: [PATCH 06/16] Fixed use of FBApplicationLaunchMode for FBDevice Previously, the app would be restarted for FBApplicationLaunchModeForegroundIfRunning and not fail if already running for FBApplicationLaunchModeFailIfRunning. --- .../Commands/FBDeviceApplicationCommands.m | 22 +++++++++++++++++-- .../Management/FBInstrumentsClient.m | 3 ++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m index 7bc946acf..399e102b5 100644 --- a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m +++ b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m @@ -255,6 +255,26 @@ - (instancetype)initWithDevice:(FBDevice *)device } - (FBFuture> *)launchApplication:(FBApplicationLaunchConfiguration *)configuration +{ + if (configuration.launchMode == FBApplicationLaunchModeFailIfRunning) { + return [[self processIDWithBundleID:configuration.bundleID] onQueue:self.device.asyncQueue chain:^ (FBFuture* processIdQueryResult) { + if (processIdQueryResult.state == FBFutureStateDone) { + return [[FBDeviceControlError + describeFormat:@"Application %@ already running with pid %@", configuration.bundleID, processIdQueryResult.result] + failFuture]; + } else if (processIdQueryResult.state == FBFutureStateFailed) { + return (FBFuture*)[self launchApplicationIgnoreCurrentState:configuration]; + } else { + return (FBFuture*)processIdQueryResult; + } + }]; + } + return [self launchApplicationIgnoreCurrentState:configuration]; +} + +#pragma mark Private + +- (FBFuture> *)launchApplicationIgnoreCurrentState:(FBApplicationLaunchConfiguration *)configuration { return [[[self remoteInstrumentsClient] @@ -266,8 +286,6 @@ - (instancetype)initWithDevice:(FBDevice *)device }]; } -#pragma mark Private - - (FBFuture *)killApplicationWithProcessIdentifier:(pid_t)processIdentifier { return [[self diff --git a/FBDeviceControl/Management/FBInstrumentsClient.m b/FBDeviceControl/Management/FBInstrumentsClient.m index 142fef458..5fbcec0b8 100644 --- a/FBDeviceControl/Management/FBInstrumentsClient.m +++ b/FBDeviceControl/Management/FBInstrumentsClient.m @@ -140,7 +140,8 @@ - (instancetype)initWithConnection:(FBAMDServiceConnection *)connection channels onQueue:self.queue resolveValue:^ NSNumber * (NSError **error) { NSDictionary *options = @{ @"StartSuspendedKey": @(configuration.waitForDebugger), - @"KillExisting": @(configuration.launchMode != FBApplicationLaunchModeFailIfRunning), + // FBApplicationLaunchModeFailIfRunning needs to be taken care of prior to this call. + @"KillExisting": @(configuration.launchMode == FBApplicationLaunchModeRelaunchIfRunning), }; ResponsePayload response = [self onChannelIdentifier:ProcessControlChannel From c208d8c30cbb2562605050dfcad8a8d596ec901b Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Tue, 5 Jan 2021 10:15:45 +0100 Subject: [PATCH 07/16] disabled debug symbol generation for release builds --- FBSimulatorControl.xcodeproj/project.pbxproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/FBSimulatorControl.xcodeproj/project.pbxproj b/FBSimulatorControl.xcodeproj/project.pbxproj index caf956a2a..d8da83b4e 100644 --- a/FBSimulatorControl.xcodeproj/project.pbxproj +++ b/FBSimulatorControl.xcodeproj/project.pbxproj @@ -4019,6 +4019,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = AAA46E431C0CB92A009D6452 /* FBSimulatorControl.xcconfig */; buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; ONLY_ACTIVE_ARCH = NO; }; name = Release; @@ -4073,6 +4074,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = AAC8B25B1CEC52540034A865 /* FBDeviceControl.xcconfig */; buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; ONLY_ACTIVE_ARCH = NO; }; name = Release; @@ -4129,6 +4131,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = EE4F0DDA1C91B88500608E89 /* XCTestBootstrap.xcconfig */; buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Shims/Binaries", @@ -4202,6 +4205,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = EEBD60341C9062E900298A07 /* FBControlCore.xcconfig */; buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; ONLY_ACTIVE_ARCH = NO; }; name = Release; From 2e58797e4d96b7548e594c1b927816b883d65a36 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Tue, 12 Jan 2021 13:04:58 +0100 Subject: [PATCH 08/16] Fixed running apps being identified by non-unique application name Instead, we now use the "realAppName" which the app bundle path is a part of. Previous approach not only wasn't able to list all running apps but also had issues when several apps had the same BundleName --- .../Commands/FBDeviceApplicationCommands.m | 42 +++++++++++-------- .../Management/FBInstrumentsClient.h | 2 +- .../Management/FBInstrumentsClient.m | 4 +- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m index 399e102b5..f5d34e559 100644 --- a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m +++ b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m @@ -197,27 +197,35 @@ - (instancetype)initWithDevice:(FBDevice *)device { return [[FBFuture futureWithFutures:@[ - [self runningProcessNameToPID], - [self installedApplicationsData:FBDeviceApplicationCommands.namingLookupAttributes], + [self runningProcessPathToPID], + [self installedApplicationsData:FBDeviceApplicationCommands.pathLookupAttributes], ]] onQueue:self.device.asyncQueue map:^ NSDictionary * (NSArray *tuple) { - NSDictionary *runningProcessNameToPID = tuple[0]; + NSDictionary *runningProcessRealAppNameToPID = tuple[0]; NSDictionary *bundleIdentifierToAttributes = tuple[1]; - NSMutableDictionary *bundleNameToBundleIdentifier = NSMutableDictionary.dictionary; + NSMutableDictionary *bundlePathToBundleIdentifier = NSMutableDictionary.dictionary; for (NSString *bundleIdentifier in bundleIdentifierToAttributes.allKeys) { - NSString *bundleName = bundleIdentifierToAttributes[bundleIdentifier][FBApplicationInstallInfoKeyBundleName]; - bundleNameToBundleIdentifier[bundleName] = bundleIdentifier; + NSString *bundlePath = bundleIdentifierToAttributes[bundleIdentifier][FBApplicationInstallInfoKeyPath]; + bundlePathToBundleIdentifier[bundlePath] = bundleIdentifier; } - NSMutableDictionary *bundleNameToPID = NSMutableDictionary.dictionary; - for (NSString *processName in runningProcessNameToPID.allKeys) { - NSString *bundleName = bundleNameToBundleIdentifier[processName]; - if (!bundleName) { - continue; + NSMutableDictionary *bundleIdentifierToPID = NSMutableDictionary.dictionary; + for (NSString *processRealName in runningProcessRealAppNameToPID.allKeys) { + // processRealName points is the executable within the .app bundle (can it be nested more deeply?) + NSString *bundlePath = [processRealName stringByDeletingLastPathComponent]; + NSString *bundleIdentifier = bundlePathToBundleIdentifier[bundlePath]; + if (!bundleIdentifier) { + // '/private' is sometimes missing from the path + bundlePath = [@"/private" stringByAppendingString:bundlePath]; + bundleIdentifier = bundlePathToBundleIdentifier[bundlePath]; + if (!bundleIdentifier) { + [[self.device.logger debug] logFormat:@"Was not able to map realAppName \"%@\" of a running process to a bundle identifier", processRealName]; + continue; + } } - NSNumber *pid = runningProcessNameToPID[processName]; - bundleNameToPID[bundleName] = pid; + NSNumber *pid = runningProcessRealAppNameToPID[processRealName]; + bundleIdentifierToPID[bundleIdentifier] = pid; } - return bundleNameToPID; + return bundleIdentifierToPID; }]; } @@ -406,7 +414,7 @@ - (instancetype)initWithDevice:(FBDevice *)device }]; } -- (FBFuture *> *)runningProcessNameToPID +- (FBFuture *> *)runningProcessPathToPID { return [[self remoteInstrumentsClient] @@ -447,14 +455,14 @@ + (FBInstalledApplication *)installedApplicationFromDictionary:(NSDictionary *)namingLookupAttributes ++ (NSArray *)pathLookupAttributes { static dispatch_once_t onceToken; static NSArray *lookupAttributes = nil; dispatch_once(&onceToken, ^{ lookupAttributes = @[ FBApplicationInstallInfoKeyBundleIdentifier, - FBApplicationInstallInfoKeyBundleName, + FBApplicationInstallInfoKeyPath, ]; }); return lookupAttributes; diff --git a/FBDeviceControl/Management/FBInstrumentsClient.h b/FBDeviceControl/Management/FBInstrumentsClient.h index 2c3eb6044..31bf0073a 100644 --- a/FBDeviceControl/Management/FBInstrumentsClient.h +++ b/FBDeviceControl/Management/FBInstrumentsClient.h @@ -35,7 +35,7 @@ NS_ASSUME_NONNULL_BEGIN /** Returns the list of running applications. - @return a Dictionary, mapping process name to pid. + @return a Dictionary, mapping process realAppName to pid. */ - (FBFuture *> *)runningApplications; diff --git a/FBDeviceControl/Management/FBInstrumentsClient.m b/FBDeviceControl/Management/FBInstrumentsClient.m index 5fbcec0b8..d46ae6459 100644 --- a/FBDeviceControl/Management/FBInstrumentsClient.m +++ b/FBDeviceControl/Management/FBInstrumentsClient.m @@ -125,8 +125,8 @@ - (instancetype)initWithConnection:(FBAMDServiceConnection *)connection channels continue; } NSNumber *pid = process[@"pid"]; - NSString *processName = process[@"name"]; - nameToPid[processName] = pid; + NSString *realAppName = process[@"realAppName"]; + nameToPid[realAppName] = pid; } return nameToPid; }]; From 809c9f1b5124be45d18f7e9d9a4143521b92d7b1 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Wed, 27 Jan 2021 13:00:51 +0100 Subject: [PATCH 09/16] Fix application list filtering out processes that are applications but are not recognized as such by Instruments --- .../Commands/FBDeviceApplicationCommands.m | 2 +- FBDeviceControl/Management/FBInstrumentsClient.h | 4 ++-- FBDeviceControl/Management/FBInstrumentsClient.m | 12 +++++++----- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m index f5d34e559..da613ad57 100644 --- a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m +++ b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m @@ -419,7 +419,7 @@ - (instancetype)initWithDevice:(FBDevice *)device return [[self remoteInstrumentsClient] onQueue:self.device.asyncQueue pop:^(FBInstrumentsClient *client) { - return [client runningApplications]; + return [client runningProcesses]; }]; } diff --git a/FBDeviceControl/Management/FBInstrumentsClient.h b/FBDeviceControl/Management/FBInstrumentsClient.h index 31bf0073a..066bb32c7 100644 --- a/FBDeviceControl/Management/FBInstrumentsClient.h +++ b/FBDeviceControl/Management/FBInstrumentsClient.h @@ -33,11 +33,11 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark Public Methods /** - Returns the list of running applications. + Returns the list of running processes. @return a Dictionary, mapping process realAppName to pid. */ -- (FBFuture *> *)runningApplications; +- (FBFuture *> *)runningProcesses; /** Launches an application. diff --git a/FBDeviceControl/Management/FBInstrumentsClient.m b/FBDeviceControl/Management/FBInstrumentsClient.m index d46ae6459..e27cfdded 100644 --- a/FBDeviceControl/Management/FBInstrumentsClient.m +++ b/FBDeviceControl/Management/FBInstrumentsClient.m @@ -110,7 +110,7 @@ - (instancetype)initWithConnection:(FBAMDServiceConnection *)connection channels static NSString *const DeviceInfoChannel = @"com.apple.instruments.server.services.deviceinfo"; -- (FBFuture *> *)runningApplications +- (FBFuture *> *)runningProcesses { return [FBFuture onQueue:self.queue resolveValue:^ NSDictionary * (NSError **error) { @@ -120,10 +120,12 @@ - (instancetype)initWithConnection:(FBAMDServiceConnection *)connection channels } NSMutableDictionary *nameToPid = NSMutableDictionary.dictionary; for (NSDictionary *process in response.returnValue) { - BOOL isApplication = [process[@"isApplication"] boolValue]; - if (isApplication == NO) { - continue; - } + // Note that we could filter for isApplication here, however it seems a bit inconsistent when a process is flaged as an application. + // The following conditions have been identified: + // * bundle name needs to be valid according to spec, most notably less than 16 chars + // * bundle name needs to be the same as the executable name + // * bundle name as defined in the plist needs to be equal to the folder bundle on disk + // Violating any of the above still results in a working application that can be deployed! NSNumber *pid = process[@"pid"]; NSString *realAppName = process[@"realAppName"]; nameToPid[realAppName] = pid; From 1bc57bc558a84d3303ea2817808986aa8e36eab1 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Thu, 28 Jan 2021 13:41:47 +0100 Subject: [PATCH 10/16] Fix bug that product version is not overwritten correctly on FBAM(Restorable)Device detection --- FBDeviceControl/Management/FBDevice.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FBDeviceControl/Management/FBDevice.m b/FBDeviceControl/Management/FBDevice.m index b69c6cb99..36d83a119 100644 --- a/FBDeviceControl/Management/FBDevice.m +++ b/FBDeviceControl/Management/FBDevice.m @@ -176,7 +176,7 @@ - (void)cacheValuesFromInfo:(id)targetInfo overwrite: if (!_osVersion || overwrite) { _osVersion = targetInfo.osVersion; } - if (_productVersion || overwrite) { + if (!_productVersion || overwrite) { _productVersion = targetInfo.productVersion; } if (!_targetType || overwrite) { From d54da90c66d919012ec7f00a53ef7b676e91c25f Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Fri, 13 Aug 2021 18:15:25 +0200 Subject: [PATCH 11/16] removed spammy log message --- .../Commands/FBDeviceApplicationCommands.m | 1 - Shims/Binaries/libMaculator.dylib | Bin 184368 -> 184232 bytes Shims/Binaries/libShimulator.dylib | Bin 0 -> 89104 bytes 3 files changed, 1 deletion(-) create mode 100755 Shims/Binaries/libShimulator.dylib diff --git a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m index dd0c4eb9a..74de26221 100644 --- a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m +++ b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m @@ -217,7 +217,6 @@ - (instancetype)initWithDevice:(FBDevice *)device bundlePath = [@"/private" stringByAppendingString:bundlePath]; bundleIdentifier = bundlePathToBundleIdentifier[bundlePath]; if (!bundleIdentifier) { - [[self.device.logger debug] logFormat:@"Was not able to map realAppName \"%@\" of a running process to a bundle identifier", processRealName]; continue; } } diff --git a/Shims/Binaries/libMaculator.dylib b/Shims/Binaries/libMaculator.dylib index ce083d6c725fa9ca4b9465a9d1e5a79704504b61..6286f642807ca2660836ce71149d7f74dc1ab149 100755 GIT binary patch delta 3410 zcmbW3e@v8h9LK-kuQqWiaq>g%_aTeOnRkbqd1vy=P_vdAX3&}nf?=3;7pdGbz-*$G z3$WgTqNuIdtOQJf%Vp-ztkrZ@{;0(tIv8`yV{3V2+ULvjor7om!S31adENW@yg#4s z^SyhxH!V%$n)i+SFv0Y24`VEvGd7;c7_X$)!e)9G-Rk~1KA=9Yv4d5I>nX>_uCBVS@3>Lm(sRpNaZV+qa3Cx~!gPpGy6$x%qNKm#Pjs*mc*fR{?qA+#^L9znyt<0GNPa6(1tw;wBZz#OFV^6 zi6saV#6c6hljy@~Ga(@PjR`@?3nuhSc2hl(*hh6DABWCF>b4*(@dP|ZLLSNqqS}n0 zk-T4;(J$F$hSx;AXGVZXO`Rrkdk~gb3XhqZDlG_@$<$~;P_om4e#u`f@LGtssZNv& zTc|4)VTnw5tb_uT6U5tA1g+$)v!Y+}gcV*J@q!fr$(vLsa*nW#x~9ToC%lMqf~c|~ zXeZOBHuOvWWP{g1ykkRv$fu#xLGC<+31W*K-XyBF*b$KY+m0ZS+YnA7*VFJ!=FW;` zj-e0L0n#ZG7;E0FeKSE_{kp36sQN#;x;;tjpZSi~KZ`V39vo{_y;`eRuxg#5MH#NB z0Y6G@V63M`n-NypRjcVKlePLHrE^I;9xTV$TROd8`r{c(g)~(#c1T@t4P0RCsM0f) z{$1%zrN<;|1LiAjRCh}zUhjO}U+|hUXJc8he{I1U=jx(DB%KiM@q>L>enPk`D@#jD3)YrzC@Cr|d!?w* zzdEp?WK~I7d6Cbz0q(OR7q{l{v53j!3r4s~EDmS#l!%vV-=4*f@krYr9q~=Rd|Esb z(JG!CK4rwK96BQ&k7Skhnz?+PrzZ2=W0gEFN;D57RD;-@*BDB13e=;`thpo^?l;Q%~t~Dp%$djnn7U8kKq`T%>W_ z1w$<%9g8KFphjXHE=ttHP)9h5#RPFV9<_BMU4-IsiO6GM*h$r?SiDm>4bSLuYOBmC zr&~tS;D|adBWk!!dbCYeAw)y7KbSPM?Khq7COzDkGBxIKBK#kT^z5&7krYLdH28L` zGNOjLov*yw?erSaM|1cDxId=7y5N&|4y_W)5F&^#Oh^NLF2_yqOP)8OP4cn{eUc%n z?;_r%I+4etbr*G~AS96mcRisHK7yzVg=m0 zsb{+d{@vvL%z`$_Qx^0|{%Jwl9%4V$iE`aN)Rl&i!~(b*38nB6M70%djpS{#qEGUB zE7JB7FI(Z4{EO;DO1aQp>Y4%fK0*O}1o55?ZTra7Vnd(g6&uo;$SmM%BG*i`N)#eQ z5IgKh+fSyT9e&CCcC-;GI79o%l?(R);jAceupz(apOcmW)l;c`FQ;|&o2s5#rPVp* z1zmb@JVsjfZ&dXhU46Z(pV#UYtX5|TDnsICZRW31(;sZdNllNEc|n?er|GGr9opN0 z^9wp1kbZiIyUuE+ElT$cXbPwu>cVYh7zik8xTAEJs0+m%jK z+O4!h>7`1iO5Og)K_Sc|{H2T}n({IFTk-4&7l=5O^4m9^6djQSQa-v*3CD=IxZ@}HL{{xJ(LMs3O delta 3643 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 kAgzJ42GSZxYap$Gv Date: Fri, 26 Nov 2021 18:24:05 +0100 Subject: [PATCH 12/16] Fix missing NSNumber conversion --- .../Commands/FBDeviceApplicationCommands.m | 15 ++++++++------- Shims/Binaries/libMaculator.dylib | Bin 184232 -> 184232 bytes Shims/Binaries/libShimulator.dylib | Bin 89104 -> 89104 bytes 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m index ed676b95b..0c253ecfd 100644 --- a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m +++ b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m @@ -251,7 +251,7 @@ - (instancetype)initWithDevice:(FBDevice *)device deltaUpdateDirectory:(NSURL *) bundleNameToPID[bundleName] = pid; } return bundleNameToPID; - }]; + }]; } - (FBFuture *)processIDWithBundleID:(NSString *)bundleID @@ -410,7 +410,7 @@ - (instancetype)initWithDevice:(FBDevice *)device deltaUpdateDirectory:(NSURL *) }]; } -- (FBFuture *> *)pidToRunningProcessName +- (FBFuture *> *)pidToRunningProcessName { return [[self.device startService:@"com.apple.os_trace_relay"] @@ -440,15 +440,16 @@ - (instancetype)initWithDevice:(FBDevice *)device deltaUpdateDirectory:(NSURL *) describeFormat:@"Request to PidList is not RequestSuccessful %@", error] failFuture]; } - NSDictionary *payload = response[@"Payload"]; + NSDictionary *payload = response[@"Payload"]; NSMutableDictionary *pidToRunningProcessName = NSMutableDictionary.dictionary; - for (NSNumber *processIdentifer in payload.keyEnumerator) { + for (NSString *processIdentifer in payload.keyEnumerator) { NSDictionary *contents = payload[processIdentifer]; NSString *processName = contents[@"ProcessName"]; if (![processName isKindOfClass:NSString.class]) { continue; } - pidToRunningProcessName[processIdentifer] = processName; + NSNumber* processIdentiferNumber = [NSNumber numberWithInteger:[processIdentifer integerValue]]; + pidToRunningProcessName[processIdentiferNumber] = processName; } return [FBFuture futureWithResult:pidToRunningProcessName]; }]; @@ -487,14 +488,14 @@ + (FBInstalledApplication *)installedApplicationFromDictionary:(NSDictionary *)pathLookupAttributes ++ (NSArray *)namingLookupAttributes { static dispatch_once_t onceToken; static NSArray *lookupAttributes = nil; dispatch_once(&onceToken, ^{ lookupAttributes = @[ FBApplicationInstallInfoKeyBundleIdentifier, - FBApplicationInstallInfoKeyPath, + FBApplicationInstallInfoKeyBundleName, ]; }); return lookupAttributes; diff --git a/Shims/Binaries/libMaculator.dylib b/Shims/Binaries/libMaculator.dylib index 6286f642807ca2660836ce71149d7f74dc1ab149..49a3ad0845faf827060631292b35801791133aff 100755 GIT binary patch delta 35280 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 G<^KRDM<2BS delta 34956 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 F{{t~mR)PQk diff --git a/Shims/Binaries/libShimulator.dylib b/Shims/Binaries/libShimulator.dylib index 967d3906f0ecaab2c5d56bcd264156e3af9d84ff..78a758f9679b37a17c817239d11d20c964581ab9 100755 GIT binary patch delta 18093 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 ar{K&-BbF!qGkfpHs|J0rz-e35^Zx)ySC+T{ delta 17922 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 From c1d754cc214b271a69ec2ec3540623e453c00acf Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Wed, 22 Dec 2021 13:58:30 +0100 Subject: [PATCH 13/16] Fix always using iOS developer images now distinguishing the different platforms --- FBControlCore/Utility/FBDeveloperDiskImage.h | 4 ++-- FBControlCore/Utility/FBDeveloperDiskImage.m | 9 +++++---- .../FBDeviceDeveloperDiskImageCommands.m | 6 +++--- FBDeviceControl/Management/FBDevice.m | 17 ++++++++++++++++- 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/FBControlCore/Utility/FBDeveloperDiskImage.h b/FBControlCore/Utility/FBDeveloperDiskImage.h index 9b7373cc8..68fa44204 100644 --- a/FBControlCore/Utility/FBDeveloperDiskImage.h +++ b/FBControlCore/Utility/FBDeveloperDiskImage.h @@ -25,13 +25,13 @@ NS_ASSUME_NONNULL_BEGIN @param error an error out for any error that occurs. @return the path of the disk image. */ -+ (nullable instancetype)developerDiskImage:(NSOperatingSystemVersion)targetVersion logger:(nullable id)logger error:(NSError **)error; ++ (nullable instancetype)developerDiskImage:(NSOperatingSystemVersion)targetVersion logger:(nullable id)logger platformRootDirectory:(NSString*)platformRootDirectory error:(NSError **)error; /** Returns all of the Developer Disk Images that are available. These Disk Images are found by inspecting the appropriate directories within the current installed Xcode. */ -+ (NSArray *)allDiskImages; ++ (NSArray *)allDiskImages:(NSString*)platformRootDirectory; #pragma mark Properties diff --git a/FBControlCore/Utility/FBDeveloperDiskImage.m b/FBControlCore/Utility/FBDeveloperDiskImage.m index 25b0532f8..0e42279e5 100644 --- a/FBControlCore/Utility/FBDeveloperDiskImage.m +++ b/FBControlCore/Utility/FBDeveloperDiskImage.m @@ -58,18 +58,18 @@ + (nullable FBDeveloperDiskImage *)diskImageAtPath:(NSString *)path xcodeVersion #pragma mark Initializers -+ (FBDeveloperDiskImage *)developerDiskImage:(NSOperatingSystemVersion)targetVersion logger:(id)logger error:(NSError **)error ++ (FBDeveloperDiskImage *)developerDiskImage:(NSOperatingSystemVersion)targetVersion logger:(id)logger platformRootDirectory:(NSString*)platformRootDirectory error:(NSError **)error { - NSArray *images = FBDeveloperDiskImage.allDiskImages; + NSArray *images = [FBDeveloperDiskImage allDiskImages:platformRootDirectory]; return [self bestImageForImages:images targetVersion:targetVersion logger:logger error:error]; } -+ (NSArray *)allDiskImages ++ (NSArray *)allDiskImages:(NSString*)platformRootDirectory { static dispatch_once_t onceToken; static NSArray *images = nil; dispatch_once(&onceToken, ^{ - images = [self allDiskImagesFromSearchPath:[FBXcodeConfiguration.developerDirectory stringByAppendingPathComponent:@"Platforms/iPhoneOS.platform/DeviceSupport"] xcodeVersion:FBXcodeConfiguration.xcodeVersion logger:FBControlCoreGlobalConfiguration.defaultLogger]; + images = [self allDiskImagesFromSearchPath:[platformRootDirectory stringByAppendingPathComponent:@"DeviceSupport"] xcodeVersion:FBXcodeConfiguration.xcodeVersion logger:FBControlCoreGlobalConfiguration.defaultLogger]; }); return images; } @@ -91,6 +91,7 @@ - (instancetype)initWithDiskImagePath:(NSString *)diskImagePath signature:(NSDat #pragma mark Public +// TODO: This only yields symbols for iOS, not tvOS or other. + (NSString *)pathForDeveloperSymbols:(NSString *)buildVersion logger:(id)logger error:(NSError **)error { NSArray *searchPaths = @[ diff --git a/FBDeviceControl/Commands/FBDeviceDeveloperDiskImageCommands.m b/FBDeviceControl/Commands/FBDeviceDeveloperDiskImageCommands.m index 400338d4a..02d67fd65 100644 --- a/FBDeviceControl/Commands/FBDeviceDeveloperDiskImageCommands.m +++ b/FBDeviceControl/Commands/FBDeviceDeveloperDiskImageCommands.m @@ -90,14 +90,14 @@ - (instancetype)initWithDevice:(FBDevice *)device - (NSArray *)mountableDiskImages { - return FBDeveloperDiskImage.allDiskImages; + return [FBDeveloperDiskImage allDiskImages: self.device.platformRootDirectory]; } - (FBFuture *)ensureDeveloperDiskImageIsMounted { NSError *error = nil; NSOperatingSystemVersion targetVersion = [FBOSVersion operatingSystemVersionFromName:self.device.productVersion]; - FBDeveloperDiskImage *diskImage = [FBDeveloperDiskImage developerDiskImage:targetVersion logger:self.device.logger error:&error]; + FBDeveloperDiskImage *diskImage = [FBDeveloperDiskImage developerDiskImage:targetVersion logger:self.device.logger platformRootDirectory: self.device.platformRootDirectory error:&error]; if (!diskImage) { return [FBFuture futureWithError:error]; } @@ -112,7 +112,7 @@ - (instancetype)initWithDevice:(FBDevice *)device return [[self mountedImageEntries] onQueue:self.device.asyncQueue map:^(NSArray *> *mountEntries) { - NSArray *images = FBDeveloperDiskImage.allDiskImages; + NSArray *images = [FBDeveloperDiskImage allDiskImages: self.device.platformRootDirectory]; NSDictionary *imagesBySignature = [NSDictionary dictionaryWithObjects:images forKeys:[images valueForKey:@"signature"]]; NSMutableDictionary *, FBDeveloperDiskImage *> *mountEntryToDiskImage = NSMutableDictionary.dictionary; for (NSDictionary *mountEntry in mountEntries) { diff --git a/FBDeviceControl/Management/FBDevice.m b/FBDeviceControl/Management/FBDevice.m index 099db9455..5766acd11 100644 --- a/FBDeviceControl/Management/FBDevice.m +++ b/FBDeviceControl/Management/FBDevice.m @@ -102,7 +102,22 @@ - (NSString *)auxillaryDirectory - (NSString *)platformRootDirectory { - return [FBXcodeConfiguration.developerDirectory stringByAppendingPathComponent:@"Platforms/iPhoneOS.platform"]; + switch (self.deviceType.family) + { + case FBControlCoreProductFamilyUnknown: + case FBControlCoreProductFamilyiPhone: + case FBControlCoreProductFamilyiPad: + return [FBXcodeConfiguration.developerDirectory stringByAppendingPathComponent:@"Platforms/iPhoneOS.platform"]; + + case FBControlCoreProductFamilyAppleTV: + return [FBXcodeConfiguration.developerDirectory stringByAppendingPathComponent:@"Platforms/AppleTVOS.platform"]; + + case FBControlCoreProductFamilyAppleWatch: + return [FBXcodeConfiguration.developerDirectory stringByAppendingPathComponent:@"Platforms/WatchOS.platform"]; + + case FBControlCoreProductFamilyMac: + return [FBXcodeConfiguration.developerDirectory stringByAppendingPathComponent:@"Platforms/MacOSX.platform"]; + } } - (NSString *)runtimeRootDirectory From d441f6db4b9fda6f3fe3a0692f494033d57103e7 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Wed, 22 Dec 2021 20:52:14 +0100 Subject: [PATCH 14/16] add invalidateHouseArrestAFCConnectionForBundleID as workaround for broken afc house arrests --- FBDeviceControl/Commands/FBDeviceCommands.h | 7 +++++++ FBDeviceControl/Management/FBAMDevice.m | 5 +++++ FBDeviceControl/Management/FBAMDeviceServiceManager.h | 8 ++++++++ FBDeviceControl/Management/FBAMDeviceServiceManager.m | 7 +++++++ FBDeviceControl/Management/FBDevice.m | 8 ++++++++ 5 files changed, 35 insertions(+) diff --git a/FBDeviceControl/Commands/FBDeviceCommands.h b/FBDeviceControl/Commands/FBDeviceCommands.h index 85dae2a63..521ffa47d 100644 --- a/FBDeviceControl/Commands/FBDeviceCommands.h +++ b/FBDeviceControl/Commands/FBDeviceCommands.h @@ -145,6 +145,13 @@ extern FBDeviceActivationState FBDeviceActivationStateCoerceFromString(NSString */ - (FBFutureContext *)houseArrestAFCConnectionForBundleID:(NSString *)bundleID afcCalls:(AFCCalls)afcCalls; +/** + Invalidates house arrest connection for a given bundle id. + Does nothing if no connection exists already. + This can be used whenever a cached connection returns previously encountered errors on subsequent operations + */ +- (void)invalidateHouseArrestAFCConnectionForBundleID:(NSString *)bundleID; + @end NS_ASSUME_NONNULL_END diff --git a/FBDeviceControl/Management/FBAMDevice.m b/FBDeviceControl/Management/FBAMDevice.m index 1afbea9e3..8f9f9e7c1 100644 --- a/FBDeviceControl/Management/FBAMDevice.m +++ b/FBDeviceControl/Management/FBAMDevice.m @@ -224,6 +224,11 @@ - (FBDeviceActivationState)activationState }]; } +- (void)invalidateHouseArrestAFCConnectionForBundleID:(NSString *)bundleID +{ + [self.serviceManager invalidateHouseArrestAFCConnectionForBundleID:bundleID]; +} + #pragma mark FBFutureContextManager Implementation - (FBFuture *)prepare:(id)logger diff --git a/FBDeviceControl/Management/FBAMDeviceServiceManager.h b/FBDeviceControl/Management/FBAMDeviceServiceManager.h index bf0731abf..d29414304 100644 --- a/FBDeviceControl/Management/FBAMDeviceServiceManager.h +++ b/FBDeviceControl/Management/FBAMDeviceServiceManager.h @@ -43,6 +43,14 @@ NS_ASSUME_NONNULL_BEGIN */ - (FBFutureContextManager *)houseArrestAFCConnectionForBundleID:(NSString *)bundleID afcCalls:(AFCCalls)afcCalls; + +/** + Invalidates house arrest connection for a given bundle id. + Does nothing if no connection exists already. + This can be used whenever a cached connection returns previously encountered errors on subsequent operations + */ +- (void)invalidateHouseArrestAFCConnectionForBundleID:(NSString *)bundleID; + @end NS_ASSUME_NONNULL_END diff --git a/FBDeviceControl/Management/FBAMDeviceServiceManager.m b/FBDeviceControl/Management/FBAMDeviceServiceManager.m index ae0728821..f9948f1c8 100644 --- a/FBDeviceControl/Management/FBAMDeviceServiceManager.m +++ b/FBDeviceControl/Management/FBAMDeviceServiceManager.m @@ -131,4 +131,11 @@ - (instancetype)initWithAMDevice:(FBAMDevice *)device serviceTimeout:(nullable N return manager; } +- (void)invalidateHouseArrestAFCConnectionForBundleID:(NSString *)bundleID +{ + [self.houseArrestManagers removeObjectForKey:bundleID]; + [self.houseArrestDelegates removeObjectForKey:bundleID]; +} + + @end diff --git a/FBDeviceControl/Management/FBDevice.m b/FBDeviceControl/Management/FBDevice.m index 5766acd11..f2bfa1e68 100644 --- a/FBDeviceControl/Management/FBDevice.m +++ b/FBDeviceControl/Management/FBDevice.m @@ -311,6 +311,14 @@ - (AMRecoveryModeDeviceRef)recoveryModeDeviceRef failFutureContext]; } +- (void)invalidateHouseArrestAFCConnectionForBundleID:(NSString *)bundleID +{ + FBAMDevice *amDevice = self.amDevice; + if (amDevice) { + [amDevice invalidateHouseArrestAFCConnectionForBundleID:bundleID]; + } +} + #pragma mark Forwarding + (NSArray *)commandResponders From 3e5518045416d27d95fc129910a96cfd74b5de3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juho=20G=C3=A4vert?= Date: Thu, 11 Jul 2024 14:35:44 +0300 Subject: [PATCH 15/16] missing FBDeviceApplicationCommands? --- .../Commands/FBDeviceApplicationCommands.m | 42 +++++++++++++++--- FBSimulatorControl.xcodeproj/project.pbxproj | 8 ++-- Shims/Binaries/libMaculator.dylib | Bin 184232 -> 107856 bytes Shims/Binaries/libShimulator.dylib | Bin 89104 -> 205920 bytes 4 files changed, 41 insertions(+), 9 deletions(-) diff --git a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m index a58ee8c17..49d4c028c 100644 --- a/FBDeviceControl/Commands/FBDeviceApplicationCommands.m +++ b/FBDeviceControl/Commands/FBDeviceApplicationCommands.m @@ -395,24 +395,56 @@ - (instancetype)initWithDevice:(FBDevice *)device deltaUpdateDirectory:(NSURL *) }]; } +- (FBFuture *)secureInstallApplicationBundle:(NSURL *)hostAppURL options:(NSDictionary *)options +{ + return [[self.device + connectToDeviceWithPurpose:@"install"] + onQueue:self.device.workQueue pop:^ FBFuture * (id device) { + FBDeviceWorkflowStatistics *statistics = [[FBDeviceWorkflowStatistics alloc] initWithWorkflowType:@"Install" logger:device.logger]; + [self.device.logger logFormat:@"Installing Application %@", hostAppURL]; + int status = device.calls.SecureInstallApplicationBundle( + device.amDeviceRef, + (__bridge CFURLRef _Nonnull)(hostAppURL), + (__bridge CFDictionaryRef _Nonnull)(options), + (AMDeviceProgressCallback) WorkflowCallback, + (__bridge void *) (statistics) + ); + if (status != 0) { + NSString *errorMessage = CFBridgingRelease(device.calls.CopyErrorText(status)); + return [[FBDeviceControlError + describeFormat:@"Failed to install application %@ 0x%x (%@). %@", [hostAppURL lastPathComponent], status, errorMessage, statistics.summaryOfRecentEvents] + failFuture]; + //return [[FBDeviceControlError + // describeFormat:@"Failed to install application %@ 0x%x (%@)", [hostAppURL lastPathComponent], status, errorMessage] + // failFuture]; + } + [self.device.logger logFormat:@"Installed Application %@", hostAppURL]; + return FBFuture.empty; + }]; +} + - (FBFuture *)secureDeltaInstallApplication:(NSURL *)appURL options:(NSDictionary *)options { return [[self.device connectToDeviceWithPurpose:@"install"] onQueue:self.device.workQueue pop:^ FBFuture * (id device) { + FBDeviceWorkflowStatistics *statistics = [[FBDeviceWorkflowStatistics alloc] initWithWorkflowType:@"Install" logger:device.logger]; [self.device.logger logFormat:@"Installing Application %@", appURL]; int status = device.calls.SecureInstallApplicationBundle( device.amDeviceRef, (__bridge CFURLRef _Nonnull)(appURL), (__bridge CFDictionaryRef _Nonnull)(options), - (AMDeviceProgressCallback) InstallCallback, - (__bridge void *) (device) + (AMDeviceProgressCallback) WorkflowCallback, + (__bridge void *) (statistics) ); if (status != 0) { NSString *errorMessage = CFBridgingRelease(device.calls.CopyErrorText(status)); - return [[FBDeviceControlError - describeFormat:@"Failed to install application %@ 0x%x (%@)", [appURL lastPathComponent], status, errorMessage] - failFuture]; + return [[FBDeviceControlError + describeFormat:@"Failed to install application %@ 0x%x (%@). %@", [appURL lastPathComponent], status, errorMessage, statistics.summaryOfRecentEvents] + failFuture]; + //return [[FBDeviceControlError + // describeFormat:@"Failed to install application %@ 0x%x (%@)", [appURL lastPathComponent], status, errorMessage] + // failFuture]; } [self.device.logger logFormat:@"Installed Application %@", appURL]; return FBFuture.empty; diff --git a/FBSimulatorControl.xcodeproj/project.pbxproj b/FBSimulatorControl.xcodeproj/project.pbxproj index 8c09e01f6..c74ddb2e7 100644 --- a/FBSimulatorControl.xcodeproj/project.pbxproj +++ b/FBSimulatorControl.xcodeproj/project.pbxproj @@ -3866,9 +3866,9 @@ isa = XCBuildConfiguration; baseConfigurationReference = AAC8B25B1CEC52540034A865 /* FBDeviceControl.xcconfig */; buildSettings = { - ONLY_ACTIVE_ARCH = NO; CLANG_ENABLE_MODULES = YES; DEFINES_MODULE = YES; + ONLY_ACTIVE_ARCH = NO; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; }; @@ -3878,9 +3878,9 @@ isa = XCBuildConfiguration; baseConfigurationReference = AAC8B25B1CEC52540034A865 /* FBDeviceControl.xcconfig */; buildSettings = { - ONLY_ACTIVE_ARCH = NO; CLANG_ENABLE_MODULES = YES; DEFINES_MODULE = YES; + ONLY_ACTIVE_ARCH = NO; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; }; @@ -3890,10 +3890,10 @@ isa = XCBuildConfiguration; baseConfigurationReference = AAC8B25B1CEC52540034A865 /* FBDeviceControl.xcconfig */; buildSettings = { - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - ONLY_ACTIVE_ARCH = NO; CLANG_ENABLE_MODULES = YES; DEFINES_MODULE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + ONLY_ACTIVE_ARCH = NO; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; }; diff --git a/Shims/Binaries/libMaculator.dylib b/Shims/Binaries/libMaculator.dylib index 49a3ad0845faf827060631292b35801791133aff..5553610d261a3f7cd6041267b280fa23d505c33d 100755 GIT binary patch literal 107856 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 literal 184232 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

0A6h{E)uC5zGr1=^FtCNg68B4KRcLSuL?{ybt) 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

tEG?_38b<0N+FLG5AsIW4~fp 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 R;4t<#a!30AcsE0c{{(LWC(Zx> diff --git a/Shims/Binaries/libShimulator.dylib b/Shims/Binaries/libShimulator.dylib index 78a758f9679b37a17c817239d11d20c964581ab9..fe4e31d9b73fc829b97f46f691dc6a752e83f0b7 100755 GIT binary patch literal 205920 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 EKLFOZ-~a#s literal 89104 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 Dk_HT} From 91e79096e6d04e5e857fcb3321eb2006e045f069 Mon Sep 17 00:00:00 2001 From: Guillaume Levasseur Date: Wed, 2 Oct 2024 09:46:37 -0400 Subject: [PATCH 16/16] Update dylibs --- Shims/Binaries/libMaculator.dylib | Bin 107856 -> 108048 bytes Shims/Binaries/libShimulator.dylib | Bin 205920 -> 206112 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Shims/Binaries/libMaculator.dylib b/Shims/Binaries/libMaculator.dylib index 5553610d261a3f7cd6041267b280fa23d505c33d..2ea63790304d652e51a2fc50cd22b9ce3cf62473 100755 GIT binary patch delta 14503 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

XbPcN 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 KbPaP{`~L?}=#7K` delta 30523 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