├── 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 | ![iMessage panda sticker](/Screenshots/sticker-example-animated.gif?raw=true "iMessage panda sticker") 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 | ![Create new project, step 1](/Screenshots/new-project-1.png?raw=true "Create new project, step 1") 26 | 27 | Name your project and choose a location to save it. 28 | 29 | ![Create new project, step 2](/Screenshots/new-project-2.png?raw=true "Create new project, step 2") 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 | ![Empty project](/Screenshots/project-empty.png?raw=true "Empty project") 38 | 39 | ![Drag and drop sticker](/Screenshots/project-panda.png?raw=true "Drag and drop sticker") 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 | ![Error when over 500KB](/Screenshots/project-too-large.png?raw=true "Error when over 500KB") 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 | ![APNG is now under 500KB](/Screenshots/tinypng-compression.png?raw=true "APNG is now under 500KB") 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 | ![Original](/Source/panda-original.png?raw=true "Original") | ![Compressed](/StickerPackExtension/Stickers.xcstickers/Sticker%20Pack.stickerpack/panda.sticker/panda.png?raw=true "Compressed") 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 | --------------------------------------------------------------------------------