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
-
- 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