From aa402952eb274d16e0c6a0cd9baf807b021f0c63 Mon Sep 17 00:00:00 2001 From: James Ide Date: Sun, 28 Sep 2014 20:23:50 -0700 Subject: [PATCH 1/5] Support for 3x assets when running on the 6 Plus Added support for extracting 3x assets, similar to how 2x assets are handled. This also requires adding new launch screens so that iPhone 6 and 6 Plus run in their native resolutions instead of the scaled iPhone 5 resolution. Without that, iPhone 6 Plus reports itself as having 2x screen scale instead of 3x. Tested by running the code on the iPhone 6 Plus simulator. Extracted assets were named with the "@3x.png" suffix. --- Classes/ArtworkViewController.m | 17 +++++---- Classes/IPAArchive.m | 11 ++++-- Default-667h@2x.png | Bin 0 -> 8542 bytes Default-736h@3x.png | Bin 0 -> 18483 bytes .../project.pbxproj | 8 +++++ iOS_Artwork_Extractor-Info.plist | 33 ++++++++++++++++++ 6 files changed, 61 insertions(+), 8 deletions(-) create mode 100644 Default-667h@2x.png create mode 100644 Default-736h@3x.png diff --git a/Classes/ArtworkViewController.m b/Classes/ArtworkViewController.m index 3b44ed8..f18740d 100644 --- a/Classes/ArtworkViewController.m +++ b/Classes/ArtworkViewController.m @@ -415,17 +415,20 @@ - (void) loadImages for (NSString *imageName in [[self.artwork allKeys] sortedArrayUsingSelector:@selector(localizedCompare:)]) [self addImage:[self.artwork objectForKey:imageName] filePath:imageName]; - + + NSRegularExpression *scaleModifierRegex = [NSRegularExpression regularExpressionWithPattern:@"@[23]x" options:NSRegularExpressionCaseInsensitive error:nil]; + if ([self isArtwork]) { for (NSString *relativePath in [[NSFileManager defaultManager] enumeratorAtPath:systemRoot()]) { - BOOL scale1 = [UIScreen mainScreen].scale == 1 && [[relativePath lowercaseString] rangeOfString:@"@2x"].location == NSNotFound; + BOOL scale1 = [UIScreen mainScreen].scale == 1 && [scaleModifierRegex rangeOfFirstMatchInString:relativePath options:0 range:NSMakeRange(0, [relativePath length])].location == NSNotFound; BOOL scale2 = [UIScreen mainScreen].scale == 2 && [[relativePath lowercaseString] rangeOfString:@"@2x"].location != NSNotFound; + BOOL scale3 = [UIScreen mainScreen].scale == 3 && [[relativePath lowercaseString] rangeOfString:@"@3x"].location != NSNotFound; NSString *filePath = [systemRoot() stringByAppendingPathComponent:relativePath]; NSBundle *bundle = [NSBundle bundleWithPath:[filePath stringByDeletingLastPathComponent]]; NSString *archiveName = [[relativePath lastPathComponent] stringByDeletingPathExtension]; - if ([relativePath hasSuffix:@"png"] && (scale1 || scale2)) + if ([relativePath hasSuffix:@"png"] && (scale1 || scale2 || scale3)) { NSString *filePath = [systemRoot() stringByAppendingPathComponent:relativePath]; [self addImage:imageWithContentsOfFile(filePath) filePath:filePath]; @@ -461,8 +464,9 @@ - (void) loadImages UIImage *image = [assetManager imageNamed:renditionName]; NSString *pseudoBundlePath = [[relativePath stringByDeletingLastPathComponent] stringByAppendingFormat:@" %@", archiveName]; NSString *filePath = [[pseudoBundlePath stringByAppendingPathComponent:renditionName] stringByAppendingPathExtension:@"png"]; - if ([image scale] == [[UIScreen mainScreen] scale]) + if (image.scale == [UIScreen mainScreen].scale) { [self addImage:image filePath:filePath]; + } } } } @@ -472,9 +476,10 @@ - (void) loadImages for (NSString *imageName in self.archive.imageNames) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - BOOL scale1 = [UIScreen mainScreen].scale == 1 && [[imageName lowercaseString] rangeOfString:@"@2x"].location == NSNotFound; + BOOL scale1 = [UIScreen mainScreen].scale == 1 && [scaleModifierRegex rangeOfFirstMatchInString:imageName options:0 range:NSMakeRange(0, [imageName length])].location == NSNotFound; BOOL scale2 = [UIScreen mainScreen].scale == 2 && [[imageName lowercaseString] rangeOfString:@"@2x"].location != NSNotFound; - if ([imageName hasSuffix:@"png"] && (scale1 || scale2)) + BOOL scale3 = [UIScreen mainScreen].scale == 3 && [[imageName lowercaseString] rangeOfString:@"@3x"].location != NSNotFound; + if ([imageName hasSuffix:@"png"] && (scale1 || scale2 || scale3)) { [self addImage:[self.archive imageNamed:imageName] filePath:imageName]; } diff --git a/Classes/IPAArchive.m b/Classes/IPAArchive.m index eea0cab..af879aa 100644 --- a/Classes/IPAArchive.m +++ b/Classes/IPAArchive.m @@ -126,7 +126,7 @@ - (UIImage *) appIcon } if ([bundleIconFiles count] == 0) { - bundleIconFiles = [NSArray arrayWithObjects:@"Icon.png", @"Icon@2x.png", nil]; + bundleIconFiles = [NSArray arrayWithObjects:@"Icon.png", @"Icon@2x.png", @"Icon@3x.png", nil]; } NSMutableArray *icons = [NSMutableArray array]; @@ -211,7 +211,14 @@ - (UIImage *) imageNamed:(NSString *)imageName NSData *imageData = [self.ipa inflateFile:header attributes:&attributes]; CGDataProviderRef source = CGDataProviderCreateWithCFData((CFDataRef)imageData); CGImageRef imageRef = CGImageCreateWithPNGDataProvider(source, NULL, false, kCGRenderingIntentDefault); - CGFloat scale = [imageName rangeOfString:@"@2x"].location != NSNotFound || [imageName rangeOfString:@"@2X"].location != NSNotFound ? 2 : 1; + CGFloat scale; + if ([[imageName lowercaseString] rangeOfString:@"@2x"].location != NSNotFound) { + scale = 2; + } else if ([[imageName lowercaseString] rangeOfString:@"@3x"].location != NSNotFound) { + scale = 3; + } else { + scale = 1; + } image = [UIImage imageWithCGImage:imageRef scale:scale orientation:UIImageOrientationUp]; CGImageRelease(imageRef); CGDataProviderRelease(source); diff --git a/Default-667h@2x.png b/Default-667h@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..89463674b13aafe7515763a171396032877ffd7d GIT binary patch literal 8542 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.png Icon@2x.png + UILaunchImages + + + UILaunchImageMinimumOSVersion + 7.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {414, 736} + + CFBundleIdentifier ch.pitaya.${PRODUCT_NAME:rfc1034identifier} CFBundleInfoDictionaryVersion From cb506520f0ebc0181f7e73ad4427f21f6692cd9c Mon Sep 17 00:00:00 2001 From: Tom Kraina Date: Mon, 25 Apr 2016 11:38:08 +0200 Subject: [PATCH 2/5] Fix build error in ZipKit. --- External/ZipKit/ZKArchive.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/External/ZipKit/ZKArchive.h b/External/ZipKit/ZKArchive.h index ec4a850..b315743 100644 --- a/External/ZipKit/ZKArchive.h +++ b/External/ZipKit/ZKArchive.h @@ -12,8 +12,8 @@ @interface ZKArchive : NSObject { @private // invoker should be an NSOperation or NSThread; if [invoker isCancelled], inflation or deflation will be aborted - id __weak _invoker; - id __weak _delegate; + id _invoker; + id _delegate; NSString *_archivePath; NSMutableArray *_centralDirectory; NSFileManager *_fileManager; @@ -58,8 +58,8 @@ - (void) didUpdateTotalCount:(NSNumber *) count; - (void) didUpdateBytesWritten:(NSNumber *) byteCount; -@property (assign, nonatomic) id __weak invoker; -@property (assign, nonatomic) id __weak delegate; +@property (weak, nonatomic) id invoker; +@property (weak, nonatomic) id delegate; @property (copy) NSString *archivePath; @property (retain) NSMutableArray *centralDirectory; @property (retain) NSFileManager *fileManager; From 4992d9a8e05bbdfb0b96c8ab9c89d1c18746bcf7 Mon Sep 17 00:00:00 2001 From: Tom Kraina Date: Mon, 10 Dec 2018 10:01:29 +0100 Subject: [PATCH 3/5] Upgrade .xib files and set the deployment target to 8.0 --- ArtworkDetailViewController.xib | 271 +-- IPAViewController.xib | 259 +-- MainWindow.xib | 2022 +++-------------- .../project.pbxproj | 4 +- 4 files changed, 364 insertions(+), 2192 deletions(-) diff --git a/ArtworkDetailViewController.xib b/ArtworkDetailViewController.xib index 0a944cc..d136890 100644 --- a/ArtworkDetailViewController.xib +++ b/ArtworkDetailViewController.xib @@ -1,236 +1,37 @@ - - - 1024 - 9L30 - 680 - 949.54 - 353.00 - - YES - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - - - IBFirstResponder - - - - 274 - - YES - - - 301 - {{20, 20}, {200, 230}} - - - 3 - MCAwAA - - 2 - - - NO - NO - 4 - NO - - - {{40, -84}, {320, 460}} - - 3 - MC43NQA - - - NO - - - Save - 1 - - - - - YES - - - saveButton - - - - 5 - - - - save - - - - 7 - - - - view - - - - 9 - - - - imageView - - - - 10 - - - - - YES - - 0 - - YES - - - - - - -1 - - - RmlsZSdzIE93bmVyA - - - -2 - - - - - 4 - - - - - 8 - - - YES - - - - - - 3 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 3.IBEditorWindowLastContentRect - 3.IBPluginDependency - 4.IBPluginDependency - 8.IBEditorWindowLastContentRect - 8.IBPluginDependency - - - YES - ArtworkDetailViewController - UIResponder - {{0, 274}, {320, 460}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{0, 285}, {320, 460}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - YES - - - YES - - - - - YES - - YES - - - YES - - - - 10 - - - - YES - - ArtworkDetailViewController - UIViewController - - save - id - - - YES - - YES - imageView - saveButton - - - YES - UIImageView - UIBarButtonItem - - - - IBProjectSource - Classes/ArtworkDetailViewController.h - - - - ArtworkDetailViewController - UIViewController - - IBUserSource - - - - - - 0 - iOS Artwork Extractor.xcodeproj - 3 - 3.1 - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/IPAViewController.xib b/IPAViewController.xib index 41e4095..c929681 100644 --- a/IPAViewController.xib +++ b/IPAViewController.xib @@ -1,217 +1,44 @@ - - - 1280 - 10K549 - 1938 - 1038.36 - 461.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 - - - IBUISearchDisplayController - IBUITableView - IBUISearchBar - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 290 - {320, 44} - - - 3 - IBCocoaTouchFramework - - IBCocoaTouchFramework - - - - {320, 460} - - - - - 3 - MC43NQA - - 2 - - - YES - IBCocoaTouchFramework - YES - 1 - 0 - YES - 44 - 22 - 22 - - - - IBCocoaTouchFramework - - - - - - - view - - - - 4 - - - - searchDisplayController - - - - 15 - - - - delegate - - - - 20 - - - - searchContentsController - - - - 16 - - - - searchResultsDataSource - - - - 17 - - - - searchResultsDelegate - - - - 18 - - - - delegate - - - - 19 - - - - searchBar - - - - 14 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 2 - - - - - - - - 13 - - - - - 12 - - - - - - - IPAViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 20 - - - - - IPAViewController - UITableViewController - - IBProjectSource - ./Classes/IPAViewController.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - 933 - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MainWindow.xib b/MainWindow.xib index 10ea96a..c0430dc 100644 --- a/MainWindow.xib +++ b/MainWindow.xib @@ -1,1740 +1,284 @@ - - - 784 - 10K549 - 1938 - 1038.36 - 461.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 - - - YES - IBUISlider - IBUILabel - IBUINavigationBar - IBProxyObject - IBUICustomObject - IBUIWindow - IBUITabBar - IBUITextField - IBUINavigationItem - IBUITabBarItem - IBUITableViewController - IBUIView - IBUINavigationController - IBUIViewController - IBUITabBarController - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - IBCocoaTouchFramework - - - - 1316 - - {320, 480} - - 3 - MC43NQA - - NO - NO - - IBCocoaTouchFramework - YES - - - - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - Artwork - - NSImage - Artwork.png - - IBCocoaTouchFramework - - - - - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - 256 - {0, 0} - NO - YES - YES - IBCocoaTouchFramework - - - YES - - Artwork - - - IBCocoaTouchFramework - - - ArtworkViewController - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - - - YES - - - - Emoji - - NSImage - Emoji.png - - IBCocoaTouchFramework - - - - - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - 256 - {0, 0} - NO - YES - YES - IBCocoaTouchFramework - - - YES - - Emoji - - - IBCocoaTouchFramework - - - ArtworkViewController - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - - - - IPA - - NSImage - IPA.png - - IBCocoaTouchFramework - - - - - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - 256 - {0, 0} - NO - YES - YES - IBCocoaTouchFramework - - - YES - - IPA - - IPA - IBCocoaTouchFramework - - - IPAViewController - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - - - - - 274 - - YES - - - 292 - {{42, 269}, {228, 23}} - - NO - YES - YES - IBCocoaTouchFramework - 0 - 0 - 0.5 - - - - 292 - {{42, 302}, {228, 23}} - - NO - YES - YES - IBCocoaTouchFramework - 0 - 0 - 0.5 - - - - 292 - {{42, 335}, {228, 23}} - - NO - YES - YES - IBCocoaTouchFramework - 0 - 0 - 0.5 - - - - 292 - {{20, 270}, {16, 21}} - - NO - YES - NO - IBCocoaTouchFramework - R - - 1 - MCAwIDAAA - - - 1 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - {{20, 303}, {16, 21}} - - NO - YES - NO - IBCocoaTouchFramework - G - - - 1 - 10 - - - - - - 292 - {{20, 336}, {16, 21}} - - NO - YES - NO - IBCocoaTouchFramework - B - - - 1 - 10 - - - - - - 292 - {{42, 368}, {228, 23}} - - NO - YES - YES - IBCocoaTouchFramework - 0 - 0 - 0.5 - - - - 292 - {{20, 369}, {16, 21}} - - NO - YES - NO - IBCocoaTouchFramework - A - - - 1 - 10 - - - - - - 292 - {{76, 183}, {194, 23}} - - NO - YES - YES - IBCocoaTouchFramework - 0 - 0 - 140 - 20 - 320 - - - - 292 - {{76, 213}, {194, 23}} - - NO - YES - YES - IBCocoaTouchFramework - 0 - 0 - 44 - 16 - 80 - - - - 292 - {{20, 184}, {50, 21}} - - NO - YES - NO - IBCocoaTouchFramework - Width - - - 1 - 10 - - - - - - 292 - {{276, 184}, {24, 21}} - - NO - YES - NO - IBCocoaTouchFramework - 0 - - - 1 - 10 - 2 - - Helvetica - Helvetica - 0 - 13 - - - Helvetica - 13 - 16 - - - - - 292 - {{95, 153}, {175, 23}} - - NO - YES - YES - IBCocoaTouchFramework - 0 - 0 - 20 - 8 - 64 - - - - 292 - {{20, 153}, {69, 20}} - - NO - YES - NO - IBCocoaTouchFramework - Font Size - - - 1 - 10 - - Helvetica - Helvetica - 0 - 16 - - - Helvetica - 16 - 16 - - - - - 292 - {{276, 153}, {24, 21}} - - NO - YES - NO - IBCocoaTouchFramework - 0 - - - 1 - 10 - 2 - - - - - - 292 - {{276, 214}, {24, 21}} - - NO - YES - NO - IBCocoaTouchFramework - 0 - - - 1 - 10 - 2 - - - - - - 292 - {{276, 268}, {24, 25}} - - NO - YES - NO - IBCocoaTouchFramework - MjU1CiNGRg - - - 1 - 10 - 2 - 2 - - Helvetica - Helvetica - 0 - 11 - - - Helvetica - 11 - 16 - - - - - 292 - {{276, 301}, {24, 25}} - - NO - YES - NO - IBCocoaTouchFramework - MjU1CiNGRg - - - 1 - 10 - 2 - 2 - - - - - - 292 - {{276, 334}, {24, 25}} - - NO - YES - NO - IBCocoaTouchFramework - MjU1CiNGRg - - - 1 - 10 - 2 - 2 - - - - - - 292 - {{276, 367}, {24, 25}} - - NO - YES - NO - IBCocoaTouchFramework - MjU1CiNGRg - - - 1 - 10 - 2 - 2 - - - - - - 292 - {{20, 214}, {50, 21}} - - NO - YES - NO - IBCocoaTouchFramework - Height - - - 1 - 10 - - - - - - 292 - {{20, 119}, {50, 21}} - - NO - YES - NO - IBCocoaTouchFramework - Text - - - 1 - 10 - - - - - - 292 - {{78, 114}, {222, 31}} - - NO - NO - IBCocoaTouchFramework - 0 - Save - 3 - - 3 - MAA - - 2 - - - YES - 17 - - 1 - 9 - IBCocoaTouchFramework - - 1 - - Helvetica - Helvetica - 0 - 15 - - - Helvetica - 15 - 16 - - - - {{0, 20}, {320, 411}} - - 3 - MC43NQA - - - NO - IBCocoaTouchFramework - - - Glossy Button - - NSImage - GlossyButton.png - - IBCocoaTouchFramework - - - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - - - 266 - {{0, 431}, {320, 49}} - - - - - 3 - MCAwAA - - NO - IBCocoaTouchFramework - - YES - - - - - - - - - - - - YES - - - delegate - - - - 99 - - - - window - - - - 9 - - - - tabBarController - - - - 113 - - - - redSlider - - - - 150 - - - - greenSlider - - - - 151 - - - - blueSlider - - - - 152 - - - - alphaSlider - - - - 160 - - - - widthSlider - - - - 168 - - - - heightSlider - - - - 169 - - - - titleTextField - - - - 216 - - - - alphaLabel - - - - 229 - - - - blueLabel - - - - 230 - - - - greenLabel - - - - 231 - - - - heightLabel - - - - 232 - - - - redLabel - - - - 233 - - - - widthLabel - - - - 234 - - - - fontSizeLabel - - - - 258 - - - - fontSizeSlider - - - - 260 - - - - changeColor: - - - 13 - - 153 - - - - changeColor: - - - 13 - - 154 - - - - changeColor: - - - 13 - - 155 - - - - changeColor: - - - 13 - - 161 - - - - changeSize: - - - 13 - - 170 - - - - changeSize: - - - 13 - - 171 - - - - delegate - - - - 215 - - - - changeFontSize: - - - 13 - - 259 - - - - - YES - - 0 - - YES - - - - - - 2 - - - YES - - - - - -1 - - - File's Owner - - - 3 - - - - - 106 - - - YES - - - - - - - - - - 107 - - - - - -2 - - - - - 175 - - - YES - - - - - - - - 177 - - - - - 111 - - - - - 109 - - - YES - - - - - - - 124 - - - YES - - - - - - - - - - - - - - - - - - - - - - - - - - - - 253 - - - - - 255 - - - - - 254 - - - - - 212 - - - - - 213 - - - - - 228 - - - - - 227 - - - - - 226 - - - - - 225 - - - - - 221 - - - - - 219 - - - - - 166 - - - - - 163 - - - - - 167 - - - - - 162 - - - - - 158 - - - - - 157 - - - - - 145 - - - - - 144 - - - - - 143 - - - - - 147 - - - - - 146 - - - - - 140 - - - - - 110 - - - - - 261 - - - YES - - - - - - - - 263 - - - - - 264 - - - - - 303 - - - YES - - - - - - 307 - - - - - 308 - - - YES - - - - - - 312 - - - - - 313 - - - YES - - - - - - - - 314 - - - YES - - - - - - 315 - - - - - 316 - - - - - 317 - - - - - - - YES - - YES - -1.CustomClassName - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 106.IBPluginDependency - 107.IBPluginDependency - 109.CustomClassName - 109.IBPluginDependency - 110.IBPluginDependency - 111.IBPluginDependency - 124.IBPluginDependency - 140.IBPluginDependency - 143.IBPluginDependency - 144.IBPluginDependency - 145.IBPluginDependency - 146.IBPluginDependency - 147.IBPluginDependency - 157.IBPluginDependency - 158.IBPluginDependency - 162.IBPluginDependency - 163.IBPluginDependency - 166.IBPluginDependency - 167.IBPluginDependency - 175.IBPluginDependency - 177.IBPluginDependency - 2.IBAttributePlaceholdersKey - 2.IBPluginDependency - 212.IBPluginDependency - 213.IBPluginDependency - 219.IBPluginDependency - 221.IBPluginDependency - 225.IBPluginDependency - 226.IBPluginDependency - 227.IBPluginDependency - 228.IBPluginDependency - 253.IBPluginDependency - 254.IBPluginDependency - 255.IBPluginDependency - 261.IBPluginDependency - 263.IBPluginDependency - 264.IBPluginDependency - 3.CustomClassName - 3.IBPluginDependency - 303.CustomClassName - 303.IBPluginDependency - 307.IBPluginDependency - 308.CustomClassName - 308.IBPluginDependency - 312.IBPluginDependency - 313.IBPluginDependency - 314.CustomClassName - 314.IBPluginDependency - 315.IBPluginDependency - 316.IBPluginDependency - 317.IBPluginDependency - - - YES - UIApplication - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - GlossyButtonViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - YES - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - AppDelegate - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - ArtworkViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - ArtworkViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - IPAViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 317 - - - - YES - - AppDelegate - NSObject - - YES - - YES - tabBarController - window - - - YES - UITabBarController - UIWindow - - - - YES - - YES - tabBarController - window - - - YES - - tabBarController - UITabBarController - - - window - UIWindow - - - - - IBProjectSource - ./Classes/AppDelegate.h - - - - ArtworkViewController - UITableViewController - - saveAll - id - - - saveAll - - saveAll - id - - - - YES - - YES - progressView - saveAllButton - - - YES - UIProgressView - UIBarButtonItem - - - - YES - - YES - progressView - saveAllButton - - - YES - - progressView - UIProgressView - - - saveAllButton - UIBarButtonItem - - - - - IBProjectSource - ./Classes/ArtworkViewController.h - - - - GlossyButtonViewController - UIViewController - - YES - - YES - changeColor: - changeFontSize: - changeSize: - - - YES - UISlider - UISlider - UISlider - - - - YES - - YES - changeColor: - changeFontSize: - changeSize: - - - YES - - changeColor: - UISlider - - - changeFontSize: - UISlider - - - changeSize: - UISlider - - - - - YES - - YES - alphaLabel - alphaSlider - blueLabel - blueSlider - fontSizeLabel - fontSizeSlider - greenLabel - greenSlider - heightLabel - heightSlider - redLabel - redSlider - titleTextField - widthLabel - widthSlider - - - YES - UILabel - UISlider - UILabel - UISlider - UILabel - UISlider - UILabel - UISlider - UILabel - UISlider - UILabel - UISlider - UITextField - UILabel - UISlider - - - - YES - - YES - alphaLabel - alphaSlider - blueLabel - blueSlider - fontSizeLabel - fontSizeSlider - greenLabel - greenSlider - heightLabel - heightSlider - redLabel - redSlider - titleTextField - widthLabel - widthSlider - - - YES - - alphaLabel - UILabel - - - alphaSlider - UISlider - - - blueLabel - UILabel - - - blueSlider - UISlider - - - fontSizeLabel - UILabel - - - fontSizeSlider - UISlider - - - greenLabel - UILabel - - - greenSlider - UISlider - - - heightLabel - UILabel - - - heightSlider - UISlider - - - redLabel - UILabel - - - redSlider - UISlider - - - titleTextField - UITextField - - - widthLabel - UILabel - - - widthSlider - UISlider - - - - - IBProjectSource - ./Classes/GlossyButtonViewController.h - - - - IPAViewController - UITableViewController - - YES - - YES - appNameLabel - archiveLoadingView - progressView - - - YES - UILabel - UIView - UIProgressView - - - - YES - - YES - appNameLabel - archiveLoadingView - progressView - - - YES - - appNameLabel - UILabel - - - archiveLoadingView - UIView - - - progressView - UIProgressView - - - - - IBProjectSource - ./Classes/IPAViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - - YES - - YES - Artwork.png - Emoji.png - GlossyButton.png - IPA.png - - - YES - {24, 24} - {24, 24} - {24, 24} - {24, 24} - - - 933 - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS Artwork Extractor.xcodeproj/project.pbxproj b/iOS Artwork Extractor.xcodeproj/project.pbxproj index e99c838..4ddd45d 100644 --- a/iOS Artwork Extractor.xcodeproj/project.pbxproj +++ b/iOS Artwork Extractor.xcodeproj/project.pbxproj @@ -490,7 +490,7 @@ GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; @@ -503,7 +503,7 @@ GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; SDKROOT = iphoneos; }; name = Release; From 18e39d812d8099b3c60cc15f80e5c5c06a02f3d3 Mon Sep 17 00:00:00 2001 From: Tom Kraina Date: Mon, 10 Dec 2018 10:12:48 +0100 Subject: [PATCH 4/5] Replace unavailable `system` function with `posix_spawn` --- Classes/ArtworkViewController.m | 3 +- Classes/RunCMD.c | 28 +++++++++++++++++++ Classes/RunCMD.h | 23 +++++++++++++++ .../project.pbxproj | 6 ++++ 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 Classes/RunCMD.c create mode 100644 Classes/RunCMD.h diff --git a/Classes/ArtworkViewController.m b/Classes/ArtworkViewController.m index f18740d..41e6b95 100644 --- a/Classes/ArtworkViewController.m +++ b/Classes/ArtworkViewController.m @@ -13,6 +13,7 @@ #import "IPAArchive.h" #import "FindSymbol.h" +#import "RunCMD.h" #import #import @@ -587,7 +588,7 @@ - (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)butt AppDelegate *appDelegate = [UIApplication sharedApplication].delegate; NSString *openCommand = [NSString stringWithFormat:@"/usr/bin/open \"%@\"", [appDelegate saveDirectory:nil]]; - system([openCommand fileSystemRepresentation]); + run_cmd([openCommand fileSystemRepresentation]); } // MARK: - diff --git a/Classes/RunCMD.c b/Classes/RunCMD.c new file mode 100644 index 0000000..50c2a99 --- /dev/null +++ b/Classes/RunCMD.c @@ -0,0 +1,28 @@ +// +// RunCMD.c +// iOS Artwork Extractor +// +// Created by Tom Kraina on 10/12/2018. +// Copyright © 2018 Cédric Luthi. All rights reserved. +// + +#include "RunCMD.h" +#include +#include +#include + +extern char **environ; + +void run_cmd(char *cmd) +{ + pid_t pid; + char *argv[] = {"sh", "-c", cmd, NULL}; + int status; + + status = posix_spawn(&pid, "/bin/sh", NULL, NULL, argv, environ); + if (status == 0) { + if (waitpid(pid, &status, 0) == -1) { + perror("waitpid"); + } + } +} diff --git a/Classes/RunCMD.h b/Classes/RunCMD.h new file mode 100644 index 0000000..b9d2d21 --- /dev/null +++ b/Classes/RunCMD.h @@ -0,0 +1,23 @@ +// +// RunCMD.h +// iOS Artwork Extractor +// +// Created by Tom Kraina on 10/12/2018. +// Copyright © 2018 Cédric Luthi. All rights reserved. +// + +#ifndef RunCMD_h +#define RunCMD_h + +#include + + +/** + Replacement for `system` function on iOS 11+ + Inspired by: https://github.com/libpd/pd-for-ios/issues/19#issuecomment-334133540 + + @param cmd commnand + */ +void run_cmd(char *cmd); + +#endif /* RunCMD_h */ diff --git a/iOS Artwork Extractor.xcodeproj/project.pbxproj b/iOS Artwork Extractor.xcodeproj/project.pbxproj index 4ddd45d..d2a09f2 100644 --- a/iOS Artwork Extractor.xcodeproj/project.pbxproj +++ b/iOS Artwork Extractor.xcodeproj/project.pbxproj @@ -16,6 +16,7 @@ 28AD73880D9D96C1002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD73870D9D96C1002E5188 /* MainWindow.xib */; }; 78D3131C19D9066200DD3604 /* Default-667h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 78D3131A19D9066200DD3604 /* Default-667h@2x.png */; }; 78D3131D19D9066200DD3604 /* Default-736h@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 78D3131B19D9066200DD3604 /* Default-736h@3x.png */; }; + 9CD02F7021BE6370000A5A98 /* RunCMD.c in Sources */ = {isa = PBXBuildFile; fileRef = 9CD02F6F21BE6370000A5A98 /* RunCMD.c */; }; C226CB891771BE9900908EF0 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C226CB881771BE9900908EF0 /* Default-568h@2x.png */; }; DA3A6AFF120A9C8E00915B15 /* Checkerboard.png in Resources */ = {isa = PBXBuildFile; fileRef = DA3A6AFE120A9C8E00915B15 /* Checkerboard.png */; }; DA3C70FA1141405200A99F39 /* ArtworkDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DA3C70F91141405200A99F39 /* ArtworkDetailViewController.m */; }; @@ -79,6 +80,8 @@ 78D3131A19D9066200DD3604 /* Default-667h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-667h@2x.png"; sourceTree = ""; }; 78D3131B19D9066200DD3604 /* Default-736h@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-736h@3x.png"; sourceTree = ""; }; 8D1107310486CEB800E47090 /* iOS_Artwork_Extractor-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "iOS_Artwork_Extractor-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; + 9CD02F6E21BE6370000A5A98 /* RunCMD.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RunCMD.h; sourceTree = ""; }; + 9CD02F6F21BE6370000A5A98 /* RunCMD.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = RunCMD.c; sourceTree = ""; }; C226CB881771BE9900908EF0 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; DA3A6AFE120A9C8E00915B15 /* Checkerboard.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Checkerboard.png; path = Resources/Checkerboard.png; sourceTree = ""; }; DA3C70F81141405200A99F39 /* ArtworkDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArtworkDetailViewController.h; sourceTree = ""; }; @@ -179,6 +182,8 @@ DA3C70F81141405200A99F39 /* ArtworkDetailViewController.h */, DA3C70F91141405200A99F39 /* ArtworkDetailViewController.m */, DAC7969F11FD71E100A33F28 /* ArtworkDetailViewController.xib */, + 9CD02F6E21BE6370000A5A98 /* RunCMD.h */, + 9CD02F6F21BE6370000A5A98 /* RunCMD.c */, DAFFB59A150A5CF400A4B6DC /* EmojiImageView.h */, DAFFB59B150A5CF400A4B6DC /* EmojiImageView.m */, DA9AD664138FC4BD00BDC968 /* FindSymbol.h */, @@ -443,6 +448,7 @@ DAB5336B14B3C39D00EDDE37 /* ZKCDTrailer64.m in Sources */, DAB5336C14B3C39D00EDDE37 /* ZKCDTrailer64Locator.m in Sources */, DAB5336D14B3C39D00EDDE37 /* ZKDataArchive.m in Sources */, + 9CD02F7021BE6370000A5A98 /* RunCMD.c in Sources */, DAB5336E14B3C39D00EDDE37 /* ZKDefs.m in Sources */, DAB5336F14B3C39D00EDDE37 /* ZKFileArchive.m in Sources */, DAB5337014B3C39D00EDDE37 /* ZKLFHeader.m in Sources */, From 780bc76a97044df652eea08d2868aea277ea8978 Mon Sep 17 00:00:00 2001 From: Tom Kraina Date: Mon, 10 Dec 2018 10:17:45 +0100 Subject: [PATCH 5/5] Add Changelog section to README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 6c28fd4..6a070db 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,9 @@ In order to extract *Retina Display @2x* high resolution images, choose the **Ha See instructions on the wiki to [extract more artwork](https://github.com/0xced/iOS-Artwork-Extractor/wiki/Extracting-more-artwork). * Set the `ARTWORK_DIRECTORY` environment variable to control where the png files are saved. If it is not set, the files will be saved into a folder on your desktop. + +## Changelog: +- 2018-12-10 - Updated for Xcode 10 ## Glossy Buttons