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/Classes/ArtworkViewController.m b/Classes/ArtworkViewController.m index 3b44ed8..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 @@ -415,17 +416,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 +465,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 +477,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]; } @@ -582,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/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/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/Default-667h@2x.png b/Default-667h@2x.png new file mode 100644 index 0000000..8946367 Binary files /dev/null and b/Default-667h@2x.png differ diff --git a/Default-736h@3x.png b/Default-736h@3x.png new file mode 100644 index 0000000..e7913f6 Binary files /dev/null and b/Default-736h@3x.png differ 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; 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/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 diff --git a/iOS Artwork Extractor.xcodeproj/project.pbxproj b/iOS Artwork Extractor.xcodeproj/project.pbxproj index d004da1..d2a09f2 100644 --- a/iOS Artwork Extractor.xcodeproj/project.pbxproj +++ b/iOS Artwork Extractor.xcodeproj/project.pbxproj @@ -14,6 +14,9 @@ 28216C970DB411BC00E5133A /* ArtworkViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28216C960DB411BC00E5133A /* ArtworkViewController.m */; }; 288765080DF74369002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765070DF74369002DB57D /* CoreGraphics.framework */; }; 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 */; }; @@ -74,7 +77,11 @@ 28A0AB4B0D9B1048005BE974 /* iOS_Artwork_Extractor_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iOS_Artwork_Extractor_Prefix.pch; sourceTree = ""; }; 28AD73870D9D96C1002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = MainWindow.xib; path = ../MainWindow.xib; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 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 = ""; }; @@ -175,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 */, @@ -204,6 +213,8 @@ isa = PBXGroup; children = ( C226CB881771BE9900908EF0 /* Default-568h@2x.png */, + 78D3131A19D9066200DD3604 /* Default-667h@2x.png */, + 78D3131B19D9066200DD3604 /* Default-736h@3x.png */, 080E96DDFE201D6D7F000001 /* Classes */, DAB5333314B3C39D00EDDE37 /* External */, 29B97315FDCFA39411CA2CEA /* Other Sources */, @@ -391,6 +402,7 @@ DA88C83211FF40E900FC6850 /* Artwork@2x.png in Resources */, DA88C83311FF40E900FC6850 /* Emoji@2x.png in Resources */, DA88C83411FF40E900FC6850 /* GlossyButton@2x.png in Resources */, + 78D3131D19D9066200DD3604 /* Default-736h@3x.png in Resources */, DA88C84111FF432300FC6850 /* Icon@2x.png in Resources */, DA3A6AFF120A9C8E00915B15 /* Checkerboard.png in Resources */, DAF387911211AF30003DF2B8 /* UITintedGlassButtonHighlight@2x.png in Resources */, @@ -401,6 +413,7 @@ DAB5337714B3C4B100EDDE37 /* Unknown@2x.png in Resources */, DAB5337A14B3C65500EDDE37 /* IPA.png in Resources */, DAB5337B14B3C65500EDDE37 /* IPA@2x.png in Resources */, + 78D3131C19D9066200DD3604 /* Default-667h@2x.png in Resources */, DAB5337D14B3C67500EDDE37 /* IPAViewController.xib in Resources */, C226CB891771BE9900908EF0 /* Default-568h@2x.png in Resources */, ); @@ -435,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 */, @@ -482,7 +496,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; }; @@ -495,7 +509,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; diff --git a/iOS_Artwork_Extractor-Info.plist b/iOS_Artwork_Extractor-Info.plist index aa1731b..5bad1fd 100644 --- a/iOS_Artwork_Extractor-Info.plist +++ b/iOS_Artwork_Extractor-Info.plist @@ -13,6 +13,39 @@ Icon.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