├── Source
└── panda-original.png
├── Screenshots
├── new-project-1.png
├── new-project-2.png
├── new-project-3.png
├── project-empty.png
├── project-panda.png
├── project-too-large.png
├── sticker-example.png
├── tinypng-compression.png
└── sticker-example-animated.gif
├── StickerPackExtension
├── Stickers.xcstickers
│ ├── Contents.json
│ ├── Sticker Pack.stickerpack
│ │ ├── panda.sticker
│ │ │ ├── Contents.json
│ │ │ └── panda.png
│ │ └── Contents.json
│ └── iMessage App Icon.stickersiconset
│ │ └── Contents.json
└── Info.plist
├── Panda.xcodeproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
├── xcuserdata
│ └── rolftimmermans.xcuserdatad
│ │ └── xcschemes
│ │ ├── xcschememanagement.plist
│ │ └── StickerPackExtension.xcscheme
└── project.pbxproj
├── Panda
└── Info.plist
└── README.md
/Source/panda-original.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinify/iMessage-Panda-sticker/master/Source/panda-original.png
--------------------------------------------------------------------------------
/Screenshots/new-project-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinify/iMessage-Panda-sticker/master/Screenshots/new-project-1.png
--------------------------------------------------------------------------------
/Screenshots/new-project-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinify/iMessage-Panda-sticker/master/Screenshots/new-project-2.png
--------------------------------------------------------------------------------
/Screenshots/new-project-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinify/iMessage-Panda-sticker/master/Screenshots/new-project-3.png
--------------------------------------------------------------------------------
/Screenshots/project-empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinify/iMessage-Panda-sticker/master/Screenshots/project-empty.png
--------------------------------------------------------------------------------
/Screenshots/project-panda.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinify/iMessage-Panda-sticker/master/Screenshots/project-panda.png
--------------------------------------------------------------------------------
/Screenshots/project-too-large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinify/iMessage-Panda-sticker/master/Screenshots/project-too-large.png
--------------------------------------------------------------------------------
/Screenshots/sticker-example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinify/iMessage-Panda-sticker/master/Screenshots/sticker-example.png
--------------------------------------------------------------------------------
/Screenshots/tinypng-compression.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinify/iMessage-Panda-sticker/master/Screenshots/tinypng-compression.png
--------------------------------------------------------------------------------
/StickerPackExtension/Stickers.xcstickers/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Screenshots/sticker-example-animated.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinify/iMessage-Panda-sticker/master/Screenshots/sticker-example-animated.gif
--------------------------------------------------------------------------------
/Panda.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/panda.sticker/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | },
6 | "properties" : {
7 | "filename" : "panda.png"
8 | }
9 | }
--------------------------------------------------------------------------------
/StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/panda.sticker/panda.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tinify/iMessage-Panda-sticker/master/StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/panda.sticker/panda.png
--------------------------------------------------------------------------------
/StickerPackExtension/Stickers.xcstickers/Sticker Pack.stickerpack/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "stickers" : [
3 | {
4 | "filename" : "panda.sticker"
5 | }
6 | ],
7 | "info" : {
8 | "version" : 1,
9 | "author" : "xcode"
10 | },
11 | "properties" : {
12 | "grid-size" : "regular"
13 | }
14 | }
--------------------------------------------------------------------------------
/Panda.xcodeproj/xcuserdata/rolftimmermans.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | StickerPackExtension.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | DE31E5D31D87F7D100D99AF6
16 |
17 | primary
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/StickerPackExtension/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | Panda
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | XPC!
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleVersion
22 | 1
23 | NSExtension
24 |
25 | NSExtensionPointIdentifier
26 | com.apple.message-payload-provider
27 | NSExtensionPrincipalClass
28 | StickerBrowserViewController
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/Panda/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UILaunchStoryboardName
24 | LaunchScreen
25 | UIRequiredDeviceCapabilities
26 |
27 | armv7
28 |
29 | UISupportedInterfaceOrientations
30 |
31 | UIInterfaceOrientationPortrait
32 | UIInterfaceOrientationLandscapeLeft
33 | UIInterfaceOrientationLandscapeRight
34 |
35 | UISupportedInterfaceOrientations~ipad
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationPortraitUpsideDown
39 | UIInterfaceOrientationLandscapeLeft
40 | UIInterfaceOrientationLandscapeRight
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/StickerPackExtension/Stickers.xcstickers/iMessage App Icon.stickersiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "60x45",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "60x45",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "ipad",
25 | "size" : "29x29",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "ipad",
30 | "size" : "67x50",
31 | "scale" : "2x"
32 | },
33 | {
34 | "idiom" : "ipad",
35 | "size" : "74x55",
36 | "scale" : "2x"
37 | },
38 | {
39 | "size" : "27x20",
40 | "idiom" : "universal",
41 | "scale" : "2x",
42 | "platform" : "ios"
43 | },
44 | {
45 | "size" : "27x20",
46 | "idiom" : "universal",
47 | "scale" : "3x",
48 | "platform" : "ios"
49 | },
50 | {
51 | "size" : "32x24",
52 | "idiom" : "universal",
53 | "scale" : "2x",
54 | "platform" : "ios"
55 | },
56 | {
57 | "size" : "32x24",
58 | "idiom" : "universal",
59 | "scale" : "3x",
60 | "platform" : "ios"
61 | },
62 | {
63 | "size" : "1024x768",
64 | "idiom" : "ios-marketing",
65 | "scale" : "1x",
66 | "platform" : "ios"
67 | }
68 | ],
69 | "info" : {
70 | "version" : 1,
71 | "author" : "xcode"
72 | }
73 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Keeping animated PNG iMessage stickers under 500KB
2 |
3 | With the release of iOS 10, Apple introduced stickers in iMessage. A sticker
4 | is a small image or animation that can be sent or placed on messages, photos
5 | or on other stickers.
6 |
7 | 
8 |
9 | Creating a sticker pack with your own animated stickers is simple! You need an
10 | **[animated PNG](https://en.wikipedia.org/wiki/APNG)** and
11 | **[Xcode 8](https://developer.apple.com/xcode/)**.
12 | Clone this project to get started, watch Apple's
13 | [video tutorial](https://developer.apple.com/videos/play/tutorials/building-sticker-packs/),
14 | or follow the steps below.
15 |
16 | Keeping **animated stickers below the maximum size of 500KB** can be
17 | challenging. We'll show you how you can use [TinyPNG](https://tinypng.com) to
18 | accomplish this! **Read on!**
19 |
20 | ## Creating an iMessage Sticker Pack Application
21 |
22 | First create a new Sticker Pack Application in Xcode 8. Select *File* > *New* >
23 | *Project* from the menu, then choose *Sticker Pack Application*.
24 |
25 | 
26 |
27 | Name your project and choose a location to save it.
28 |
29 | 
30 |
31 | ## Adding an animated PNG to your Sticker Pack
32 |
33 | Your project is empty after creation. If you already have an animated PNG
34 | (APNG), you can drag and drop it to the sticker pack under
35 | *Stickers.xcstickers* > *Sticker Pack*.
36 |
37 | 
38 |
39 | 
40 |
41 | For optimal performance, Apple has added a hard **file size limit of 500KB**
42 | for stickers. Xcode will warn you when you attempt to add a file that is
43 | larger.
44 |
45 | 
46 |
47 | Making sure your stickers are below 500KB can be especially challenging for
48 | animated stickers! Luckily you can use [TinyPNG](https://tinypng.com) to
49 | compress your stickers.
50 |
51 | ## Compressing animated PNGs
52 |
53 | You can compress your images in order to reduce the file size. With the
54 | TinyPNG website you can [compress APNG files](https://tinypng.com) for free.
55 | This allows you squeeze every last byte out of your images and to create the
56 | best possible stickers!
57 |
58 | 
59 |
60 | ## Compare before & after
61 |
62 | The compression uses advanced techniques to compress images. The difference is
63 | hardly noticeable but the filesize savings after compression are quite
64 | spectacular. The APNG image of the waving panda is compressed from 1.5 MB to
65 | 492 KB. You can see there is barely a visible difference.
66 |
67 | **Note that animated PNGs are only displayed in Firefox or Safari. In Google
68 | Chrome, Opera, Microsoft Edge and other browsers you only see the first
69 | frame.**
70 |
71 | Original APNG – 1.5MB | Optimised APNG – 492KB
72 | ----------------------------- | ------------------------------
73 |  | 
74 |
75 | ## How to reduce file size further?
76 |
77 | If [TinyPNG](https://tinypng.com) is not able to compress your animated PNG
78 | below 500KB, you might have to take other steps to reduce the file size. You
79 | may have to change your image so that the dimensions are smaller, or use fewer
80 | frames.
81 |
--------------------------------------------------------------------------------
/Panda.xcodeproj/xcuserdata/rolftimmermans.xcuserdatad/xcschemes/StickerPackExtension.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
6 |
9 |
10 |
16 |
22 |
23 |
24 |
30 |
36 |
37 |
38 |
39 |
40 |
45 |
46 |
47 |
48 |
54 |
55 |
56 |
57 |
58 |
59 |
70 |
72 |
78 |
79 |
80 |
81 |
82 |
83 |
90 |
92 |
98 |
99 |
100 |
101 |
103 |
104 |
107 |
108 |
109 |
--------------------------------------------------------------------------------
/Panda.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | DE31E5D51D87F7D100D99AF6 /* StickerPackExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = DE31E5D41D87F7D100D99AF6 /* StickerPackExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
11 | DE31E5D91D87F7D100D99AF6 /* Stickers.xcstickers in Resources */ = {isa = PBXBuildFile; fileRef = DE31E5D81D87F7D100D99AF6 /* Stickers.xcstickers */; };
12 | DE31E5DA1D87F7D100D99AF6 /* Stickers.xcstickers in Resources */ = {isa = PBXBuildFile; fileRef = DE31E5D81D87F7D100D99AF6 /* Stickers.xcstickers */; };
13 | /* End PBXBuildFile section */
14 |
15 | /* Begin PBXContainerItemProxy section */
16 | DE31E5D61D87F7D100D99AF6 /* PBXContainerItemProxy */ = {
17 | isa = PBXContainerItemProxy;
18 | containerPortal = DE31E5CA1D87F7D100D99AF6 /* Project object */;
19 | proxyType = 1;
20 | remoteGlobalIDString = DE31E5D31D87F7D100D99AF6;
21 | remoteInfo = StickerPackExtension;
22 | };
23 | /* End PBXContainerItemProxy section */
24 |
25 | /* Begin PBXCopyFilesBuildPhase section */
26 | DE31E5E01D87F7D100D99AF6 /* Embed App Extensions */ = {
27 | isa = PBXCopyFilesBuildPhase;
28 | buildActionMask = 2147483647;
29 | dstPath = "";
30 | dstSubfolderSpec = 13;
31 | files = (
32 | DE31E5D51D87F7D100D99AF6 /* StickerPackExtension.appex in Embed App Extensions */,
33 | );
34 | name = "Embed App Extensions";
35 | runOnlyForDeploymentPostprocessing = 0;
36 | };
37 | /* End PBXCopyFilesBuildPhase section */
38 |
39 | /* Begin PBXFileReference section */
40 | DE31E5D01D87F7D100D99AF6 /* Panda.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Panda.app; sourceTree = BUILT_PRODUCTS_DIR; };
41 | DE31E5D41D87F7D100D99AF6 /* StickerPackExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = StickerPackExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
42 | DE31E5D81D87F7D100D99AF6 /* Stickers.xcstickers */ = {isa = PBXFileReference; lastKnownFileType = folder.stickers; name = Stickers.xcstickers; path = StickerPackExtension/Stickers.xcstickers; sourceTree = ""; };
43 | /* End PBXFileReference section */
44 |
45 | /* Begin PBXGroup section */
46 | DE31E5C91D87F7D100D99AF6 = {
47 | isa = PBXGroup;
48 | children = (
49 | DE31E5D81D87F7D100D99AF6 /* Stickers.xcstickers */,
50 | DE31E5D11D87F7D100D99AF6 /* Products */,
51 | );
52 | sourceTree = "";
53 | };
54 | DE31E5D11D87F7D100D99AF6 /* Products */ = {
55 | isa = PBXGroup;
56 | children = (
57 | DE31E5D01D87F7D100D99AF6 /* Panda.app */,
58 | DE31E5D41D87F7D100D99AF6 /* StickerPackExtension.appex */,
59 | );
60 | name = Products;
61 | sourceTree = "";
62 | };
63 | /* End PBXGroup section */
64 |
65 | /* Begin PBXNativeTarget section */
66 | DE31E5CF1D87F7D100D99AF6 /* Panda */ = {
67 | isa = PBXNativeTarget;
68 | buildConfigurationList = DE31E5E11D87F7D100D99AF6 /* Build configuration list for PBXNativeTarget "Panda" */;
69 | buildPhases = (
70 | DE31E5CE1D87F7D100D99AF6 /* Resources */,
71 | DE31E5E01D87F7D100D99AF6 /* Embed App Extensions */,
72 | );
73 | buildRules = (
74 | );
75 | dependencies = (
76 | DE31E5D71D87F7D100D99AF6 /* PBXTargetDependency */,
77 | );
78 | name = Panda;
79 | productName = Panda;
80 | productReference = DE31E5D01D87F7D100D99AF6 /* Panda.app */;
81 | productType = "com.apple.product-type.application.messages";
82 | };
83 | DE31E5D31D87F7D100D99AF6 /* StickerPackExtension */ = {
84 | isa = PBXNativeTarget;
85 | buildConfigurationList = DE31E5DD1D87F7D100D99AF6 /* Build configuration list for PBXNativeTarget "StickerPackExtension" */;
86 | buildPhases = (
87 | DE31E5D21D87F7D100D99AF6 /* Resources */,
88 | );
89 | buildRules = (
90 | );
91 | dependencies = (
92 | );
93 | name = StickerPackExtension;
94 | productName = StickerPackExtension;
95 | productReference = DE31E5D41D87F7D100D99AF6 /* StickerPackExtension.appex */;
96 | productType = "com.apple.product-type.app-extension.messages-sticker-pack";
97 | };
98 | /* End PBXNativeTarget section */
99 |
100 | /* Begin PBXProject section */
101 | DE31E5CA1D87F7D100D99AF6 /* Project object */ = {
102 | isa = PBXProject;
103 | attributes = {
104 | LastUpgradeCheck = 0800;
105 | ORGANIZATIONNAME = Tinify;
106 | TargetAttributes = {
107 | DE31E5CF1D87F7D100D99AF6 = {
108 | CreatedOnToolsVersion = 8.0;
109 | DevelopmentTeam = 7KW759QZ7L;
110 | ProvisioningStyle = Automatic;
111 | };
112 | DE31E5D31D87F7D100D99AF6 = {
113 | CreatedOnToolsVersion = 8.0;
114 | DevelopmentTeam = 7KW759QZ7L;
115 | ProvisioningStyle = Automatic;
116 | };
117 | };
118 | };
119 | buildConfigurationList = DE31E5CD1D87F7D100D99AF6 /* Build configuration list for PBXProject "Panda" */;
120 | compatibilityVersion = "Xcode 3.2";
121 | developmentRegion = English;
122 | hasScannedForEncodings = 0;
123 | knownRegions = (
124 | en,
125 | );
126 | mainGroup = DE31E5C91D87F7D100D99AF6;
127 | productRefGroup = DE31E5D11D87F7D100D99AF6 /* Products */;
128 | projectDirPath = "";
129 | projectRoot = "";
130 | targets = (
131 | DE31E5CF1D87F7D100D99AF6 /* Panda */,
132 | DE31E5D31D87F7D100D99AF6 /* StickerPackExtension */,
133 | );
134 | };
135 | /* End PBXProject section */
136 |
137 | /* Begin PBXResourcesBuildPhase section */
138 | DE31E5CE1D87F7D100D99AF6 /* Resources */ = {
139 | isa = PBXResourcesBuildPhase;
140 | buildActionMask = 2147483647;
141 | files = (
142 | DE31E5DA1D87F7D100D99AF6 /* Stickers.xcstickers in Resources */,
143 | );
144 | runOnlyForDeploymentPostprocessing = 0;
145 | };
146 | DE31E5D21D87F7D100D99AF6 /* Resources */ = {
147 | isa = PBXResourcesBuildPhase;
148 | buildActionMask = 2147483647;
149 | files = (
150 | DE31E5D91D87F7D100D99AF6 /* Stickers.xcstickers in Resources */,
151 | );
152 | runOnlyForDeploymentPostprocessing = 0;
153 | };
154 | /* End PBXResourcesBuildPhase section */
155 |
156 | /* Begin PBXTargetDependency section */
157 | DE31E5D71D87F7D100D99AF6 /* PBXTargetDependency */ = {
158 | isa = PBXTargetDependency;
159 | target = DE31E5D31D87F7D100D99AF6 /* StickerPackExtension */;
160 | targetProxy = DE31E5D61D87F7D100D99AF6 /* PBXContainerItemProxy */;
161 | };
162 | /* End PBXTargetDependency section */
163 |
164 | /* Begin XCBuildConfiguration section */
165 | DE31E5DB1D87F7D100D99AF6 /* Debug */ = {
166 | isa = XCBuildConfiguration;
167 | buildSettings = {
168 | ALWAYS_SEARCH_USER_PATHS = NO;
169 | CLANG_ANALYZER_NONNULL = YES;
170 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
171 | CLANG_CXX_LIBRARY = "libc++";
172 | CLANG_ENABLE_MODULES = YES;
173 | CLANG_ENABLE_OBJC_ARC = YES;
174 | CLANG_WARN_BOOL_CONVERSION = YES;
175 | CLANG_WARN_CONSTANT_CONVERSION = YES;
176 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
177 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
178 | CLANG_WARN_EMPTY_BODY = YES;
179 | CLANG_WARN_ENUM_CONVERSION = YES;
180 | CLANG_WARN_INFINITE_RECURSION = YES;
181 | CLANG_WARN_INT_CONVERSION = YES;
182 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
183 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
184 | CLANG_WARN_UNREACHABLE_CODE = YES;
185 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
186 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
187 | COPY_PHASE_STRIP = NO;
188 | DEBUG_INFORMATION_FORMAT = dwarf;
189 | ENABLE_STRICT_OBJC_MSGSEND = YES;
190 | ENABLE_TESTABILITY = YES;
191 | GCC_C_LANGUAGE_STANDARD = gnu99;
192 | GCC_DYNAMIC_NO_PIC = NO;
193 | GCC_NO_COMMON_BLOCKS = YES;
194 | GCC_OPTIMIZATION_LEVEL = 0;
195 | GCC_PREPROCESSOR_DEFINITIONS = (
196 | "DEBUG=1",
197 | "$(inherited)",
198 | );
199 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
200 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
201 | GCC_WARN_UNDECLARED_SELECTOR = YES;
202 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
203 | GCC_WARN_UNUSED_FUNCTION = YES;
204 | GCC_WARN_UNUSED_VARIABLE = YES;
205 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
206 | MTL_ENABLE_DEBUG_INFO = YES;
207 | ONLY_ACTIVE_ARCH = YES;
208 | SDKROOT = iphoneos;
209 | };
210 | name = Debug;
211 | };
212 | DE31E5DC1D87F7D100D99AF6 /* Release */ = {
213 | isa = XCBuildConfiguration;
214 | buildSettings = {
215 | ALWAYS_SEARCH_USER_PATHS = NO;
216 | CLANG_ANALYZER_NONNULL = YES;
217 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
218 | CLANG_CXX_LIBRARY = "libc++";
219 | CLANG_ENABLE_MODULES = YES;
220 | CLANG_ENABLE_OBJC_ARC = YES;
221 | CLANG_WARN_BOOL_CONVERSION = YES;
222 | CLANG_WARN_CONSTANT_CONVERSION = YES;
223 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
224 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
225 | CLANG_WARN_EMPTY_BODY = YES;
226 | CLANG_WARN_ENUM_CONVERSION = YES;
227 | CLANG_WARN_INFINITE_RECURSION = YES;
228 | CLANG_WARN_INT_CONVERSION = YES;
229 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
230 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
231 | CLANG_WARN_UNREACHABLE_CODE = YES;
232 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
233 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
234 | COPY_PHASE_STRIP = NO;
235 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
236 | ENABLE_NS_ASSERTIONS = NO;
237 | ENABLE_STRICT_OBJC_MSGSEND = YES;
238 | GCC_C_LANGUAGE_STANDARD = gnu99;
239 | GCC_NO_COMMON_BLOCKS = YES;
240 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
241 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
242 | GCC_WARN_UNDECLARED_SELECTOR = YES;
243 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
244 | GCC_WARN_UNUSED_FUNCTION = YES;
245 | GCC_WARN_UNUSED_VARIABLE = YES;
246 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
247 | MTL_ENABLE_DEBUG_INFO = NO;
248 | SDKROOT = iphoneos;
249 | VALIDATE_PRODUCT = YES;
250 | };
251 | name = Release;
252 | };
253 | DE31E5DE1D87F7D100D99AF6 /* Debug */ = {
254 | isa = XCBuildConfiguration;
255 | buildSettings = {
256 | ASSETCATALOG_COMPILER_APPICON_NAME = "iMessage App Icon";
257 | DEVELOPMENT_TEAM = 7KW759QZ7L;
258 | INFOPLIST_FILE = StickerPackExtension/Info.plist;
259 | PRODUCT_BUNDLE_IDENTIFIER = com.tinify.Panda.StickerPackExtension;
260 | PRODUCT_NAME = "$(TARGET_NAME)";
261 | SKIP_INSTALL = YES;
262 | };
263 | name = Debug;
264 | };
265 | DE31E5DF1D87F7D100D99AF6 /* Release */ = {
266 | isa = XCBuildConfiguration;
267 | buildSettings = {
268 | ASSETCATALOG_COMPILER_APPICON_NAME = "iMessage App Icon";
269 | DEVELOPMENT_TEAM = 7KW759QZ7L;
270 | INFOPLIST_FILE = StickerPackExtension/Info.plist;
271 | PRODUCT_BUNDLE_IDENTIFIER = com.tinify.Panda.StickerPackExtension;
272 | PRODUCT_NAME = "$(TARGET_NAME)";
273 | SKIP_INSTALL = YES;
274 | };
275 | name = Release;
276 | };
277 | DE31E5E21D87F7D100D99AF6 /* Debug */ = {
278 | isa = XCBuildConfiguration;
279 | buildSettings = {
280 | ASSETCATALOG_COMPILER_APPICON_NAME = "iMessage App Icon";
281 | DEVELOPMENT_TEAM = 7KW759QZ7L;
282 | INFOPLIST_FILE = Panda/Info.plist;
283 | PRODUCT_BUNDLE_IDENTIFIER = com.tinify.Panda;
284 | PRODUCT_NAME = "$(TARGET_NAME)";
285 | TARGETED_DEVICE_FAMILY = "1,2";
286 | };
287 | name = Debug;
288 | };
289 | DE31E5E31D87F7D100D99AF6 /* Release */ = {
290 | isa = XCBuildConfiguration;
291 | buildSettings = {
292 | ASSETCATALOG_COMPILER_APPICON_NAME = "iMessage App Icon";
293 | DEVELOPMENT_TEAM = 7KW759QZ7L;
294 | INFOPLIST_FILE = Panda/Info.plist;
295 | PRODUCT_BUNDLE_IDENTIFIER = com.tinify.Panda;
296 | PRODUCT_NAME = "$(TARGET_NAME)";
297 | TARGETED_DEVICE_FAMILY = "1,2";
298 | };
299 | name = Release;
300 | };
301 | /* End XCBuildConfiguration section */
302 |
303 | /* Begin XCConfigurationList section */
304 | DE31E5CD1D87F7D100D99AF6 /* Build configuration list for PBXProject "Panda" */ = {
305 | isa = XCConfigurationList;
306 | buildConfigurations = (
307 | DE31E5DB1D87F7D100D99AF6 /* Debug */,
308 | DE31E5DC1D87F7D100D99AF6 /* Release */,
309 | );
310 | defaultConfigurationIsVisible = 0;
311 | defaultConfigurationName = Release;
312 | };
313 | DE31E5DD1D87F7D100D99AF6 /* Build configuration list for PBXNativeTarget "StickerPackExtension" */ = {
314 | isa = XCConfigurationList;
315 | buildConfigurations = (
316 | DE31E5DE1D87F7D100D99AF6 /* Debug */,
317 | DE31E5DF1D87F7D100D99AF6 /* Release */,
318 | );
319 | defaultConfigurationIsVisible = 0;
320 | };
321 | DE31E5E11D87F7D100D99AF6 /* Build configuration list for PBXNativeTarget "Panda" */ = {
322 | isa = XCConfigurationList;
323 | buildConfigurations = (
324 | DE31E5E21D87F7D100D99AF6 /* Debug */,
325 | DE31E5E31D87F7D100D99AF6 /* Release */,
326 | );
327 | defaultConfigurationIsVisible = 0;
328 | };
329 | /* End XCConfigurationList section */
330 | };
331 | rootObject = DE31E5CA1D87F7D100D99AF6 /* Project object */;
332 | }
333 |
--------------------------------------------------------------------------------