project.pbxproj 67 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519
  1. // !$*UTF8*$!
  2. {
  3. archiveVersion = 1;
  4. classes = {
  5. };
  6. objectVersion = 46;
  7. objects = {
  8. /* Begin PBXBuildFile section */
  9. D9753A1B1BD3BBE600C6F4B8 /* YYCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D97539F41BD3BBE600C6F4B8 /* YYCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
  10. D9753A1C1BD3BBE600C6F4B8 /* YYCache.m in Sources */ = {isa = PBXBuildFile; fileRef = D97539F51BD3BBE600C6F4B8 /* YYCache.m */; };
  11. D9753A1D1BD3BBE600C6F4B8 /* YYDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D97539F61BD3BBE600C6F4B8 /* YYDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
  12. D9753A1E1BD3BBE600C6F4B8 /* YYDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = D97539F71BD3BBE600C6F4B8 /* YYDiskCache.m */; };
  13. D9753A1F1BD3BBE600C6F4B8 /* YYKVStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = D97539F81BD3BBE600C6F4B8 /* YYKVStorage.h */; settings = {ATTRIBUTES = (Public, ); }; };
  14. D9753A201BD3BBE600C6F4B8 /* YYKVStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = D97539F91BD3BBE600C6F4B8 /* YYKVStorage.m */; };
  15. D9753A211BD3BBE600C6F4B8 /* YYMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D97539FA1BD3BBE600C6F4B8 /* YYMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
  16. D9753A221BD3BBE600C6F4B8 /* YYMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = D97539FB1BD3BBE600C6F4B8 /* YYMemoryCache.m */; };
  17. D9753A231BD3BBE600C6F4B8 /* _YYWebImageSetter.h in Headers */ = {isa = PBXBuildFile; fileRef = D97539FD1BD3BBE600C6F4B8 /* _YYWebImageSetter.h */; settings = {ATTRIBUTES = (Private, ); }; };
  18. D9753A241BD3BBE600C6F4B8 /* _YYWebImageSetter.m in Sources */ = {isa = PBXBuildFile; fileRef = D97539FE1BD3BBE600C6F4B8 /* _YYWebImageSetter.m */; };
  19. D9753A251BD3BBE600C6F4B8 /* CALayer+YYWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D97539FF1BD3BBE600C6F4B8 /* CALayer+YYWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
  20. D9753A261BD3BBE600C6F4B8 /* CALayer+YYWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D9753A001BD3BBE600C6F4B8 /* CALayer+YYWebImage.m */; };
  21. D9753A271BD3BBE600C6F4B8 /* MKAnnotationView+YYWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D9753A011BD3BBE600C6F4B8 /* MKAnnotationView+YYWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
  22. D9753A281BD3BBE600C6F4B8 /* MKAnnotationView+YYWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D9753A021BD3BBE600C6F4B8 /* MKAnnotationView+YYWebImage.m */; };
  23. D9753A291BD3BBE600C6F4B8 /* UIButton+YYWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D9753A031BD3BBE600C6F4B8 /* UIButton+YYWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
  24. D9753A2A1BD3BBE600C6F4B8 /* UIButton+YYWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D9753A041BD3BBE600C6F4B8 /* UIButton+YYWebImage.m */; };
  25. D9753A2B1BD3BBE600C6F4B8 /* UIImage+YYWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D9753A051BD3BBE600C6F4B8 /* UIImage+YYWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
  26. D9753A2C1BD3BBE600C6F4B8 /* UIImage+YYWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D9753A061BD3BBE600C6F4B8 /* UIImage+YYWebImage.m */; };
  27. D9753A2D1BD3BBE600C6F4B8 /* UIImageView+YYWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D9753A071BD3BBE600C6F4B8 /* UIImageView+YYWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
  28. D9753A2E1BD3BBE600C6F4B8 /* UIImageView+YYWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D9753A081BD3BBE600C6F4B8 /* UIImageView+YYWebImage.m */; };
  29. D9753A2F1BD3BBE600C6F4B8 /* YYAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = D9753A0A1BD3BBE600C6F4B8 /* YYAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; };
  30. D9753A301BD3BBE600C6F4B8 /* YYAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = D9753A0B1BD3BBE600C6F4B8 /* YYAnimatedImageView.m */; };
  31. D9753A311BD3BBE600C6F4B8 /* YYFrameImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D9753A0C1BD3BBE600C6F4B8 /* YYFrameImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
  32. D9753A321BD3BBE600C6F4B8 /* YYFrameImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D9753A0D1BD3BBE600C6F4B8 /* YYFrameImage.m */; };
  33. D9753A331BD3BBE600C6F4B8 /* YYImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D9753A0E1BD3BBE600C6F4B8 /* YYImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
  34. D9753A341BD3BBE600C6F4B8 /* YYImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D9753A0F1BD3BBE600C6F4B8 /* YYImage.m */; };
  35. D9753A351BD3BBE600C6F4B8 /* YYImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = D9753A101BD3BBE600C6F4B8 /* YYImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
  36. D9753A361BD3BBE600C6F4B8 /* YYImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D9753A111BD3BBE600C6F4B8 /* YYImageCoder.m */; };
  37. D9753A371BD3BBE600C6F4B8 /* YYSpriteSheetImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D9753A121BD3BBE600C6F4B8 /* YYSpriteSheetImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
  38. D9753A381BD3BBE600C6F4B8 /* YYSpriteSheetImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D9753A131BD3BBE600C6F4B8 /* YYSpriteSheetImage.m */; };
  39. D9753A391BD3BBE600C6F4B8 /* YYImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D9753A141BD3BBE600C6F4B8 /* YYImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
  40. D9753A3A1BD3BBE600C6F4B8 /* YYImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = D9753A151BD3BBE600C6F4B8 /* YYImageCache.m */; };
  41. D9753A3B1BD3BBE600C6F4B8 /* YYWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D9753A161BD3BBE600C6F4B8 /* YYWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
  42. D9753A3C1BD3BBE600C6F4B8 /* YYWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D9753A171BD3BBE600C6F4B8 /* YYWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
  43. D9753A3D1BD3BBE600C6F4B8 /* YYWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D9753A181BD3BBE600C6F4B8 /* YYWebImageManager.m */; };
  44. D9753A3E1BD3BBE600C6F4B8 /* YYWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = D9753A191BD3BBE600C6F4B8 /* YYWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
  45. D9753A3F1BD3BBE600C6F4B8 /* YYWebImageOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D9753A1A1BD3BBE600C6F4B8 /* YYWebImageOperation.m */; };
  46. D9753A411BD3BE6400C6F4B8 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D9753A401BD3BE6400C6F4B8 /* libsqlite3.tbd */; };
  47. D9753A431BD3BE6800C6F4B8 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D9753A421BD3BE6800C6F4B8 /* libz.tbd */; };
  48. D9753A451BD3BE6C00C6F4B8 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9753A441BD3BE6C00C6F4B8 /* MobileCoreServices.framework */; };
  49. D9753A471BD3BE7000C6F4B8 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9753A461BD3BE7000C6F4B8 /* AssetsLibrary.framework */; };
  50. D9753A491BD3BE7600C6F4B8 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9753A481BD3BE7600C6F4B8 /* Accelerate.framework */; };
  51. D9753A4B1BD3BE7B00C6F4B8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9753A4A1BD3BE7B00C6F4B8 /* QuartzCore.framework */; };
  52. D9753A4D1BD3BE8000C6F4B8 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9753A4C1BD3BE8000C6F4B8 /* ImageIO.framework */; };
  53. D9753A4F1BD3BE8600C6F4B8 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9753A4E1BD3BE8600C6F4B8 /* CoreFoundation.framework */; };
  54. D9753A511BD3BE8A00C6F4B8 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9753A501BD3BE8A00C6F4B8 /* UIKit.framework */; };
  55. D9753A531BD3BE9D00C6F4B8 /* WebP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D9753A521BD3BE9D00C6F4B8 /* WebP.framework */; };
  56. /* End PBXBuildFile section */
  57. /* Begin PBXFileReference section */
  58. D97539DE1BD3BB6F00C6F4B8 /* YYWebImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = YYWebImage.framework; sourceTree = BUILT_PRODUCTS_DIR; };
  59. D97539EF1BD3BB9D00C6F4B8 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
  60. D97539F41BD3BBE600C6F4B8 /* YYCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYCache.h; sourceTree = "<group>"; };
  61. D97539F51BD3BBE600C6F4B8 /* YYCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYCache.m; sourceTree = "<group>"; };
  62. D97539F61BD3BBE600C6F4B8 /* YYDiskCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYDiskCache.h; sourceTree = "<group>"; };
  63. D97539F71BD3BBE600C6F4B8 /* YYDiskCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYDiskCache.m; sourceTree = "<group>"; };
  64. D97539F81BD3BBE600C6F4B8 /* YYKVStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYKVStorage.h; sourceTree = "<group>"; };
  65. D97539F91BD3BBE600C6F4B8 /* YYKVStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYKVStorage.m; sourceTree = "<group>"; };
  66. D97539FA1BD3BBE600C6F4B8 /* YYMemoryCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYMemoryCache.h; sourceTree = "<group>"; };
  67. D97539FB1BD3BBE600C6F4B8 /* YYMemoryCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYMemoryCache.m; sourceTree = "<group>"; };
  68. D97539FD1BD3BBE600C6F4B8 /* _YYWebImageSetter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _YYWebImageSetter.h; sourceTree = "<group>"; };
  69. D97539FE1BD3BBE600C6F4B8 /* _YYWebImageSetter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _YYWebImageSetter.m; sourceTree = "<group>"; };
  70. D97539FF1BD3BBE600C6F4B8 /* CALayer+YYWebImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CALayer+YYWebImage.h"; sourceTree = "<group>"; };
  71. D9753A001BD3BBE600C6F4B8 /* CALayer+YYWebImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CALayer+YYWebImage.m"; sourceTree = "<group>"; };
  72. D9753A011BD3BBE600C6F4B8 /* MKAnnotationView+YYWebImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MKAnnotationView+YYWebImage.h"; sourceTree = "<group>"; };
  73. D9753A021BD3BBE600C6F4B8 /* MKAnnotationView+YYWebImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MKAnnotationView+YYWebImage.m"; sourceTree = "<group>"; };
  74. D9753A031BD3BBE600C6F4B8 /* UIButton+YYWebImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIButton+YYWebImage.h"; sourceTree = "<group>"; };
  75. D9753A041BD3BBE600C6F4B8 /* UIButton+YYWebImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIButton+YYWebImage.m"; sourceTree = "<group>"; };
  76. D9753A051BD3BBE600C6F4B8 /* UIImage+YYWebImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+YYWebImage.h"; sourceTree = "<group>"; };
  77. D9753A061BD3BBE600C6F4B8 /* UIImage+YYWebImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+YYWebImage.m"; sourceTree = "<group>"; };
  78. D9753A071BD3BBE600C6F4B8 /* UIImageView+YYWebImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImageView+YYWebImage.h"; sourceTree = "<group>"; };
  79. D9753A081BD3BBE600C6F4B8 /* UIImageView+YYWebImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImageView+YYWebImage.m"; sourceTree = "<group>"; };
  80. D9753A0A1BD3BBE600C6F4B8 /* YYAnimatedImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYAnimatedImageView.h; sourceTree = "<group>"; };
  81. D9753A0B1BD3BBE600C6F4B8 /* YYAnimatedImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYAnimatedImageView.m; sourceTree = "<group>"; };
  82. D9753A0C1BD3BBE600C6F4B8 /* YYFrameImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYFrameImage.h; sourceTree = "<group>"; };
  83. D9753A0D1BD3BBE600C6F4B8 /* YYFrameImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYFrameImage.m; sourceTree = "<group>"; };
  84. D9753A0E1BD3BBE600C6F4B8 /* YYImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImage.h; sourceTree = "<group>"; };
  85. D9753A0F1BD3BBE600C6F4B8 /* YYImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImage.m; sourceTree = "<group>"; };
  86. D9753A101BD3BBE600C6F4B8 /* YYImageCoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageCoder.h; sourceTree = "<group>"; };
  87. D9753A111BD3BBE600C6F4B8 /* YYImageCoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageCoder.m; sourceTree = "<group>"; };
  88. D9753A121BD3BBE600C6F4B8 /* YYSpriteSheetImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYSpriteSheetImage.h; sourceTree = "<group>"; };
  89. D9753A131BD3BBE600C6F4B8 /* YYSpriteSheetImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYSpriteSheetImage.m; sourceTree = "<group>"; };
  90. D9753A141BD3BBE600C6F4B8 /* YYImageCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYImageCache.h; sourceTree = "<group>"; };
  91. D9753A151BD3BBE600C6F4B8 /* YYImageCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYImageCache.m; sourceTree = "<group>"; };
  92. D9753A161BD3BBE600C6F4B8 /* YYWebImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYWebImage.h; sourceTree = "<group>"; };
  93. D9753A171BD3BBE600C6F4B8 /* YYWebImageManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYWebImageManager.h; sourceTree = "<group>"; };
  94. D9753A181BD3BBE600C6F4B8 /* YYWebImageManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYWebImageManager.m; sourceTree = "<group>"; };
  95. D9753A191BD3BBE600C6F4B8 /* YYWebImageOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = YYWebImageOperation.h; sourceTree = "<group>"; };
  96. D9753A1A1BD3BBE600C6F4B8 /* YYWebImageOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYWebImageOperation.m; sourceTree = "<group>"; };
  97. D9753A401BD3BE6400C6F4B8 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/usr/lib/libsqlite3.tbd; sourceTree = DEVELOPER_DIR; };
  98. D9753A421BD3BE6800C6F4B8 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; };
  99. D9753A441BD3BE6C00C6F4B8 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; };
  100. D9753A461BD3BE7000C6F4B8 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/AssetsLibrary.framework; sourceTree = DEVELOPER_DIR; };
  101. D9753A481BD3BE7600C6F4B8 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Accelerate.framework; sourceTree = DEVELOPER_DIR; };
  102. D9753A4A1BD3BE7B00C6F4B8 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; };
  103. D9753A4C1BD3BE8000C6F4B8 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; };
  104. D9753A4E1BD3BE8600C6F4B8 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; };
  105. D9753A501BD3BE8A00C6F4B8 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
  106. D9753A521BD3BE9D00C6F4B8 /* WebP.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebP.framework; path = ../Vendor/WebP.framework; sourceTree = "<group>"; };
  107. /* End PBXFileReference section */
  108. /* Begin PBXFrameworksBuildPhase section */
  109. D97539D91BD3BB6F00C6F4B8 /* Frameworks */ = {
  110. isa = PBXFrameworksBuildPhase;
  111. buildActionMask = 2147483647;
  112. files = (
  113. D9753A531BD3BE9D00C6F4B8 /* WebP.framework in Frameworks */,
  114. D9753A511BD3BE8A00C6F4B8 /* UIKit.framework in Frameworks */,
  115. D9753A4F1BD3BE8600C6F4B8 /* CoreFoundation.framework in Frameworks */,
  116. D9753A4D1BD3BE8000C6F4B8 /* ImageIO.framework in Frameworks */,
  117. D9753A4B1BD3BE7B00C6F4B8 /* QuartzCore.framework in Frameworks */,
  118. D9753A491BD3BE7600C6F4B8 /* Accelerate.framework in Frameworks */,
  119. D9753A471BD3BE7000C6F4B8 /* AssetsLibrary.framework in Frameworks */,
  120. D9753A451BD3BE6C00C6F4B8 /* MobileCoreServices.framework in Frameworks */,
  121. D9753A431BD3BE6800C6F4B8 /* libz.tbd in Frameworks */,
  122. D9753A411BD3BE6400C6F4B8 /* libsqlite3.tbd in Frameworks */,
  123. );
  124. runOnlyForDeploymentPostprocessing = 0;
  125. };
  126. /* End PBXFrameworksBuildPhase section */
  127. /* Begin PBXGroup section */
  128. D97539D31BD3BB6F00C6F4B8 = {
  129. isa = PBXGroup;
  130. children = (
  131. D97539F21BD3BBE600C6F4B8 /* YYWebImage */,
  132. D97539F11BD3BBE000C6F4B8 /* Supporting Files */,
  133. D97539DF1BD3BB6F00C6F4B8 /* Products */,
  134. );
  135. sourceTree = "<group>";
  136. };
  137. D97539DF1BD3BB6F00C6F4B8 /* Products */ = {
  138. isa = PBXGroup;
  139. children = (
  140. D97539DE1BD3BB6F00C6F4B8 /* YYWebImage.framework */,
  141. );
  142. name = Products;
  143. sourceTree = "<group>";
  144. };
  145. D97539F11BD3BBE000C6F4B8 /* Supporting Files */ = {
  146. isa = PBXGroup;
  147. children = (
  148. D9753A521BD3BE9D00C6F4B8 /* WebP.framework */,
  149. D9753A501BD3BE8A00C6F4B8 /* UIKit.framework */,
  150. D9753A4E1BD3BE8600C6F4B8 /* CoreFoundation.framework */,
  151. D9753A4C1BD3BE8000C6F4B8 /* ImageIO.framework */,
  152. D9753A4A1BD3BE7B00C6F4B8 /* QuartzCore.framework */,
  153. D9753A481BD3BE7600C6F4B8 /* Accelerate.framework */,
  154. D9753A461BD3BE7000C6F4B8 /* AssetsLibrary.framework */,
  155. D9753A441BD3BE6C00C6F4B8 /* MobileCoreServices.framework */,
  156. D9753A421BD3BE6800C6F4B8 /* libz.tbd */,
  157. D9753A401BD3BE6400C6F4B8 /* libsqlite3.tbd */,
  158. D97539EF1BD3BB9D00C6F4B8 /* Info.plist */,
  159. );
  160. name = "Supporting Files";
  161. sourceTree = "<group>";
  162. };
  163. D97539F21BD3BBE600C6F4B8 /* YYWebImage */ = {
  164. isa = PBXGroup;
  165. children = (
  166. D9753A161BD3BBE600C6F4B8 /* YYWebImage.h */,
  167. D9753A141BD3BBE600C6F4B8 /* YYImageCache.h */,
  168. D9753A151BD3BBE600C6F4B8 /* YYImageCache.m */,
  169. D9753A191BD3BBE600C6F4B8 /* YYWebImageOperation.h */,
  170. D9753A1A1BD3BBE600C6F4B8 /* YYWebImageOperation.m */,
  171. D9753A171BD3BBE600C6F4B8 /* YYWebImageManager.h */,
  172. D9753A181BD3BBE600C6F4B8 /* YYWebImageManager.m */,
  173. D9753A091BD3BBE600C6F4B8 /* Image */,
  174. D97539F31BD3BBE600C6F4B8 /* Cache */,
  175. D97539FC1BD3BBE600C6F4B8 /* Categories */,
  176. );
  177. name = YYWebImage;
  178. path = ../YYWebImage;
  179. sourceTree = "<group>";
  180. };
  181. D97539F31BD3BBE600C6F4B8 /* Cache */ = {
  182. isa = PBXGroup;
  183. children = (
  184. D97539F41BD3BBE600C6F4B8 /* YYCache.h */,
  185. D97539F51BD3BBE600C6F4B8 /* YYCache.m */,
  186. D97539FA1BD3BBE600C6F4B8 /* YYMemoryCache.h */,
  187. D97539FB1BD3BBE600C6F4B8 /* YYMemoryCache.m */,
  188. D97539F61BD3BBE600C6F4B8 /* YYDiskCache.h */,
  189. D97539F71BD3BBE600C6F4B8 /* YYDiskCache.m */,
  190. D97539F81BD3BBE600C6F4B8 /* YYKVStorage.h */,
  191. D97539F91BD3BBE600C6F4B8 /* YYKVStorage.m */,
  192. );
  193. path = Cache;
  194. sourceTree = "<group>";
  195. };
  196. D97539FC1BD3BBE600C6F4B8 /* Categories */ = {
  197. isa = PBXGroup;
  198. children = (
  199. D9753A051BD3BBE600C6F4B8 /* UIImage+YYWebImage.h */,
  200. D9753A061BD3BBE600C6F4B8 /* UIImage+YYWebImage.m */,
  201. D9753A071BD3BBE600C6F4B8 /* UIImageView+YYWebImage.h */,
  202. D9753A081BD3BBE600C6F4B8 /* UIImageView+YYWebImage.m */,
  203. D9753A031BD3BBE600C6F4B8 /* UIButton+YYWebImage.h */,
  204. D9753A041BD3BBE600C6F4B8 /* UIButton+YYWebImage.m */,
  205. D97539FF1BD3BBE600C6F4B8 /* CALayer+YYWebImage.h */,
  206. D9753A001BD3BBE600C6F4B8 /* CALayer+YYWebImage.m */,
  207. D9753A011BD3BBE600C6F4B8 /* MKAnnotationView+YYWebImage.h */,
  208. D9753A021BD3BBE600C6F4B8 /* MKAnnotationView+YYWebImage.m */,
  209. D97539FD1BD3BBE600C6F4B8 /* _YYWebImageSetter.h */,
  210. D97539FE1BD3BBE600C6F4B8 /* _YYWebImageSetter.m */,
  211. );
  212. path = Categories;
  213. sourceTree = "<group>";
  214. };
  215. D9753A091BD3BBE600C6F4B8 /* Image */ = {
  216. isa = PBXGroup;
  217. children = (
  218. D9753A0E1BD3BBE600C6F4B8 /* YYImage.h */,
  219. D9753A0F1BD3BBE600C6F4B8 /* YYImage.m */,
  220. D9753A0C1BD3BBE600C6F4B8 /* YYFrameImage.h */,
  221. D9753A0D1BD3BBE600C6F4B8 /* YYFrameImage.m */,
  222. D9753A121BD3BBE600C6F4B8 /* YYSpriteSheetImage.h */,
  223. D9753A131BD3BBE600C6F4B8 /* YYSpriteSheetImage.m */,
  224. D9753A101BD3BBE600C6F4B8 /* YYImageCoder.h */,
  225. D9753A111BD3BBE600C6F4B8 /* YYImageCoder.m */,
  226. D9753A0A1BD3BBE600C6F4B8 /* YYAnimatedImageView.h */,
  227. D9753A0B1BD3BBE600C6F4B8 /* YYAnimatedImageView.m */,
  228. );
  229. path = Image;
  230. sourceTree = "<group>";
  231. };
  232. /* End PBXGroup section */
  233. /* Begin PBXHeadersBuildPhase section */
  234. D97539DA1BD3BB6F00C6F4B8 /* Headers */ = {
  235. isa = PBXHeadersBuildPhase;
  236. buildActionMask = 2147483647;
  237. files = (
  238. D9753A2F1BD3BBE600C6F4B8 /* YYAnimatedImageView.h in Headers */,
  239. D9753A211BD3BBE600C6F4B8 /* YYMemoryCache.h in Headers */,
  240. D9753A251BD3BBE600C6F4B8 /* CALayer+YYWebImage.h in Headers */,
  241. D9753A1F1BD3BBE600C6F4B8 /* YYKVStorage.h in Headers */,
  242. D9753A291BD3BBE600C6F4B8 /* UIButton+YYWebImage.h in Headers */,
  243. D9753A2D1BD3BBE600C6F4B8 /* UIImageView+YYWebImage.h in Headers */,
  244. D9753A271BD3BBE600C6F4B8 /* MKAnnotationView+YYWebImage.h in Headers */,
  245. D9753A1D1BD3BBE600C6F4B8 /* YYDiskCache.h in Headers */,
  246. D9753A351BD3BBE600C6F4B8 /* YYImageCoder.h in Headers */,
  247. D9753A311BD3BBE600C6F4B8 /* YYFrameImage.h in Headers */,
  248. D9753A2B1BD3BBE600C6F4B8 /* UIImage+YYWebImage.h in Headers */,
  249. D9753A1B1BD3BBE600C6F4B8 /* YYCache.h in Headers */,
  250. D9753A3E1BD3BBE600C6F4B8 /* YYWebImageOperation.h in Headers */,
  251. D9753A391BD3BBE600C6F4B8 /* YYImageCache.h in Headers */,
  252. D9753A3B1BD3BBE600C6F4B8 /* YYWebImage.h in Headers */,
  253. D9753A3C1BD3BBE600C6F4B8 /* YYWebImageManager.h in Headers */,
  254. D9753A331BD3BBE600C6F4B8 /* YYImage.h in Headers */,
  255. D9753A371BD3BBE600C6F4B8 /* YYSpriteSheetImage.h in Headers */,
  256. D9753A231BD3BBE600C6F4B8 /* _YYWebImageSetter.h in Headers */,
  257. );
  258. runOnlyForDeploymentPostprocessing = 0;
  259. };
  260. /* End PBXHeadersBuildPhase section */
  261. /* Begin PBXNativeTarget section */
  262. D97539DD1BD3BB6F00C6F4B8 /* YYWebImage */ = {
  263. isa = PBXNativeTarget;
  264. buildConfigurationList = D97539EC1BD3BB6F00C6F4B8 /* Build configuration list for PBXNativeTarget "YYWebImage" */;
  265. buildPhases = (
  266. D97539D81BD3BB6F00C6F4B8 /* Sources */,
  267. D97539D91BD3BB6F00C6F4B8 /* Frameworks */,
  268. D97539DA1BD3BB6F00C6F4B8 /* Headers */,
  269. D97539DB1BD3BB6F00C6F4B8 /* Resources */,
  270. D97539DC1BD3BB6F00C6F4B8 /* ShellScript */,
  271. );
  272. buildRules = (
  273. );
  274. dependencies = (
  275. );
  276. name = YYWebImage;
  277. productName = YYWebImage;
  278. productReference = D97539DE1BD3BB6F00C6F4B8 /* YYWebImage.framework */;
  279. productType = "com.apple.product-type.bundle";
  280. };
  281. /* End PBXNativeTarget section */
  282. /* Begin PBXProject section */
  283. D97539D41BD3BB6F00C6F4B8 /* Project object */ = {
  284. isa = PBXProject;
  285. attributes = {
  286. LastUpgradeCheck = 0710;
  287. ORGANIZATIONNAME = ibireme;
  288. TargetAttributes = {
  289. D97539DD1BD3BB6F00C6F4B8 = {
  290. CreatedOnToolsVersion = 7.0.1;
  291. };
  292. };
  293. };
  294. buildConfigurationList = D97539D71BD3BB6F00C6F4B8 /* Build configuration list for PBXProject "YYWebImage-Static" */;
  295. compatibilityVersion = "Xcode 3.2";
  296. developmentRegion = English;
  297. hasScannedForEncodings = 0;
  298. knownRegions = (
  299. en,
  300. );
  301. mainGroup = D97539D31BD3BB6F00C6F4B8;
  302. productRefGroup = D97539DF1BD3BB6F00C6F4B8 /* Products */;
  303. projectDirPath = "";
  304. projectRoot = "";
  305. targets = (
  306. D97539DD1BD3BB6F00C6F4B8 /* YYWebImage */,
  307. );
  308. };
  309. /* End PBXProject section */
  310. /* Begin PBXResourcesBuildPhase section */
  311. D97539DB1BD3BB6F00C6F4B8 /* Resources */ = {
  312. isa = PBXResourcesBuildPhase;
  313. buildActionMask = 2147483647;
  314. files = (
  315. );
  316. runOnlyForDeploymentPostprocessing = 0;
  317. };
  318. /* End PBXResourcesBuildPhase section */
  319. /* Begin PBXShellScriptBuildPhase section */
  320. D97539DC1BD3BB6F00C6F4B8 /* ShellScript */ = {
  321. isa = PBXShellScriptBuildPhase;
  322. buildActionMask = 2147483647;
  323. files = (
  324. );
  325. inputPaths = (
  326. );
  327. outputPaths = (
  328. );
  329. runOnlyForDeploymentPostprocessing = 0;
  330. shellPath = /usr/bin/python;
  331. shellScript = "# TAG: BUILD SCRIPT (do not remove this comment)\n# Build script generated using https://github.com/kstenerud/iOS-Universal-Framework Mk 8 (beta 2012-06-16)\nimport logging\n\n\n##############################################################################\n#\n# Configuration\n#\n##############################################################################\n\n# Select which kind of framework to build.\n#\n# Note: Due to issues with Xcode's build process, if you select\n# 'embeddedframework', it will still show the regular framework\n# (as a symlink) along side of the embedded framework. Be sure to\n# instruct your users to copy/move the embedded framework in this case!\n#\n# If your framework contains resources such as images, nibs, momds, plists,\n# zipfiles and such, choose 'embeddedframework'.\n#\n# If your framework contains no resources, choose 'framework'.\n#\nconfig_framework_type = 'framework'\n#config_framework_type = 'embeddedframework'\n\n# Open the build directory in Finder when the universal framework is\n# successfully built.\n#\n# This value can be overridden by setting the UFW_OPEN_BUILD_DIR env variable\n# to True or False.\n#\n# Recommended setting: True\n#\nconfig_open_build_dir = True\n\n# If true, ensures that all public headers are stored in the framework under\n# the same directory hierarchy as they were in the source tree.\n#\n# Xcode by default places all headers at the same top level, but every other\n# build tool in the known universe preserves directory structure. For simple\n# libraries it doesn't really matter much, but for ports of existing software\n# packages or for bigger libraries, it makes sense to have more structure.\n#\n# The default is set to \"False\" since that's what most Xcode users are used to.\n#\n# Recommended setting: True for deep hierarchy projects, False otherwise.\n#\nconfig_deep_header_hierarchy = False\n\n# Specify where the top of the public header hierarchy is. This path is\n# relative to the project's dir (PROJECT_DIR). You can reference environment\n# variables using templating syntax (e.g. \"${TARGET_NAME}/Some/Subdir\")\n#\n# NOTE: Only used if config_deep_header_hierarchy is True.\n#\n# If this is set to None, the script will attempt to figure out for itself\n# where the top of the header hierarchy is by looking for common path prefixes\n# in the public header files. This process can fail if:\n# - You only have one public header file.\n# - Your source header files don't all have a common root.\n#\n# A common approach is to use \"${TARGET_NAME}\", working under the assumption\n# that all of your header files share the common root of a directory under\n# your project with the same name as your target (which is the Xcode default).\n#\n# Recommended setting: \"${TARGET_NAME}\"\n#\nconfig_deep_header_top = \"${TARGET_NAME}\"\n\n# Warn when \"DerivedData\" is detected in any of the header, library, or\n# framework search paths. In almost all cases, references to directories under\n# DerivedData are added as a result of an Xcode bug and must be manually\n# removed.\n#\n# Recommended setting: True\n#\nconfig_warn_derived_data = True\n\n# Warn if no headers were marked public in this framework.\n#\n# Recommended setting: True\n#\nconfig_warn_no_public_headers = True\n\n# Cause the build to fail if any warnings are issued.\n#\n# Recommended setting: True\n#\nconfig_fail_on_warnings = True\n\n# Minimum log level\n#\n# Recommended setting: logging.INFO\n#\nconfig_log_level = logging.INFO\n\n\n##############################################################################\n#\n# Don't touch anything below here unless you know what you're doing.\n#\n##############################################################################\n\nimport collections\nimport json\nimport os\nimport re\nimport shlex\nimport shutil\nimport string\nimport subprocess\nimport sys\nimport time\nimport traceback\n\n\n##############################################################################\n#\n# Globals\n#\n##############################################################################\n\nlog = logging.getLogger('UFW')\n\nissued_warnings = False\n\n\n##############################################################################\n#\n# Classes\n#\n##############################################################################\n\n# Allows the slave build to communicate with the master build.\n#\nclass BuildState:\n\n def __init__(self):\n self.reload()\n\n def reset(self):\n self.slave_platform = None\n self.slave_architectures = []\n self.slave_linked_archive_paths = []\n self.slave_built_fw_path = None\n self.slave_built_embedded_fw_path = None\n\n def set_slave_properties(self, architectures,\n linked_archive_paths,\n built_fw_path,\n built_embedded_fw_path):\n self.slave_platform = os.environ['PLATFORM_NAME']\n self.slave_architectures = architectures\n self.slave_linked_archive_paths = linked_archive_paths\n self.slave_built_fw_path = built_fw_path\n self.slave_built_embedded_fw_path = built_embedded_fw_path\n\n def get_save_path(self):\n return os.path.join(os.environ['PROJECT_TEMP_DIR'], \"ufw_build_state.json\")\n\n def persist(self):\n filename = self.get_save_path()\n parent = os.path.dirname(filename)\n if not os.path.isdir(parent):\n os.makedirs(parent)\n with open(filename, \"w\") as f:\n f.write(json.dumps(self.__dict__))\n\n def reload(self):\n self.reset()\n filename = self.get_save_path()\n if os.path.exists(filename):\n with open(filename, \"r\") as f:\n new_dict = json.loads(f.read())\n if new_dict is not None:\n self.__dict__ = dict(self.__dict__.items() + new_dict.items())\n\n\n# Holds information about the current project and build environment.\n#\nclass Project:\n\n def __init__(self, filename):\n sourcecode_types = ['sourcecode.c.c',\n 'sourcecode.c.objc',\n 'sourcecode.cpp.cpp',\n 'sourcecode.cpp.objcpp',\n 'sourcecode.asm.asm',\n 'sourcecode.asm.llvm',\n 'sourcecode.nasm']\n\n self.build_state = BuildState()\n self.project_data = self.load_from_file(filename)\n self.target = filter(lambda x: x['name'] == os.environ['TARGET_NAME'], self.project_data['targets'])[0]\n self.public_headers = self.get_build_phase_files('PBXHeadersBuildPhase', lambda x: x.get('settings', False) and x['settings'].get('ATTRIBUTES', False) and 'Public' in x['settings']['ATTRIBUTES'])\n self.static_libraries = self.get_build_phase_files('PBXFrameworksBuildPhase', lambda x: x['fileRef']['fileType'] == 'archive.ar' and x['fileRef']['sourceTree'] not in ['DEVELOPER_DIR', 'SDKROOT'])\n self.static_frameworks = self.get_build_phase_files('PBXFrameworksBuildPhase', lambda x: x['fileRef']['fileType'] == 'wrapper.framework' and x['fileRef']['sourceTree'] not in ['DEVELOPER_DIR', 'SDKROOT'])\n self.compilable_sources = self.get_build_phase_files('PBXSourcesBuildPhase', lambda x: x['fileRef']['fileType'] in sourcecode_types)\n self.header_paths = [os.path.join(*x['pathComponents']) for x in self.public_headers]\n\n self.headers_dir = os.path.join(os.environ['TARGET_BUILD_DIR'], os.environ['CONTENTS_FOLDER_PATH'], 'Headers')\n self.libtool_path = os.path.join(os.environ['DT_TOOLCHAIN_DIR'], 'usr', 'bin', 'libtool')\n self.project_filename = os.path.join(os.environ['PROJECT_FILE_PATH'], \"project.pbxproj\")\n self.local_exe_path = os.path.join(os.environ['TARGET_BUILD_DIR'], os.environ['EXECUTABLE_PATH'])\n self.local_architectures = os.environ['ARCHS'].split(' ')\n self.local_built_fw_path = os.path.join(os.environ['TARGET_BUILD_DIR'], os.environ['WRAPPER_NAME'])\n self.local_built_embedded_fw_path = os.path.splitext(self.local_built_fw_path)[0] + \".embeddedframework\"\n self.local_linked_archive_paths = [self.get_linked_ufw_archive_path(arch) for arch in self.local_architectures]\n self.local_platform = os.environ['PLATFORM_NAME']\n other_platforms = os.environ['SUPPORTED_PLATFORMS'].split(' ')\n other_platforms.remove(self.local_platform)\n self.other_platform = other_platforms[0]\n\n sdk_name = os.environ['SDK_NAME']\n if not sdk_name.startswith(self.local_platform):\n raise Exception(\"%s didn't start with %s\" % (sdk_name, self.local_platform))\n self.sdk_version = sdk_name[len(self.local_platform):]\n\n # Load an Xcode project file.\n #\n def load_from_file(self, filename):\n project_file = json.loads(subprocess.check_output([\"plutil\", \"-convert\", \"json\", \"-o\", \"-\", filename]))\n all_objects = project_file['objects']\n del project_file['objects']\n for obj in all_objects.values():\n self.fix_keys(obj)\n self.unpack_objects(self.build_dereference_list(all_objects, None, None, project_file))\n self.unpack_objects(self.build_dereference_list(all_objects, None, None, all_objects.values()))\n project_data = project_file['rootObject']\n self.build_full_paths(project_data, splitpath(os.environ['SOURCE_ROOT']))\n return project_data\n\n def is_key(self, obj): \n return isinstance(obj, basestring) and len(obj) == 24 and re.search('^[0-9a-fA-F]+$', obj) is not None\n \n def build_dereference_list(self, all_objects, parent, key, obj):\n deref_list = []\n if self.is_key(obj):\n dereferenced = all_objects.get(obj, obj)\n if dereferenced is not obj:\n deref_list.append((parent, key, obj, dereferenced))\n elif isinstance(obj, collections.Mapping):\n for k, v in obj.iteritems():\n deref_list += self.build_dereference_list(all_objects, obj, k, v)\n elif isinstance(obj, collections.Iterable) and not isinstance(obj, basestring):\n for item in obj:\n deref_list += self.build_dereference_list(all_objects, obj, None, item)\n return deref_list\n \n def unpack_objects(self, deref_list):\n for parent, key, orig, obj in deref_list:\n if key is None:\n parent.remove(orig)\n parent.append(obj)\n else:\n parent[key] = obj\n\n # Store the full path, separated into components, to a node inside the node\n # as \"pathComponents\". Also recurse into that node if it's a group.\n #\n def build_full_paths(self, node, base_path):\n # Some nodes are relative to a different source tree, specified as an\n # env variable.\n if node.get('sourceTree', '<group>') != '<group>':\n new_base_path = os.environ.get(node['sourceTree'], None)\n if new_base_path:\n base_path = splitpath(new_base_path)\n # Add the current node's path, if any.\n if node.get('path', False):\n base_path = base_path + splitpath(node['path'])\n node['pathComponents'] = base_path\n # Recurse if this is a group.\n if node['isa'] == 'PBXGroup':\n for child in node['children']:\n self.build_full_paths(child, base_path)\n elif node['isa'] == 'PBXProject':\n self.build_full_paths(node['mainGroup'], base_path)\n self.build_full_paths(node['productRefGroup'], base_path)\n for child in node['targets']:\n self.build_full_paths(child, base_path)\n projectRefs = node.get('projectReferences', None)\n if projectRefs is not None:\n for child in projectRefs[0].values():\n self.build_full_paths(child, base_path)\n\n # Fix up any inconvenient keys.\n #\n def fix_keys(self, obj):\n key_remappings = {'lastKnownFileType': 'fileType', 'explicitFileType': 'fileType'}\n for key in list(set(key_remappings.keys()) & set(obj.keys())):\n obj[key_remappings[key]] = obj[key]\n del obj[key]\n\n # Get the files from a build phase.\n #\n def get_build_phase_files(self, build_phase_name, filter_func):\n build_phase = filter(lambda x: x['isa'] == build_phase_name, self.target['buildPhases'])[0]\n build_files = filter(filter_func, build_phase['files'])\n return [x['fileRef'] for x in build_files]\n\n # Get the truncated paths of all headers that start with the specified\n # relative path. Paths are read and returned as fully separated lists.\n # e.g. ['Some', 'Path', 'To', 'A', 'Header'] with relative_path of\n # ['Some', 'Path'] gets truncated to ['To', 'A', 'Header']\n #\n def movable_headers_relative_to(self, relative_path):\n rel_path_length = len(relative_path)\n result = filter(lambda path: len(path) >= rel_path_length and\n path[:rel_path_length] == relative_path, self.header_paths)\n return [path[rel_path_length:] for path in result]\n\n # Get the full path to where a linkable archive (library or framework)\n # is supposed to be.\n #\n def get_linked_archive_path(self, architecture):\n return os.path.join(os.environ['OBJECT_FILE_DIR_%s' % os.environ['CURRENT_VARIANT']],\n architecture,\n os.environ['EXECUTABLE_NAME'])\n\n # Get the full path to our custom linked archive of the project.\n #\n def get_linked_ufw_archive_path(self, architecture):\n return self.get_linked_archive_path(architecture) + \".ufwbuild\"\n\n # Get the full path to the executable of an archive.\n #\n def get_exe_path(self, node):\n path = os.path.join(*node['pathComponents'])\n if node['fileType'] == 'wrapper.framework':\n # Frameworks are directories, so go one deeper\n path = os.path.join(path, os.path.splitext(node['pathComponents'][-1])[0])\n return path\n\n # Get the path to the directory containing the archive.\n #\n def get_containing_path(self, node):\n return os.path.join(*node['pathComponents'])\n \n def get_archive_search_paths(self):\n log.info(\"Search paths = %s\" % set([self.get_containing_path(fw) for fw in self.static_frameworks] + [self.get_containing_path(fw) for fw in self.static_libraries]))\n return set([self.get_containing_path(fw) for fw in self.static_frameworks] + [self.get_containing_path(fw) for fw in self.static_libraries])\n\n # Command to link all objects of a single architecture.\n #\n def get_single_arch_link_command(self, architecture):\n cmd = [self.libtool_path,\n \"-static\",\n \"-arch_only\", architecture,\n \"-syslibroot\", os.environ['SDKROOT'],\n \"-L%s\" % os.environ['TARGET_BUILD_DIR'],\n \"-filelist\", os.environ['LINK_FILE_LIST_%s_%s' % (os.environ['CURRENT_VARIANT'], architecture)]]\n if os.environ.get('OTHER_LDFLAGS', False):\n cmd += [os.environ['OTHER_LDFLAGS']]\n if os.environ.get('WARNING_LDFLAGS', False):\n cmd += [os.environ['WARNING_LDFLAGS']]\n# cmd += [\"-L%s\" % libpath for libpath in self.get_archive_search_paths()]\n cmd += [self.get_exe_path(fw) for fw in self.static_frameworks]\n cmd += [self.get_exe_path(lib) for lib in self.static_libraries]\n cmd += [\"-o\", self.get_linked_ufw_archive_path(architecture)]\n return cmd\n\n # Command to link all local architectures for the current configuration\n # into an archive. This reads all libraries + the UFW-built archives and\n # overwrites the final product.\n #\n def get_local_archs_link_command(self):\n cmd = [self.libtool_path,\n \"-static\"]\n cmd += self.local_linked_archive_paths\n cmd += [self.get_exe_path(fw) for fw in self.static_frameworks]\n cmd += [self.get_exe_path(lib) for lib in self.static_libraries]\n cmd += [\"-o\", os.path.join(os.environ['TARGET_BUILD_DIR'], os.environ['EXECUTABLE_PATH'])]\n return cmd\n\n # Command to link all architectures into a universal archive.\n # This reads all UFW-built archives and overwrites the final product.\n #\n def get_all_archs_link_command(self):\n cmd = [self.libtool_path,\n \"-static\"]\n cmd += self.local_linked_archive_paths + self.build_state.slave_linked_archive_paths\n cmd += [\"-o\", os.path.join(os.environ['TARGET_BUILD_DIR'], os.environ['EXECUTABLE_PATH'])]\n return cmd\n\n # Build up an environment for the slave process. This uses BUILD_ROOT\n # and TEMP_ROOT to convert all environment variables to values suitable\n # for the slave build environment so that xcodebuild doesn't try to build\n # in the project directory under \"build\".\n #\n def get_slave_environment(self):\n ignored = ['LD_MAP_FILE_PATH',\n 'HEADER_SEARCH_PATHS',\n 'LIBRARY_SEARCH_PATHS',\n 'FRAMEWORK_SEARCH_PATHS']\n build_root = os.environ['BUILD_ROOT']\n temp_root = os.environ['TEMP_ROOT']\n newenv = {}\n for key, value in os.environ.items():\n if key not in ignored and not key.startswith('LINK_FILE_LIST_') and not key.startswith('LD_DEPENDENCY_'):\n if build_root in value or temp_root in value:\n newenv[key] = value.replace(self.local_platform, self.other_platform)\n return newenv\n\n # Command to invoke xcodebuild on the slave platform.\n #\n def get_slave_project_build_command(self):\n cmd = [\"xcodebuild\",\n \"-project\",\n os.environ['PROJECT_FILE_PATH'],\n \"-target\",\n os.environ['TARGET_NAME'],\n \"-configuration\",\n os.environ['CONFIGURATION'],\n \"-sdk\",\n self.other_platform + self.sdk_version]\n cmd += [\"%s=%s\" % (key, value) for key, value in self.get_slave_environment().items()]\n cmd += [\"UFW_MASTER_PLATFORM=\" + os.environ['PLATFORM_NAME']]\n cmd += [os.environ['ACTION']]\n return cmd\n\n\n\n##############################################################################\n#\n# Utility Functions\n#\n##############################################################################\n\n# Split a path into a list of path components.\n#\ndef splitpath(path, maxdepth=20):\n (head, tail) = os.path.split(path)\n return splitpath(head, maxdepth - 1) + [tail] if maxdepth and head and head != path else [ head or tail ]\n\n# Remove all subdirectories under a path.\n#\ndef remove_subdirs(path, ignore_files):\n if os.path.exists(path):\n for filename in filter(lambda x: x not in ignore_files, os.listdir(path)):\n fullpath = os.path.join(path, filename)\n if os.path.isdir(fullpath):\n log.info(\"Remove %s\" % fullpath)\n shutil.rmtree(fullpath)\n\n# Make whatever parent paths are necessary for a path to exist.\n#\ndef ensure_path_exists(path):\n if not os.path.isdir(path):\n os.makedirs(path)\n\n# Make whatever parent paths are necessary for a path's parent to exist.\n#\ndef ensure_parent_exists(path):\n parent = os.path.dirname(path)\n if not os.path.isdir(parent):\n os.makedirs(parent)\n\n# Remove a file or dir if it exists.\n#\ndef remove_path(path):\n if os.path.exists(path):\n if os.path.isdir(path) and not os.path.islink(path):\n shutil.rmtree(path)\n else:\n os.remove(path)\n\n# Move a file or dir, replacing the destination if it exists.\n#\ndef move_file(src, dst):\n if src == dst or not os.path.isfile(src):\n return\n log.info(\"Move %s to %s\" % (src, dst))\n ensure_parent_exists(dst)\n remove_path(dst)\n shutil.move(src, dst)\n\n# Copy a file or dir, replacing the destination if it exists already.\n#\ndef copy_overwrite(src, dst):\n if src != dst:\n remove_path(dst)\n ensure_parent_exists(dst)\n shutil.copytree(src, dst, symlinks=True)\n\n# Attempt to symlink link_path -> link_to.\n# link_to must be a path relative to link_path's parent and must exist.\n# If link_path already exists, do nothing.\n#\ndef attempt_symlink(link_path, link_to):\n # Only allow linking to an existing file\n os.stat(os.path.abspath(os.path.join(link_path, \"..\", link_to)))\n\n # Only make the link if it hasn't already been made\n if not os.path.exists(link_path):\n log.info(\"Symlink %s -> %s\" % (link_path, link_to))\n os.symlink(link_to, link_path)\n\n# Takes the last entry in an array-based path and returns a normal path\n# relative to base_path.\n#\ndef top_level_file_path(base_path, path_list):\n return os.path.join(base_path, os.path.split(path_list[-1])[-1])\n\n# Takes all entries in an array-based path and returns a normal path\n# relative to base_path.\n#\ndef full_file_path(base_path, path_list):\n return os.path.join(*([base_path] + path_list))\n\n# Print a command before executing it.\n# Also print out all output from the command to STDOUT.\n#\ndef print_and_call(cmd):\n log.info(\"Cmd \" + \" \".join(cmd))\n p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)\n result = p.communicate()[0]\n if len(result) > 0:\n log.info(result)\n if p.returncode != 0:\n raise subprocess.CalledProcessError(p.returncode, cmd)\n\n# Special print-and-call command for the slave build that strips out\n# xcodebuild's spammy list of environment variables.\n#\ndef print_and_call_slave_build(cmd, other_platform):\n separator = '=== BUILD NATIVE TARGET '\n p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)\n result = p.communicate()[0].split(separator)\n if len(result) == 1:\n result = result[0]\n else:\n result = separator + result[1]\n log.info(\"Cmd \" + \" \".join(cmd) + \"\\n\" + result)\n if p.returncode != 0:\n raise subprocess.CalledProcessError(p.returncode, cmd)\n\n# Issue a warning and record that a warning has been issued.\n#\ndef issue_warning(msg, *args, **kwargs):\n global issued_warnings\n issued_warnings = True\n log.warn(msg, *args, **kwargs)\n\n\n\n##############################################################################\n#\n# Main Application\n#\n##############################################################################\n\n# Check if we are running as master.\n#\ndef is_master():\n return os.environ.get('UFW_MASTER_PLATFORM', os.environ['PLATFORM_NAME']) == os.environ['PLATFORM_NAME']\n\n# DerivedData should almost never appear in any framework, library, or header\n# search paths. However, Xcode will sometimes add them in, so we check to make\n# sure.\n#\ndef check_for_derived_data_in_search_paths(project):\n search_path_keys = [\"FRAMEWORK_SEARCH_PATHS\", \"LIBRARY_SEARCH_PATHS\", \"HEADER_SEARCH_PATHS\"]\n build_configs = project.target['buildConfigurationList']['buildConfigurations']\n build_settings = filter(lambda x: x['name'] == os.environ['CONFIGURATION'], build_configs)[0]['buildSettings']\n \n found_something = False\n for path_key in filter(lambda x: x in build_settings, search_path_keys):\n path = build_settings[path_key]\n if \"DerivedData\" in path:\n found_something = True\n log.warn(\"Derived data in %s\" % path)\n issue_warning(\"'%s' contains reference to 'DerivedData'.\" % path_key)\n if found_something:\n log.warn(\"Check your build settings and remove any entries that contain paths inside the DerivedData folder.\")\n log.warn(\"Otherwise you can disable this warning by changing 'config_warn_derived_data' in this script.\")\n\n# Link local architectures into their respective archives.\n#\ndef link_local_archs(project):\n for arch in project.local_architectures:\n print_and_call(project.get_single_arch_link_command(arch))\n\n# Link only the local architectures into the final product, not the slave\n# architectures. For iphoneos, this will be armv6, armv7. For simulator, this\n# will be i386.\n#\ndef link_combine_local_archs(project):\n print_and_call(project.get_local_archs_link_command())\n\n# Link all architectures into the final product.\n#\ndef link_combine_all_archs(project):\n print_and_call(project.get_all_archs_link_command())\n\n# Check if we should open the build directory after a successful build.\n#\ndef should_open_build_dir():\n env_setting = os.environ.get('UFW_OPEN_BUILD_DIR', None)\n if env_setting is not None:\n return env_setting\n\n return config_open_build_dir\n\n# Open the build dir in Finder.\n#\ndef open_build_dir():\n print_and_call(['open', os.environ['TARGET_BUILD_DIR']])\n\n# Check if the build was started by selecting \"Archive\" under \"Product\" in\n# Xcode.\n#\ndef is_archive_build():\n # ACTION is always 'build', but perhaps Apple will fix this someday?\n archive_build = os.environ['ACTION'] == 'archive'\n\n if not archive_build:\n # This can be passed in as an env variable when building from command line.\n archive_build = os.environ.get('UFW_ACTION', None) == 'archive'\n\n build_dir = splitpath(os.environ['BUILD_DIR'])\n if not archive_build:\n # This partial path is used when you select \"archive\" from within Xcode.\n archive_build = 'ArchiveIntermediates' in build_dir\n\n # It only counts as a full archive build if this target is being built into\n # its own build dir (not being built as a dependency of another target)\n if archive_build:\n archive_build = os.environ['TARGET_NAME'] in build_dir\n \n return archive_build\n\n# Xcode by default throws all public headers into the top level directory.\n# This function moves them to their expected deep hierarchy.\n#\ndef build_deep_header_hierarchy(project):\n header_path_top = config_deep_header_top\n if not header_path_top:\n header_path_top = os.path.commonprefix(project.header_paths)\n else:\n header_path_top = splitpath(header_path_top)\n\n built_headers_path = os.path.join(os.environ['TARGET_BUILD_DIR'], os.environ['PUBLIC_HEADERS_FOLDER_PATH'])\n movable_headers = project.movable_headers_relative_to(header_path_top)\n\n # Remove subdirs if they only contain files that have been rebuilt\n ignore_headers = filter(lambda x: not os.path.isfile(top_level_file_path(built_headers_path, x)), movable_headers)\n remove_subdirs(built_headers_path, [file[0] for file in ignore_headers])\n\n # Move rebuilt headers into their proper subdirs\n for header in movable_headers:\n move_file(top_level_file_path(built_headers_path, header), full_file_path(built_headers_path, header))\n\n# Add all symlinks needed to make a full framework structure:\n#\n# MyFramework.framework\n# |-- MyFramework -> Versions/Current/MyFramework\n# |-- Headers -> Versions/Current/Headers\n# |-- Resources -> Versions/Current/Resources\n# `-- Versions\n# |-- A\n# | |-- MyFramework\n# | |-- Headers\n# | | `-- MyFramework.h\n# | `-- Resources\n# | |-- Info.plist\n# | |-- MyViewController.nib\n# | `-- en.lproj\n# | `-- InfoPlist.strings\n# `-- Current -> A\n#\ndef add_symlinks_to_framework(project):\n base_dir = project.local_built_fw_path\n attempt_symlink(os.path.join(base_dir, \"Versions\", \"Current\"), os.environ['FRAMEWORK_VERSION'])\n if os.path.isdir(os.path.join(base_dir, \"Versions\", \"Current\", \"Headers\")):\n attempt_symlink(os.path.join(base_dir, \"Headers\"), os.path.join(\"Versions\", \"Current\", \"Headers\"))\n if os.path.isdir(os.path.join(base_dir, \"Versions\", \"Current\", \"Resources\")):\n attempt_symlink(os.path.join(base_dir, \"Resources\"), os.path.join(\"Versions\", \"Current\", \"Resources\"))\n attempt_symlink(os.path.join(base_dir, os.environ['EXECUTABLE_NAME']), os.path.join(\"Versions\", \"Current\", os.environ['EXECUTABLE_NAME']))\n\n# Build an embedded framework structure.\n# An embedded framework contains the actual framework, plus a \"Resources\"\n# directory containing symlinks to all resources found in the actual framework,\n# with the exception of \"Info.plist\" and anything ending in \".lproj\":\n#\n# MyFramework.embeddedframework\n# |-- MyFramework.framework\n# | |-- MyFramework -> Versions/Current/MyFramework\n# | |-- Headers -> Versions/Current/Headers\n# | |-- Resources -> Versions/Current/Resources\n# | `-- Versions\n# | |-- A\n# | | |-- MyFramework\n# | | |-- Headers\n# | | | `-- MyFramework.h\n# | | `-- Resources\n# | | |-- Info.plist\n# | | |-- MyViewController.nib\n# | | `-- en.lproj\n# | | `-- InfoPlist.strings\n# | `-- Current -> A\n# `-- Resources\n# `-- MyViewController.nib -> ../MyFramework.framework/Resources/MyViewController.nib\n#\ndef build_embedded_framework(project):\n fw_path = project.local_built_fw_path\n embedded_path = project.local_built_embedded_fw_path\n fw_name = os.environ['WRAPPER_NAME']\n\n if (os.path.islink(fw_path)):\n # If the framework path is a link, the build result already in embeddedframework.\n # Just recreate embeddedframework's Resources\n remove_path(os.path.join(embedded_path, \"Resources\"))\n else:\n remove_path(embedded_path)\n ensure_path_exists(embedded_path)\n copy_overwrite(fw_path, os.path.join(embedded_path, fw_name))\n\n # Create embeddedframework's Resources \n ensure_path_exists(os.path.join(embedded_path, \"Resources\"))\n symlink_source = os.path.join(\"..\", fw_name, \"Resources\")\n symlink_path = os.path.join(embedded_path, \"Resources\")\n if os.path.isdir(os.path.join(fw_path, \"Resources\")):\n for file in filter(lambda x: x != \"Info.plist\" and not x.endswith(\".lproj\"), os.listdir(os.path.join(fw_path, \"Resources\"))):\n attempt_symlink(os.path.join(symlink_path, file), os.path.join(symlink_source, file))\n\n # Remove the normal framework and replace it with a symlink to the copy\n # in the embedded framework. This is needed because Xcode runs its strip\n # phase AFTER the script runs.\n embed_fw_wrapper = os.path.splitext(os.environ['WRAPPER_NAME'])[0] + \".embeddedframework\"\n remove_path(fw_path)\n attempt_symlink(fw_path, os.path.join(embed_fw_wrapper, os.environ['WRAPPER_NAME']))\n\n\n# Run the build process in slave mode to build the other configuration\n# (device/simulator).\n#\ndef run_slave_build(project):\n print_and_call_slave_build(project.get_slave_project_build_command(), project.other_platform)\n\n# Run the build process.\n#\ndef run_build():\n project = Project(os.path.join(os.environ['PROJECT_FILE_PATH'], \"project.pbxproj\"))\n\n # Issue warnings only if we're master.\n if is_master():\n if len(project.compilable_sources) == 0:\n raise Exception(\"No compilable sources found. Please add at least one source file to build target %s.\" % os.environ['TARGET_NAME'])\n\n if config_warn_derived_data:\n check_for_derived_data_in_search_paths(project)\n if config_warn_no_public_headers and len(project.public_headers) == 0:\n issue_warning('No headers in build target %s were marked public. Please move at least one header to \"Public\" in the \"Copy Headers\" build phase.' % os.environ['TARGET_NAME'])\n\n # Only build slave if this is an archive build.\n if is_archive_build():\n if is_master():\n log.debug(\"Building as MASTER\")\n # The slave-side linker tries to include this (nonexistent) path as\n # a library path.\n ensure_path_exists(project.get_slave_environment()['BUILT_PRODUCTS_DIR'])\n project.build_state.persist()\n run_slave_build(project)\n project.build_state.reload()\n else:\n log.debug(\"Building as SLAVE\")\n project.build_state.reload()\n project.build_state.set_slave_properties(project.local_architectures,\n project.local_linked_archive_paths,\n project.local_built_fw_path,\n project.local_built_embedded_fw_path)\n project.build_state.persist()\n\n link_local_archs(project)\n \n # Only do a universal binary when building an archive.\n if is_archive_build() and is_master():\n link_combine_all_archs(project)\n else:\n link_combine_local_archs(project)\n\n if config_deep_header_hierarchy:\n build_deep_header_hierarchy(project)\n\n add_symlinks_to_framework(project)\n \n if is_master():\n if config_framework_type == 'embeddedframework':\n build_embedded_framework(project)\n elif config_framework_type != 'framework':\n raise Exception(\"%s: Unknown framework type for config_framework_type\" % config_framework_type)\n\n\nif __name__ == \"__main__\":\n log_handler = logging.StreamHandler()\n log_handler.setFormatter(logging.Formatter(\"%(name)s (\" + os.environ['PLATFORM_NAME'] + \"): %(levelname)s: %(message)s\"))\n log.addHandler(log_handler)\n log.setLevel(config_log_level)\n\n error_code = 0\n prefix = \"M\" if is_master() else \"S\"\n log_handler.setFormatter(logging.Formatter(\"%(name)s (\" + prefix + \" \" + os.environ['PLATFORM_NAME'] + \"): %(levelname)s: %(message)s\"))\n\n log.debug(\"Begin build process\")\n\n if config_deep_header_top:\n config_deep_header_top = string.Template(config_deep_header_top).substitute(os.environ)\n\n try:\n run_build()\n if issued_warnings:\n if config_fail_on_warnings:\n error_code = 1\n log.warn(\"Build completed with warnings\")\n else:\n log.info(\"Build completed\")\n if not is_archive_build():\n log.info(\"Note: This is *NOT* a universal framework build. To build as a universal framework, do an archive build.\")\n log.info(\"To do an archive build from command line, use \\\"xcodebuild -configuration Release UFW_ACTION=archive clean build\\\"\")\n except Exception:\n traceback.print_exc(file=sys.stdout)\n error_code = 1\n log.error(\"Build failed\")\n finally:\n if error_code == 0 and is_archive_build() and is_master():\n log.info(\"Built framework is in \" + os.environ['TARGET_BUILD_DIR'])\n if should_open_build_dir():\n open_build_dir()\n sys.exit(error_code)\n";
  332. showEnvVarsInLog = 0;
  333. };
  334. /* End PBXShellScriptBuildPhase section */
  335. /* Begin PBXSourcesBuildPhase section */
  336. D97539D81BD3BB6F00C6F4B8 /* Sources */ = {
  337. isa = PBXSourcesBuildPhase;
  338. buildActionMask = 2147483647;
  339. files = (
  340. D9753A2A1BD3BBE600C6F4B8 /* UIButton+YYWebImage.m in Sources */,
  341. D9753A281BD3BBE600C6F4B8 /* MKAnnotationView+YYWebImage.m in Sources */,
  342. D9753A3A1BD3BBE600C6F4B8 /* YYImageCache.m in Sources */,
  343. D9753A201BD3BBE600C6F4B8 /* YYKVStorage.m in Sources */,
  344. D9753A341BD3BBE600C6F4B8 /* YYImage.m in Sources */,
  345. D9753A221BD3BBE600C6F4B8 /* YYMemoryCache.m in Sources */,
  346. D9753A361BD3BBE600C6F4B8 /* YYImageCoder.m in Sources */,
  347. D9753A301BD3BBE600C6F4B8 /* YYAnimatedImageView.m in Sources */,
  348. D9753A2C1BD3BBE600C6F4B8 /* UIImage+YYWebImage.m in Sources */,
  349. D9753A261BD3BBE600C6F4B8 /* CALayer+YYWebImage.m in Sources */,
  350. D9753A381BD3BBE600C6F4B8 /* YYSpriteSheetImage.m in Sources */,
  351. D9753A1C1BD3BBE600C6F4B8 /* YYCache.m in Sources */,
  352. D9753A1E1BD3BBE600C6F4B8 /* YYDiskCache.m in Sources */,
  353. D9753A3D1BD3BBE600C6F4B8 /* YYWebImageManager.m in Sources */,
  354. D9753A321BD3BBE600C6F4B8 /* YYFrameImage.m in Sources */,
  355. D9753A241BD3BBE600C6F4B8 /* _YYWebImageSetter.m in Sources */,
  356. D9753A3F1BD3BBE600C6F4B8 /* YYWebImageOperation.m in Sources */,
  357. D9753A2E1BD3BBE600C6F4B8 /* UIImageView+YYWebImage.m in Sources */,
  358. );
  359. runOnlyForDeploymentPostprocessing = 0;
  360. };
  361. /* End PBXSourcesBuildPhase section */
  362. /* Begin XCBuildConfiguration section */
  363. D97539EA1BD3BB6F00C6F4B8 /* Debug */ = {
  364. isa = XCBuildConfiguration;
  365. buildSettings = {
  366. ALWAYS_SEARCH_USER_PATHS = NO;
  367. CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  368. CLANG_CXX_LIBRARY = "libc++";
  369. CLANG_ENABLE_MODULES = YES;
  370. CLANG_ENABLE_OBJC_ARC = YES;
  371. CLANG_WARN_BOOL_CONVERSION = YES;
  372. CLANG_WARN_CONSTANT_CONVERSION = YES;
  373. CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  374. CLANG_WARN_EMPTY_BODY = YES;
  375. CLANG_WARN_ENUM_CONVERSION = YES;
  376. CLANG_WARN_INT_CONVERSION = YES;
  377. CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  378. CLANG_WARN_UNREACHABLE_CODE = YES;
  379. CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  380. COPY_PHASE_STRIP = NO;
  381. DEBUG_INFORMATION_FORMAT = dwarf;
  382. ENABLE_STRICT_OBJC_MSGSEND = YES;
  383. ENABLE_TESTABILITY = YES;
  384. GCC_C_LANGUAGE_STANDARD = gnu99;
  385. GCC_DYNAMIC_NO_PIC = NO;
  386. GCC_NO_COMMON_BLOCKS = YES;
  387. GCC_OPTIMIZATION_LEVEL = 0;
  388. GCC_PREPROCESSOR_DEFINITIONS = (
  389. "DEBUG=1",
  390. "$(inherited)",
  391. );
  392. GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  393. GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  394. GCC_WARN_UNDECLARED_SELECTOR = YES;
  395. GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  396. GCC_WARN_UNUSED_FUNCTION = YES;
  397. GCC_WARN_UNUSED_VARIABLE = YES;
  398. MTL_ENABLE_DEBUG_INFO = YES;
  399. ONLY_ACTIVE_ARCH = YES;
  400. };
  401. name = Debug;
  402. };
  403. D97539EB1BD3BB6F00C6F4B8 /* Release */ = {
  404. isa = XCBuildConfiguration;
  405. buildSettings = {
  406. ALWAYS_SEARCH_USER_PATHS = NO;
  407. CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  408. CLANG_CXX_LIBRARY = "libc++";
  409. CLANG_ENABLE_MODULES = YES;
  410. CLANG_ENABLE_OBJC_ARC = YES;
  411. CLANG_WARN_BOOL_CONVERSION = YES;
  412. CLANG_WARN_CONSTANT_CONVERSION = YES;
  413. CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  414. CLANG_WARN_EMPTY_BODY = YES;
  415. CLANG_WARN_ENUM_CONVERSION = YES;
  416. CLANG_WARN_INT_CONVERSION = YES;
  417. CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  418. CLANG_WARN_UNREACHABLE_CODE = YES;
  419. CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  420. COPY_PHASE_STRIP = NO;
  421. DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
  422. ENABLE_NS_ASSERTIONS = NO;
  423. ENABLE_STRICT_OBJC_MSGSEND = YES;
  424. GCC_C_LANGUAGE_STANDARD = gnu99;
  425. GCC_NO_COMMON_BLOCKS = YES;
  426. GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  427. GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  428. GCC_WARN_UNDECLARED_SELECTOR = YES;
  429. GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  430. GCC_WARN_UNUSED_FUNCTION = YES;
  431. GCC_WARN_UNUSED_VARIABLE = YES;
  432. MTL_ENABLE_DEBUG_INFO = NO;
  433. };
  434. name = Release;
  435. };
  436. D97539ED1BD3BB6F00C6F4B8 /* Debug */ = {
  437. isa = XCBuildConfiguration;
  438. buildSettings = {
  439. CONTENTS_FOLDER_PATH = "$(WRAPPER_NAME)/Versions/$(FRAMEWORK_VERSION)";
  440. DEAD_CODE_STRIPPING = NO;
  441. DYLIB_COMPATIBILITY_VERSION = 1;
  442. DYLIB_CURRENT_VERSION = 1;
  443. FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/../Vendor\"";
  444. FRAMEWORK_VERSION = A;
  445. INFOPLIST_FILE = Info.plist;
  446. INFOPLIST_PATH = "$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/Info.plist";
  447. INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)";
  448. IPHONEOS_DEPLOYMENT_TARGET = 6.0;
  449. LINK_WITH_STANDARD_LIBRARIES = NO;
  450. MACH_O_TYPE = mh_object;
  451. PRODUCT_BUNDLE_IDENTIFIER = com.ibireme.YYWebImage;
  452. PRODUCT_NAME = "$(TARGET_NAME)";
  453. SDKROOT = iphoneos;
  454. SKIP_INSTALL = YES;
  455. UNLOCALIZED_RESOURCES_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Resources";
  456. WRAPPER_EXTENSION = framework;
  457. };
  458. name = Debug;
  459. };
  460. D97539EE1BD3BB6F00C6F4B8 /* Release */ = {
  461. isa = XCBuildConfiguration;
  462. buildSettings = {
  463. CONTENTS_FOLDER_PATH = "$(WRAPPER_NAME)/Versions/$(FRAMEWORK_VERSION)";
  464. DEAD_CODE_STRIPPING = NO;
  465. DYLIB_COMPATIBILITY_VERSION = 1;
  466. DYLIB_CURRENT_VERSION = 1;
  467. FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/../Vendor\"";
  468. FRAMEWORK_VERSION = A;
  469. INFOPLIST_FILE = Info.plist;
  470. INFOPLIST_PATH = "$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/Info.plist";
  471. INSTALL_PATH = "$(BUILT_PRODUCTS_DIR)";
  472. IPHONEOS_DEPLOYMENT_TARGET = 6.0;
  473. LINK_WITH_STANDARD_LIBRARIES = NO;
  474. MACH_O_TYPE = mh_object;
  475. PRODUCT_BUNDLE_IDENTIFIER = com.ibireme.YYWebImage;
  476. PRODUCT_NAME = "$(TARGET_NAME)";
  477. SDKROOT = iphoneos;
  478. SKIP_INSTALL = YES;
  479. UNLOCALIZED_RESOURCES_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Resources";
  480. WRAPPER_EXTENSION = framework;
  481. };
  482. name = Release;
  483. };
  484. /* End XCBuildConfiguration section */
  485. /* Begin XCConfigurationList section */
  486. D97539D71BD3BB6F00C6F4B8 /* Build configuration list for PBXProject "YYWebImage-Static" */ = {
  487. isa = XCConfigurationList;
  488. buildConfigurations = (
  489. D97539EA1BD3BB6F00C6F4B8 /* Debug */,
  490. D97539EB1BD3BB6F00C6F4B8 /* Release */,
  491. );
  492. defaultConfigurationIsVisible = 0;
  493. defaultConfigurationName = Release;
  494. };
  495. D97539EC1BD3BB6F00C6F4B8 /* Build configuration list for PBXNativeTarget "YYWebImage" */ = {
  496. isa = XCConfigurationList;
  497. buildConfigurations = (
  498. D97539ED1BD3BB6F00C6F4B8 /* Debug */,
  499. D97539EE1BD3BB6F00C6F4B8 /* Release */,
  500. );
  501. defaultConfigurationIsVisible = 0;
  502. defaultConfigurationName = Release;
  503. };
  504. /* End XCConfigurationList section */
  505. };
  506. rootObject = D97539D41BD3BB6F00C6F4B8 /* Project object */;
  507. }