diff options
| author | Fawzi Mohamed <fawzi.mohamed@digia.com> | 2014-11-12 19:41:59 +0100 |
|---|---|---|
| committer | Fawzi Mohamed <fawzi.mohamed@theqtcompany.com> | 2014-11-25 17:36:58 +0100 |
| commit | e757643690b61f7377329fd363b2f1dd1e4f7505 (patch) | |
| tree | b7305f0b12934c9bcca8f91d07c28ab39714df65 /src/tools/3rdparty | |
| parent | a3c9104e35789a0148d11889b898464d7403f047 (diff) | |
| download | qt-creator-e757643690b61f7377329fd363b2f1dd1e4f7505.tar.gz | |
iOS: fix simulator selection
get simulator type and SDK version dynamically from the available ones,
and let the user choose which one to use.
This fixes the static solution that did break with Xcode 6
Change-Id: I5cb2be68b9ea8736fc880cf3dd9d39d77f030293
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@theqtcompany.com>
Diffstat (limited to 'src/tools/3rdparty')
| -rw-r--r-- | src/tools/3rdparty/iossim/iphonesimulator.mm | 39 | ||||
| -rw-r--r-- | src/tools/3rdparty/iossim_1_8_2/iphonesimulator.mm | 40 |
2 files changed, 71 insertions, 8 deletions
diff --git a/src/tools/3rdparty/iossim/iphonesimulator.mm b/src/tools/3rdparty/iossim/iphonesimulator.mm index d573808f10..af1d6acb58 100644 --- a/src/tools/3rdparty/iossim/iphonesimulator.mm +++ b/src/tools/3rdparty/iossim/iphonesimulator.mm @@ -284,13 +284,24 @@ NSString* FindDeveloperDir() { - (int) showDeviceTypes { Class simDeviceSet = NSClassFromString(@"SimDeviceSet"); + nsprintf(@"<device_info>"); + bool hasDevices = false; if (simDeviceSet) { SimDeviceSet* deviceSet = [simDeviceSet defaultSet]; NSArray* devices = [deviceSet availableDevices]; for (SimDevice* device in devices) { - nsfprintf(stderr, @"%@, %@", device.deviceType.identifier, device.runtime.versionString); + hasDevices = true; + nsfprintf(stdout, @"<item><key>%@, %@</key><value>%@</value></item>",device.deviceType.identifier, device.runtime.versionString, device.deviceType.name); } } + if (!hasDevices) { + // fallback devices for Xcode 5.x + nsprintf(@"<item><key>com.apple.CoreSimulator.SimDeviceType.iPhone-4s</key><value>iPhone 3.5-inch Retina Display</value></item>"); + nsprintf(@"<item><key>com.apple.CoreSimulator.SimDeviceType.iPhone-5s</key><value>iPhone 4-inch Retina Display</value></item>"); + nsprintf(@"<item><key>com.apple.CoreSimulator.SimDeviceType.iPad-2</key><value>iPad</value></item>"); + nsprintf(@"<item><key>com.apple.CoreSimulator.SimDeviceType.iPad-Retina</key><value>iPad Retina Display</value></item>"); + } + nsprintf(@"</device_info>"); return EXIT_SUCCESS; } @@ -620,7 +631,21 @@ static void ChildSignal(int /*arg*/) { - (NSString*) changeDeviceType:(NSString *)family retina:(BOOL)retina isTallDevice:(BOOL)isTallDevice is64Bit:(BOOL)is64Bit { NSString *devicePropertyValue; - if (retina) { + if (self->deviceTypeId) { + if ([deviceTypeIdIphone4s isEqual: deviceTypeId]) + devicePropertyValue = deviceIphoneRetina3_5Inch; + else if ([deviceTypeIdIphone5s isEqual: deviceTypeId]) + devicePropertyValue = deviceIphoneRetina4_0Inch; + else if ([deviceTypeIdIpad2 isEqual: deviceTypeId]) + devicePropertyValue = deviceIpad; + else if ([deviceTypeIdIpadRetina isEqual: deviceTypeId]) + devicePropertyValue = deviceIpadRetina; + else { + nsprintf(@"<msg>Unknown or unsupported device type: %@</msg>\n", deviceTypeId); + [self doExit:EXIT_FAILURE]; + return nil; + } + } else if (retina) { if (verbose) { msgprintf(@"using retina"); } @@ -690,8 +715,8 @@ static void ChildSignal(int /*arg*/) { } NSString* developerDir = FindDeveloperDir(); if (!developerDir) { - nsprintf(@"Unable to find developer directory."); - exit(EXIT_FAILURE); + nsprintf(@"<msg>Unable to find developer directory.</msg>"); + [self doExit:EXIT_FAILURE]; } NSString *xcodePlistPath = [developerDir stringByAppendingPathComponent:@"../Info.plist"]; NSAssert([[NSFileManager defaultManager] fileExistsAtPath:xcodePlistPath isDirectory:NULL], @@ -717,15 +742,15 @@ static void ChildSignal(int /*arg*/) { } if (strcmp(argv[1], "showsdks") == 0) { [self LoadSimulatorFramework:developerDir]; - exit([self showSDKs]); + [self doExit:[self showSDKs]]; } else if (strcmp(argv[1], "showdevicetypes") == 0) { [self LoadSimulatorFramework:developerDir]; - exit([self showDeviceTypes]); + [self doExit:[self showDeviceTypes]]; } else if (strcmp(argv[1], "launch") == 0 || startOnly) { if (strcmp(argv[1], "launch") == 0 && argc < 3) { msgprintf(@"Missing application path argument"); [self printUsage]; - exit(EXIT_FAILURE); + [self doExit:EXIT_FAILURE]; } NSString *appPath = nil; diff --git a/src/tools/3rdparty/iossim_1_8_2/iphonesimulator.mm b/src/tools/3rdparty/iossim_1_8_2/iphonesimulator.mm index a7ab822cdd..c9a8abdd7d 100644 --- a/src/tools/3rdparty/iossim_1_8_2/iphonesimulator.mm +++ b/src/tools/3rdparty/iossim_1_8_2/iphonesimulator.mm @@ -400,7 +400,16 @@ NSString *deviceIpadRetina = @"iPad (Retina)"; startOnly = strcmp(argv[1], "start") == 0; nsprintf(@"<query_result>"); - if (strcmp(argv[1], "showsdks") == 0) { + if (strcmp(argv[1], "showdevicetypes") == 0) { + nsprintf(@"<deviceinfo>"); + nsprintf(@"<item><key>com.apple.CoreSimulator.SimDeviceType.iPhone-4s</key><value>iPhone 3.5-inch Retina Display</value></item>"); + nsprintf(@"<item><key>com.apple.CoreSimulator.SimDeviceType.iPhone-5s</key><value>iPhone 4-inch Retina Display</value></item>"); + nsprintf(@"<item><key>com.apple.CoreSimulator.SimDeviceType.iPad-2</key><value>iPad</value></item>"); + nsprintf(@"<item><key>com.apple.CoreSimulator.SimDeviceType.iPad-Retina</key><value>iPad Retina Display</value></item>"); + nsprintf(@"</deviceinfo>"); + [self doExit:0]; + return; + } else if (strcmp(argv[1], "showsdks") == 0) { [self doExit:[self showSDKs]]; return; } else if (strcmp(argv[1], "launch") == 0 || startOnly) { @@ -484,8 +493,37 @@ NSString *deviceIpadRetina = @"iPad (Retina)"; } else if (strcmp(argv[i], "--uuid") == 0) { i++; uuid = [NSString stringWithUTF8String:argv[i]]; + } else if (strcmp(argv[i], "--devicetypeid") == 0) { + i++; + if (i == argc) { + NSLog(@"<msg>missing arg after --devicetypeid</msg>"); + [self doExit:EXIT_FAILURE]; + return; + } + if (strcmp(argv[i], "com.apple.CoreSimulator.SimDeviceType.iPhone-4s") == 0) { + family = [NSString stringWithUTF8String:"iphone"]; + retinaDevice = YES; + } else if (strcmp(argv[i], "com.apple.CoreSimulator.SimDeviceType.iPad-2") == 0) { + family = [NSString stringWithUTF8String:"ipad"]; + } else if (strcmp(argv[i], "com.apple.CoreSimulator.SimDeviceType.iPhone-5s") == 0) { + family = [NSString stringWithUTF8String:"iphone"]; + retinaDevice = YES; + tallDevice = YES; + } else if (strcmp(argv[i], "com.apple.CoreSimulator.SimDeviceType.iPad-Retina") == 0) { + family = [NSString stringWithUTF8String:"ipad"]; + retinaDevice = YES; + } else { + fprintf(stdout,"<msg>Unknown or unsupported device type: %s</msg>\n",argv[i]); + [self doExit:EXIT_FAILURE]; + return; + } } else if (strcmp(argv[i], "--setenv") == 0) { i++; + if (i == argc) { + NSLog(@"<msg>missing arg after --setenv</msg>"); + [self doExit:EXIT_FAILURE]; + return; + } NSArray *parts = [[NSString stringWithUTF8String:argv[i]] componentsSeparatedByString:@"="]; [environment setObject:[parts objectAtIndex:1] forKey:[parts objectAtIndex:0]]; } else if (strcmp(argv[i], "--env") == 0) { |
