DylanVann / react-native-fast-image

🚩 FastImage, performant React Native image component.
MIT License
8.2k stars 1.51k forks source link

XCode 10.2 generates an unshippable "Generic Archive" with 6.0.0 #468

Closed sginn closed 5 years ago

sginn commented 5 years ago

Describe the bug After updating to 6.0.0, we are unable to publish our archive to TestFlight.

Looking in organizer, we end up with a "Generic Xcode Archive" because the SDWebImage header files are being shipped in the generated output.

To Reproduce

  1. npm install react-native-fast-image
  2. react-native link react-native-fast-image
  3. Open XCode and select Product -> Archive
    • Organizer should open (if it doesn't Window -> Organizer)
  4. Select the archive from the list and observe you can't "Validate" the archive.

If you right click on the archive and select "Show in Finder", then on that archive file, right click and select "Show Archive Contents", the folder structure will load. In the Products folder, note the presence of a usr/local/include/ folder with a bunch of header files.

image

Fastlane distribute is also failing with a helpful error:

Error Domain=IDEFoundationErrorDomain Code=1 "exportOptionsPlist error for key 'method': expected one of {}, but found app-store" UserInfo={NSLocalizedDescription=exportOptionsPlist error for key 'method': expected one of {}, but found app-store}

** EXPORT FAILED **
[12:36:01]: Exit status: 70

That error leads ultimately to this Apple Help topic: https://developer.apple.com/library/archive/technotes/tn2215/_index.html#//apple_ref/doc/uid/DTS40011221-CH1-PROJ

Expected behavior A build should work.

As a workaround, downgrading react-native-fast-image to 5.4.2 completes successfully.

Dependency versions

Note: if these are not the latest versions of each I recommend updating as extra effort will not be taken to be backwards compatible, and updating might resolving your issue.

Rehubbard commented 5 years ago

I am seeing the same issue on the latest version and it was affecting my App Center builds, too. Thanks for the temporary solution 👍

edo1493 commented 5 years ago

Spent a good 7hrs on this. :D

aylesm commented 5 years ago

Same for me I'm afraid.

aylesm commented 5 years ago

Generates the following error when I downgrade

❌  error: /node_modules/react-native-fast-image/ios/Vendor/SDWebImage/Configs/Module-Release.xcconfig: unable to open file (in project "SDWebImage") (in target 'SDWebImage static')

❌  error: /node_modules/react-native-fast-image/ios/Vendor/SDWebImage/Configs/Module-Release.xcconfig: unable to open file (in project "SDWebImage") (in target 'SDWebImage static')

❌  error: /node_modules/react-native-fast-image/ios/Vendor/SDWebImage/Configs/Module-Release.xcconfig: unable to open file (in project "SDWebImage") (in target 'SDWebImage static')

❌  error: /node_modules/react-native-fast-image/ios/Vendor/SDWebImage/Configs/Module-Release.xcconfig: unable to open file (in project "SDWebImage") (in target 'SDWebImage static')
sskinner32 commented 5 years ago

As a workaround, downgrading react-native-fast-image to 5.4.2 completes successfully.

I was facing this issue for at least a full day and smashing my head against the wall. This fixed it, thank you so much.

This really needs to be fixed!

aylesm commented 5 years ago

Looks like there were some relics in my xCode build after downgrading. Removing the project and adding it back in solve my downgrade issues.

XingXiaoWu commented 5 years ago

I have a temporary solution if you must use 6.0.0 1.To download the sd source https://github.com/SDWebImage/SDWebImage image Copy this folder to your own project,like this image

2.Open your ios project, find the fs project under the sdweb project and delete

image image

3.Drag the folder you just copied into the project

image image

4.Modify the fs header search path

delete this: image

add this: image

image

Then you can try packing

XingXiaoWu commented 5 years ago

This is apple docs, and I hope it gives you some help:)

https://developer.apple.com/library/archive/technotes/tn2215/_index.html#//apple_ref/doc/uid/DTS40011221-CH1-PROJ

vamxlam commented 5 years ago

I spend 5 hours for this problem, finally downgrade to 5.4.2 works for me.

fmonsalvo commented 5 years ago

I had the same exact issue, I was able to figure this out by looking into the archive generated and finding the header files as a target.

radex commented 5 years ago

Y'all! Here's a patch I made that seems to work — you can use patch-packages to apply it. Or, go ahead and turn it into a pull request ;)

diff --git a/node_modules/react-native-fast-image/ios/FastImage.xcodeproj/project.pbxproj b/node_modules/react-native-fast-image/ios/FastImage.xcodeproj/project.pbxproj
index b711c7a..4473219 100644
--- a/node_modules/react-native-fast-image/ios/FastImage.xcodeproj/project.pbxproj
+++ b/node_modules/react-native-fast-image/ios/FastImage.xcodeproj/project.pbxproj
@@ -5,7 +5,6 @@
    };
    objectVersion = 46;
    objects = {
-
 /* Begin PBXBuildFile section */
        FCC6D1391EB3912D0065F944 /* libSDWebImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FCC6D0D01EB38D2F0065F944 /* libSDWebImage.a */; };
        FCFB253F1EA5562700F59778 /* FFFastImageSource.m in Sources */ = {isa = PBXBuildFile; fileRef = FCFB25381EA5562700F59778 /* FFFastImageSource.m */; };
@@ -159,7 +158,7 @@
        A28797151DE0C0A60081BDFA /* Project object */ = {
            isa = PBXProject;
            attributes = {
-               LastUpgradeCheck = 0810;
+               LastUpgradeCheck = 9999;
                ORGANIZATIONNAME = vovkasm;
                TargetAttributes = {
                    A287971C1DE0C0A60081BDFA = {
@@ -281,6 +280,8 @@
                ONLY_ACTIVE_ARCH = YES;
                SDKROOT = iphoneos;
                SKIP_INSTALL = YES;
+               GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
+               RUN_CLANG_STATIC_ANALYZER = NO;
            };
            name = Debug;
        };
@@ -320,6 +321,8 @@
                SDKROOT = iphoneos;
                SKIP_INSTALL = YES;
                VALIDATE_PRODUCT = YES;
+               GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
+               RUN_CLANG_STATIC_ANALYZER = NO;
            };
            name = Release;
        };
@@ -336,6 +339,8 @@
                OTHER_LDFLAGS = "-ObjC";
                PRODUCT_NAME = "$(TARGET_NAME)";
                SKIP_INSTALL = YES;
+               GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
+               RUN_CLANG_STATIC_ANALYZER = NO;
            };
            name = Debug;
        };
@@ -352,6 +357,8 @@
                OTHER_LDFLAGS = "-ObjC";
                PRODUCT_NAME = "$(TARGET_NAME)";
                SKIP_INSTALL = YES;
+               GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
+               RUN_CLANG_STATIC_ANALYZER = NO;
            };
            name = Release;
        };
diff --git a/node_modules/react-native-fast-image/ios/Vendor/SDWebImage/SDWebImage.xcodeproj/project.pbxproj b/node_modules/react-native-fast-image/ios/Vendor/SDWebImage/SDWebImage.xcodeproj/project.pbxproj
index b935e4b..d562c4c 100644
--- a/node_modules/react-native-fast-image/ios/Vendor/SDWebImage/SDWebImage.xcodeproj/project.pbxproj
+++ b/node_modules/react-native-fast-image/ios/Vendor/SDWebImage/SDWebImage.xcodeproj/project.pbxproj
@@ -7,31 +7,24 @@
    objects = {

 /* Begin PBXBuildFile section */
-       320CAE152086F50500CFFC80 /* SDWebImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = 320CAE132086F50500CFFC80 /* SDWebImageError.h */; settings = {ATTRIBUTES = (Public, ); }; };
        320CAE172086F50500CFFC80 /* SDWebImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = 320CAE132086F50500CFFC80 /* SDWebImageError.h */; settings = {ATTRIBUTES = (Public, ); }; };
        320CAE1B2086F50500CFFC80 /* SDWebImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = 320CAE142086F50500CFFC80 /* SDWebImageError.m */; };
        320CAE1D2086F50500CFFC80 /* SDWebImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = 320CAE142086F50500CFFC80 /* SDWebImageError.m */; };
-       321B37812083290E00C0EA77 /* SDImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 321B377D2083290D00C0EA77 /* SDImageLoader.h */; settings = {ATTRIBUTES = (Public, ); }; };
        321B37832083290E00C0EA77 /* SDImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 321B377D2083290D00C0EA77 /* SDImageLoader.h */; settings = {ATTRIBUTES = (Public, ); }; };
        321B37872083290E00C0EA77 /* SDImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 321B377E2083290D00C0EA77 /* SDImageLoader.m */; };
        321B37892083290E00C0EA77 /* SDImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 321B377E2083290D00C0EA77 /* SDImageLoader.m */; };
-       321B378D2083290E00C0EA77 /* SDImageLoadersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 321B377F2083290E00C0EA77 /* SDImageLoadersManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
        321B378F2083290E00C0EA77 /* SDImageLoadersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 321B377F2083290E00C0EA77 /* SDImageLoadersManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
        321B37932083290E00C0EA77 /* SDImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 321B37802083290E00C0EA77 /* SDImageLoadersManager.m */; };
        321B37952083290E00C0EA77 /* SDImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 321B37802083290E00C0EA77 /* SDImageLoadersManager.m */; };
-       321E60861F38E8C800405457 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60841F38E8C800405457 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
        321E60881F38E8C800405457 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60841F38E8C800405457 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
        321E608C1F38E8C800405457 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60851F38E8C800405457 /* SDImageCoder.m */; };
        321E608E1F38E8C800405457 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60851F38E8C800405457 /* SDImageCoder.m */; };
-       321E60941F38E8ED00405457 /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60921F38E8ED00405457 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
        321E60961F38E8ED00405457 /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60921F38E8ED00405457 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
        321E609A1F38E8ED00405457 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60931F38E8ED00405457 /* SDImageIOCoder.m */; };
        321E609C1F38E8ED00405457 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60931F38E8ED00405457 /* SDImageIOCoder.m */; };
-       321E60A21F38E8F600405457 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60A01F38E8F600405457 /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
        321E60A41F38E8F600405457 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60A01F38E8F600405457 /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
        321E60A81F38E8F600405457 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60A11F38E8F600405457 /* SDImageGIFCoder.m */; };
        321E60AA1F38E8F600405457 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60A11F38E8F600405457 /* SDImageGIFCoder.m */; };
-       321E60BE1F38E91700405457 /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60BC1F38E91700405457 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; };
        321E60C01F38E91700405457 /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 321E60BC1F38E91700405457 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; };
        321E60C41F38E91700405457 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60BD1F38E91700405457 /* UIImage+ForceDecode.m */; };
        321E60C61F38E91700405457 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 321E60BD1F38E91700405457 /* UIImage+ForceDecode.m */; };
@@ -39,134 +32,99 @@
        3237F9EB20161AE000A88143 /* NSImage+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 4397D2F51D0DE2DF00BB2784 /* NSImage+Compatibility.m */; };
        3248475D201775F600AF9E5A /* SDAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 32484757201775F600AF9E5A /* SDAnimatedImageView.m */; };
        3248475F201775F600AF9E5A /* SDAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 32484757201775F600AF9E5A /* SDAnimatedImageView.m */; };
-       32484763201775F600AF9E5A /* SDAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 32484758201775F600AF9E5A /* SDAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32484765201775F600AF9E5A /* SDAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 32484758201775F600AF9E5A /* SDAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
-       32484769201775F600AF9E5A /* SDAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 32484759201775F600AF9E5A /* SDAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; };
        3248476B201775F600AF9E5A /* SDAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 32484759201775F600AF9E5A /* SDAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; };
        3248476F201775F600AF9E5A /* SDAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 3248475A201775F600AF9E5A /* SDAnimatedImage.m */; };
        32484771201775F600AF9E5A /* SDAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 3248475A201775F600AF9E5A /* SDAnimatedImage.m */; };
-       32484775201775F600AF9E5A /* SDAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 3248475B201775F600AF9E5A /* SDAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32484777201775F600AF9E5A /* SDAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 3248475B201775F600AF9E5A /* SDAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
        3248477B201775F600AF9E5A /* SDAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 3248475C201775F600AF9E5A /* SDAnimatedImageView+WebCache.m */; };
        3248477D201775F600AF9E5A /* SDAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 3248475C201775F600AF9E5A /* SDAnimatedImageView+WebCache.m */; };
-       324DF4B4200A14DC008A84CC /* SDWebImageDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 324DF4B2200A14DC008A84CC /* SDWebImageDefine.h */; settings = {ATTRIBUTES = (Public, ); }; };
        324DF4B6200A14DC008A84CC /* SDWebImageDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 324DF4B2200A14DC008A84CC /* SDWebImageDefine.h */; settings = {ATTRIBUTES = (Public, ); }; };
        324DF4BA200A14DC008A84CC /* SDWebImageDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 324DF4B3200A14DC008A84CC /* SDWebImageDefine.m */; };
        324DF4BC200A14DC008A84CC /* SDWebImageDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 324DF4B3200A14DC008A84CC /* SDWebImageDefine.m */; };
-       325312C8200F09910046BF1E /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 325312C6200F09910046BF1E /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Public, ); }; };
        325312CA200F09910046BF1E /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 325312C6200F09910046BF1E /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Public, ); }; };
        325312CE200F09910046BF1E /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 325312C7200F09910046BF1E /* SDWebImageTransition.m */; };
        325312D0200F09910046BF1E /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 325312C7200F09910046BF1E /* SDWebImageTransition.m */; };
-       3257EAF921898AED0097B271 /* SDImageGraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = 3257EAF721898AED0097B271 /* SDImageGraphics.h */; settings = {ATTRIBUTES = (Public, ); }; };
        3257EAFA21898AED0097B271 /* SDImageGraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = 3257EAF721898AED0097B271 /* SDImageGraphics.h */; settings = {ATTRIBUTES = (Public, ); }; };
        3257EAFC21898AED0097B271 /* SDImageGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = 3257EAF821898AED0097B271 /* SDImageGraphics.m */; };
        3257EAFD21898AED0097B271 /* SDImageGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = 3257EAF821898AED0097B271 /* SDImageGraphics.m */; };
-       325C460222339330004CAE11 /* SDImageAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 325C460022339330004CAE11 /* SDImageAssetManager.h */; settings = {ATTRIBUTES = (Private, ); }; };
        325C460322339330004CAE11 /* SDImageAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 325C460022339330004CAE11 /* SDImageAssetManager.h */; settings = {ATTRIBUTES = (Private, ); }; };
        325C460422339330004CAE11 /* SDImageAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 325C460122339330004CAE11 /* SDImageAssetManager.m */; };
        325C460522339330004CAE11 /* SDImageAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 325C460122339330004CAE11 /* SDImageAssetManager.m */; };
-       325C460822339426004CAE11 /* SDWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 325C460622339426004CAE11 /* SDWeakProxy.h */; settings = {ATTRIBUTES = (Private, ); }; };
        325C460922339426004CAE11 /* SDWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 325C460622339426004CAE11 /* SDWeakProxy.h */; settings = {ATTRIBUTES = (Private, ); }; };
        325C460A22339426004CAE11 /* SDWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 325C460722339426004CAE11 /* SDWeakProxy.m */; };
        325C460B22339426004CAE11 /* SDWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 325C460722339426004CAE11 /* SDWeakProxy.m */; };
-       325C460E223394D8004CAE11 /* SDImageCachesManagerOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 325C460C223394D8004CAE11 /* SDImageCachesManagerOperation.h */; settings = {ATTRIBUTES = (Private, ); }; };
        325C460F223394D8004CAE11 /* SDImageCachesManagerOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 325C460C223394D8004CAE11 /* SDImageCachesManagerOperation.h */; settings = {ATTRIBUTES = (Private, ); }; };
        325C4610223394D8004CAE11 /* SDImageCachesManagerOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 325C460D223394D8004CAE11 /* SDImageCachesManagerOperation.m */; };
        325C4611223394D8004CAE11 /* SDImageCachesManagerOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 325C460D223394D8004CAE11 /* SDImageCachesManagerOperation.m */; };
-       325C4614223399F7004CAE11 /* SDImageGIFCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 325C4612223399F7004CAE11 /* SDImageGIFCoderInternal.h */; settings = {ATTRIBUTES = (Private, ); }; };
        325C4615223399F7004CAE11 /* SDImageGIFCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 325C4612223399F7004CAE11 /* SDImageGIFCoderInternal.h */; settings = {ATTRIBUTES = (Private, ); }; };
-       325C461A22339B5F004CAE11 /* SDImageAPNGCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 325C461822339B5F004CAE11 /* SDImageAPNGCoderInternal.h */; settings = {ATTRIBUTES = (Private, ); }; };
        325C461B22339B5F004CAE11 /* SDImageAPNGCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 325C461822339B5F004CAE11 /* SDImageAPNGCoderInternal.h */; settings = {ATTRIBUTES = (Private, ); }; };
-       325C46202233A02E004CAE11 /* UIColor+HexString.h in Headers */ = {isa = PBXBuildFile; fileRef = 325C461E2233A02E004CAE11 /* UIColor+HexString.h */; settings = {ATTRIBUTES = (Private, ); }; };
        325C46212233A02E004CAE11 /* UIColor+HexString.h in Headers */ = {isa = PBXBuildFile; fileRef = 325C461E2233A02E004CAE11 /* UIColor+HexString.h */; settings = {ATTRIBUTES = (Private, ); }; };
        325C46222233A02E004CAE11 /* UIColor+HexString.m in Sources */ = {isa = PBXBuildFile; fileRef = 325C461F2233A02E004CAE11 /* UIColor+HexString.m */; };
        325C46232233A02E004CAE11 /* UIColor+HexString.m in Sources */ = {isa = PBXBuildFile; fileRef = 325C461F2233A02E004CAE11 /* UIColor+HexString.m */; };
-       325C46262233A0A8004CAE11 /* NSBezierPath+RoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = 325C46242233A0A8004CAE11 /* NSBezierPath+RoundedCorners.h */; settings = {ATTRIBUTES = (Private, ); }; };
        325C46272233A0A8004CAE11 /* NSBezierPath+RoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = 325C46242233A0A8004CAE11 /* NSBezierPath+RoundedCorners.h */; settings = {ATTRIBUTES = (Private, ); }; };
        325C46282233A0A8004CAE11 /* NSBezierPath+RoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = 325C46252233A0A8004CAE11 /* NSBezierPath+RoundedCorners.m */; };
        325C46292233A0A8004CAE11 /* NSBezierPath+RoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = 325C46252233A0A8004CAE11 /* NSBezierPath+RoundedCorners.m */; };
-       327054D4206CD8B3006EA328 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 327054D2206CD8B3006EA328 /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
        327054D6206CD8B3006EA328 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 327054D2206CD8B3006EA328 /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; };
        327054DA206CD8B3006EA328 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 327054D3206CD8B3006EA328 /* SDImageAPNGCoder.m */; };
        327054DC206CD8B3006EA328 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 327054D3206CD8B3006EA328 /* SDImageAPNGCoder.m */; };
-       328BB69C2081FED200760D6C /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 328BB69A2081FED200760D6C /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Public, ); }; };
        328BB69E2081FED200760D6C /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 328BB69A2081FED200760D6C /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Public, ); }; };
        328BB6A22081FED200760D6C /* SDWebImageCacheKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 328BB69B2081FED200760D6C /* SDWebImageCacheKeyFilter.m */; };
        328BB6A42081FED200760D6C /* SDWebImageCacheKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 328BB69B2081FED200760D6C /* SDWebImageCacheKeyFilter.m */; };
-       328BB6AA2081FEE500760D6C /* SDWebImageCacheSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 328BB6A82081FEE500760D6C /* SDWebImageCacheSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; };
        328BB6AC2081FEE500760D6C /* SDWebImageCacheSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 328BB6A82081FEE500760D6C /* SDWebImageCacheSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; };
        328BB6B02081FEE500760D6C /* SDWebImageCacheSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 328BB6A92081FEE500760D6C /* SDWebImageCacheSerializer.m */; };
        328BB6B22081FEE500760D6C /* SDWebImageCacheSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 328BB6A92081FEE500760D6C /* SDWebImageCacheSerializer.m */; };
-       328BB6C12082581100760D6C /* SDDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 328BB6BD2082581100760D6C /* SDDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
        328BB6C32082581100760D6C /* SDDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 328BB6BD2082581100760D6C /* SDDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
        328BB6C72082581100760D6C /* SDDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 328BB6BE2082581100760D6C /* SDDiskCache.m */; };
        328BB6C92082581100760D6C /* SDDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 328BB6BE2082581100760D6C /* SDDiskCache.m */; };
-       328BB6CD2082581100760D6C /* SDMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 328BB6BF2082581100760D6C /* SDMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
        328BB6CF2082581100760D6C /* SDMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 328BB6BF2082581100760D6C /* SDMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
        328BB6D32082581100760D6C /* SDMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 328BB6C02082581100760D6C /* SDMemoryCache.m */; };
        328BB6D52082581100760D6C /* SDMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 328BB6C02082581100760D6C /* SDMemoryCache.m */; };
-       3290FA041FA478AF0047D20C /* SDImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 3290FA021FA478AF0047D20C /* SDImageFrame.h */; settings = {ATTRIBUTES = (Public, ); }; };
        3290FA061FA478AF0047D20C /* SDImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 3290FA021FA478AF0047D20C /* SDImageFrame.h */; settings = {ATTRIBUTES = (Public, ); }; };
        3290FA0A1FA478AF0047D20C /* SDImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 3290FA031FA478AF0047D20C /* SDImageFrame.m */; };
        3290FA0C1FA478AF0047D20C /* SDImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 3290FA031FA478AF0047D20C /* SDImageFrame.m */; };
-       329A18591FFF5DFD008C9A2F /* UIImage+Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 329A18571FFF5DFD008C9A2F /* UIImage+Metadata.h */; settings = {ATTRIBUTES = (Public, ); }; };
        329A185B1FFF5DFD008C9A2F /* UIImage+Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 329A18571FFF5DFD008C9A2F /* UIImage+Metadata.h */; settings = {ATTRIBUTES = (Public, ); }; };
        329A185F1FFF5DFD008C9A2F /* UIImage+Metadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 329A18581FFF5DFD008C9A2F /* UIImage+Metadata.m */; };
        329A18611FFF5DFD008C9A2F /* UIImage+Metadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 329A18581FFF5DFD008C9A2F /* UIImage+Metadata.m */; };
-       329F1236223FAA3B00B309FD /* SDmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 329F1235223FAA3B00B309FD /* SDmetamacros.h */; settings = {ATTRIBUTES = (Private, ); }; };
        329F1237223FAA3B00B309FD /* SDmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 329F1235223FAA3B00B309FD /* SDmetamacros.h */; settings = {ATTRIBUTES = (Private, ); }; };
        329F1240223FAD3400B309FD /* SDInternalMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = 329F123E223FAD3400B309FD /* SDInternalMacros.m */; };
        329F1241223FAD3400B309FD /* SDInternalMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = 329F123E223FAD3400B309FD /* SDInternalMacros.m */; };
-       329F1242223FAD3400B309FD /* SDInternalMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 329F123F223FAD3400B309FD /* SDInternalMacros.h */; settings = {ATTRIBUTES = (Private, ); }; };
        329F1243223FAD3400B309FD /* SDInternalMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 329F123F223FAD3400B309FD /* SDInternalMacros.h */; settings = {ATTRIBUTES = (Private, ); }; };
        32B5CC60222F89C2005EB74E /* SDAsyncBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B5CC5E222F89C2005EB74E /* SDAsyncBlockOperation.h */; settings = {ATTRIBUTES = (Private, ); }; };
        32B5CC61222F89C2005EB74E /* SDAsyncBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B5CC5F222F89C2005EB74E /* SDAsyncBlockOperation.m */; };
-       32B5CC62222F89F6005EB74E /* SDAsyncBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B5CC5E222F89C2005EB74E /* SDAsyncBlockOperation.h */; settings = {ATTRIBUTES = (Private, ); }; };
        32B5CC63222F8B70005EB74E /* SDAsyncBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B5CC5F222F89C2005EB74E /* SDAsyncBlockOperation.m */; };
-       32B9B537206ED4230026769D /* SDWebImageDownloaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B9B535206ED4230026769D /* SDWebImageDownloaderConfig.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32B9B539206ED4230026769D /* SDWebImageDownloaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 32B9B535206ED4230026769D /* SDWebImageDownloaderConfig.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32B9B53D206ED4230026769D /* SDWebImageDownloaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B9B536206ED4230026769D /* SDWebImageDownloaderConfig.m */; };
        32B9B53F206ED4230026769D /* SDWebImageDownloaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 32B9B536206ED4230026769D /* SDWebImageDownloaderConfig.m */; };
-       32C0FDE12013426C001B8F2D /* SDWebImageIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 32C0FDDF2013426C001B8F2D /* SDWebImageIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32C0FDE32013426C001B8F2D /* SDWebImageIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 32C0FDDF2013426C001B8F2D /* SDWebImageIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32C0FDE72013426C001B8F2D /* SDWebImageIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 32C0FDE02013426C001B8F2D /* SDWebImageIndicator.m */; };
        32C0FDE92013426C001B8F2D /* SDWebImageIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 32C0FDE02013426C001B8F2D /* SDWebImageIndicator.m */; };
-       32CF1C071FA496B000004BD1 /* SDImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 32CF1C051FA496B000004BD1 /* SDImageCoderHelper.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32CF1C091FA496B000004BD1 /* SDImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 32CF1C051FA496B000004BD1 /* SDImageCoderHelper.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32CF1C0D1FA496B000004BD1 /* SDImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 32CF1C061FA496B000004BD1 /* SDImageCoderHelper.m */; };
        32CF1C0F1FA496B000004BD1 /* SDImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 32CF1C061FA496B000004BD1 /* SDImageCoderHelper.m */; };
-       32D1221E2080B2EB003685A3 /* SDImageCacheDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 32D1221A2080B2EB003685A3 /* SDImageCacheDefine.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32D122202080B2EB003685A3 /* SDImageCacheDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 32D1221A2080B2EB003685A3 /* SDImageCacheDefine.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32D122242080B2EB003685A3 /* SDImageCacheDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 32D1221B2080B2EB003685A3 /* SDImageCacheDefine.m */; };
        32D122262080B2EB003685A3 /* SDImageCacheDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 32D1221B2080B2EB003685A3 /* SDImageCacheDefine.m */; };
        32D1222A2080B2EB003685A3 /* SDImageCachesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 32D1221C2080B2EB003685A3 /* SDImageCachesManager.m */; };
        32D1222C2080B2EB003685A3 /* SDImageCachesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 32D1221C2080B2EB003685A3 /* SDImageCachesManager.m */; };
-       32D122302080B2EB003685A3 /* SDImageCachesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 32D1221D2080B2EB003685A3 /* SDImageCachesManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32D122322080B2EB003685A3 /* SDImageCachesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 32D1221D2080B2EB003685A3 /* SDImageCachesManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32D3CDCE21DDE87300C4DB49 /* UIImage+MemoryCacheCost.m in Sources */ = {isa = PBXBuildFile; fileRef = 32D3CDCC21DDE87300C4DB49 /* UIImage+MemoryCacheCost.m */; };
        32D3CDCF21DDE87300C4DB49 /* UIImage+MemoryCacheCost.m in Sources */ = {isa = PBXBuildFile; fileRef = 32D3CDCC21DDE87300C4DB49 /* UIImage+MemoryCacheCost.m */; };
-       32D3CDD021DDE87300C4DB49 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = 32D3CDCD21DDE87300C4DB49 /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32D3CDD121DDE87300C4DB49 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = 32D3CDCD21DDE87300C4DB49 /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32EB6D8E206D132E005CAEF6 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = 320224BA203979BA00E9F285 /* SDAnimatedImageRep.m */; };
        32EB6D91206D132E005CAEF6 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = 320224BA203979BA00E9F285 /* SDAnimatedImageRep.m */; };
-       32F21B5120788D8C0036B1D5 /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 32F21B4F20788D8C0036B1D5 /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32F21B5320788D8C0036B1D5 /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 32F21B4F20788D8C0036B1D5 /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32F21B5720788D8C0036B1D5 /* SDWebImageDownloaderRequestModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 32F21B5020788D8C0036B1D5 /* SDWebImageDownloaderRequestModifier.m */; };
        32F21B5920788D8C0036B1D5 /* SDWebImageDownloaderRequestModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 32F21B5020788D8C0036B1D5 /* SDWebImageDownloaderRequestModifier.m */; };
-       32F7C06F2030114C00873181 /* SDImageTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 32F7C06D2030114C00873181 /* SDImageTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32F7C0712030114C00873181 /* SDImageTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 32F7C06D2030114C00873181 /* SDImageTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32F7C0752030114C00873181 /* SDImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 32F7C06E2030114C00873181 /* SDImageTransformer.m */; };
        32F7C0772030114C00873181 /* SDImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 32F7C06E2030114C00873181 /* SDImageTransformer.m */; };
        32F7C07E2030719600873181 /* UIImage+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = 32F7C07C2030719600873181 /* UIImage+Transform.m */; };
        32F7C0802030719600873181 /* UIImage+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = 32F7C07C2030719600873181 /* UIImage+Transform.m */; };
-       32F7C0842030719600873181 /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 32F7C07D2030719600873181 /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Public, ); }; };
        32F7C0862030719600873181 /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 32F7C07D2030719600873181 /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Public, ); }; };
-       32FDE8A220888789008D7530 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A2CAE031AB4BB5400B6BC39 /* SDWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
-       4369C2771D9807EC007E863A /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 4369C2751D9807EC007E863A /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
        4369C2791D9807EC007E863A /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 4369C2751D9807EC007E863A /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
        4369C27E1D9807EC007E863A /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4369C2761D9807EC007E863A /* UIView+WebCache.m */; };
        4369C2801D9807EC007E863A /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4369C2761D9807EC007E863A /* UIView+WebCache.m */; };
-       43A918641D8308FE00B3925F /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A918621D8308FE00B3925F /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; };
        43A918661D8308FE00B3925F /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 43A918621D8308FE00B3925F /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; };
        43A9186B1D8308FE00B3925F /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 43A918631D8308FE00B3925F /* SDImageCacheConfig.m */; };
        43A9186D1D8308FE00B3925F /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 43A918631D8308FE00B3925F /* SDImageCacheConfig.m */; };
@@ -198,8 +156,6 @@
        4A2CAE361AB4BB7500B6BC39 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 53922D96148C56230056699D /* UIImageView+WebCache.m */; };
        4A2CAE371AB4BB7500B6BC39 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = AB615301192DA24600A2D8E9 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
        4A2CAE381AB4BB7500B6BC39 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = AB615302192DA24600A2D8E9 /* UIView+WebCacheOperation.m */; };
-       530E49E816464C25002868E7 /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 530E49E71646388E002868E7 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
-       530E49EA16464C7C002868E7 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 530E49E316460AE2002868E7 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
        530E49EC16464C84002868E7 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 530E49E416460AE2002868E7 /* SDWebImageDownloaderOperation.m */; };
        53406750167780C40042B59E /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 5340674F167780C40042B59E /* SDWebImageCompat.m */; };
        53761309155AD0D5005750A4 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 53922D86148C56230056699D /* SDImageCache.m */; };
@@ -211,38 +167,22 @@
        53761312155AD0D5005750A4 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53FB894814D35E9E0020B787 /* UIKit.framework */; };
        53761313155AD0D5005750A4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53922D72148C55820056699D /* Foundation.framework */; };
        53761314155AD0D5005750A4 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53FB893F14D35D1A0020B787 /* CoreGraphics.framework */; };
-       53761316155AD0D5005750A4 /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D85148C56230056699D /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
-       53761318155AD0D5005750A4 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D88148C56230056699D /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; };
-       5376131A155AD0D5005750A4 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D8B148C56230056699D /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; };
-       5376131C155AD0D5005750A4 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D8E148C56230056699D /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
-       5376131E155AD0D5005750A4 /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D91148C56230056699D /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; };
-       5376131F155AD0D5005750A4 /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D93148C56230056699D /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
-       53761320155AD0D5005750A4 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 53922D95148C56230056699D /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
-       53EDFB8A17623F7C00698166 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 53EDFB8817623F7C00698166 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; };
        53EDFB8C17623F7C00698166 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 53EDFB8917623F7C00698166 /* UIImage+MultiFormat.m */; };
-       5D5B9142188EE8DD006D06BD /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D5B9140188EE8DD006D06BD /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; };
        5D5B9145188EE8DD006D06BD /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D5B9141188EE8DD006D06BD /* NSData+ImageContentType.m */; };
        806BE07C2142C4A200E02143 /* SDWebImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A2CADFF1AB4BB5300B6BC39 /* SDWebImage.framework */; };
        806BE07E2142C65200E02143 /* SDWebImageMapKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 806BE07D2142C65200E02143 /* SDWebImageMapKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
-       807A12281F89636300EC2A9B /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 807A12261F89636300EC2A9B /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
        807A122A1F89636300EC2A9B /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 807A12261F89636300EC2A9B /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
        807A122E1F89636300EC2A9B /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 807A12271F89636300EC2A9B /* SDImageCodersManager.m */; };
        807A12301F89636300EC2A9B /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 807A12271F89636300EC2A9B /* SDImageCodersManager.m */; };
-       80B6DF7E2142B43300BCB334 /* NSImage+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 4397D2F41D0DE2DF00BB2784 /* NSImage+Compatibility.h */; settings = {ATTRIBUTES = (Public, ); }; };
        80B6DF7F2142B43300BCB334 /* NSImage+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 4397D2F41D0DE2DF00BB2784 /* NSImage+Compatibility.h */; settings = {ATTRIBUTES = (Public, ); }; };
-       80B6DF802142B43A00BCB334 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 320224B9203979BA00E9F285 /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Public, ); }; };
        80B6DF812142B43B00BCB334 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 320224B9203979BA00E9F285 /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Public, ); }; };
        80B6DF822142B44400BCB334 /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 321DB3602011D4D60015D2CB /* NSButton+WebCache.m */; };
        80B6DF832142B44500BCB334 /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 321DB3602011D4D60015D2CB /* NSButton+WebCache.m */; };
        80B6DF842142B44600BCB334 /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 321DB35F2011D4D60015D2CB /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
-       80B6DF852142B44700BCB334 /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 321DB35F2011D4D60015D2CB /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
        80B6DFA72142B71600BCB334 /* MKAnnotationView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 32FDE87A2088871B008D7530 /* MKAnnotationView+WebCache.m */; };
        80B6DFCD2142B71600BCB334 /* MKAnnotationView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 32FDE87B2088871B008D7530 /* MKAnnotationView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
-       A18A6CC7172DC28500419892 /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = A18A6CC5172DC28500419892 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; };
        A18A6CC9172DC28500419892 /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = A18A6CC6172DC28500419892 /* UIImage+GIF.m */; };
-       AB615303192DA24600A2D8E9 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = AB615301192DA24600A2D8E9 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
        AB615306192DA24600A2D8E9 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = AB615302192DA24600A2D8E9 /* UIView+WebCacheOperation.m */; };
-       ABBE71A718C43B4D00B75E91 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = ABBE71A518C43B4D00B75E91 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };
        ABBE71A818C43B4D00B75E91 /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = ABBE71A618C43B4D00B75E91 /* UIImageView+HighlightedWebCache.m */; };
 /* End PBXBuildFile section */

@@ -770,73 +710,6 @@
            );
            runOnlyForDeploymentPostprocessing = 0;
        };
-       53761315155AD0D5005750A4 /* Headers */ = {
-           isa = PBXHeadersBuildPhase;
-           buildActionMask = 2147483647;
-           files = (
-               32B5CC62222F89F6005EB74E /* SDAsyncBlockOperation.h in Headers */,
-               32CF1C071FA496B000004BD1 /* SDImageCoderHelper.h in Headers */,
-               32F7C0842030719600873181 /* UIImage+Transform.h in Headers */,
-               3257EAF921898AED0097B271 /* SDImageGraphics.h in Headers */,
-               32D3CDD021DDE87300C4DB49 /* UIImage+MemoryCacheCost.h in Headers */,
-               53761316155AD0D5005750A4 /* SDImageCache.h in Headers */,
-               325C46262233A0A8004CAE11 /* NSBezierPath+RoundedCorners.h in Headers */,
-               325312C8200F09910046BF1E /* SDWebImageTransition.h in Headers */,
-               32C0FDE12013426C001B8F2D /* SDWebImageIndicator.h in Headers */,
-               321E60A21F38E8F600405457 /* SDImageGIFCoder.h in Headers */,
-               5D5B9142188EE8DD006D06BD /* NSData+ImageContentType.h in Headers */,
-               328BB6C12082581100760D6C /* SDDiskCache.h in Headers */,
-               53761318155AD0D5005750A4 /* SDWebImageCompat.h in Headers */,
-               325C460222339330004CAE11 /* SDImageAssetManager.h in Headers */,
-               3290FA041FA478AF0047D20C /* SDImageFrame.h in Headers */,
-               80B6DF852142B44700BCB334 /* NSButton+WebCache.h in Headers */,
-               807A12281F89636300EC2A9B /* SDImageCodersManager.h in Headers */,
-               32B9B537206ED4230026769D /* SDWebImageDownloaderConfig.h in Headers */,
-               329F1236223FAA3B00B309FD /* SDmetamacros.h in Headers */,
-               32484775201775F600AF9E5A /* SDAnimatedImage.h in Headers */,
-               321E60941F38E8ED00405457 /* SDImageIOCoder.h in Headers */,
-               329A18591FFF5DFD008C9A2F /* UIImage+Metadata.h in Headers */,
-               32D122302080B2EB003685A3 /* SDImageCachesManager.h in Headers */,
-               5376131A155AD0D5005750A4 /* SDWebImageDownloader.h in Headers */,
-               328BB6CD2082581100760D6C /* SDMemoryCache.h in Headers */,
-               4369C2771D9807EC007E863A /* UIView+WebCache.h in Headers */,
-               328BB6AA2081FEE500760D6C /* SDWebImageCacheSerializer.h in Headers */,
-               32F21B5120788D8C0036B1D5 /* SDWebImageDownloaderRequestModifier.h in Headers */,
-               5376131C155AD0D5005750A4 /* SDWebImageManager.h in Headers */,
-               321E60BE1F38E91700405457 /* UIImage+ForceDecode.h in Headers */,
-               5376131E155AD0D5005750A4 /* SDWebImagePrefetcher.h in Headers */,
-               32F7C06F2030114C00873181 /* SDImageTransformer.h in Headers */,
-               325C460E223394D8004CAE11 /* SDImageCachesManagerOperation.h in Headers */,
-               325C461A22339B5F004CAE11 /* SDImageAPNGCoderInternal.h in Headers */,
-               321B378D2083290E00C0EA77 /* SDImageLoadersManager.h in Headers */,
-               32FDE8A220888789008D7530 /* SDWebImage.h in Headers */,
-               324DF4B4200A14DC008A84CC /* SDWebImageDefine.h in Headers */,
-               5376131F155AD0D5005750A4 /* UIButton+WebCache.h in Headers */,
-               325C460822339426004CAE11 /* SDWeakProxy.h in Headers */,
-               80B6DF802142B43A00BCB334 /* SDAnimatedImageRep.h in Headers */,
-               327054D4206CD8B3006EA328 /* SDImageAPNGCoder.h in Headers */,
-               325C46202233A02E004CAE11 /* UIColor+HexString.h in Headers */,
-               53761320155AD0D5005750A4 /* UIImageView+WebCache.h in Headers */,
-               328BB69C2081FED200760D6C /* SDWebImageCacheKeyFilter.h in Headers */,
-               530E49E816464C25002868E7 /* SDWebImageOperation.h in Headers */,
-               32484769201775F600AF9E5A /* SDAnimatedImageView.h in Headers */,
-               530E49EA16464C7C002868E7 /* SDWebImageDownloaderOperation.h in Headers */,
-               ABBE71A718C43B4D00B75E91 /* UIImageView+HighlightedWebCache.h in Headers */,
-               320CAE152086F50500CFFC80 /* SDWebImageError.h in Headers */,
-               321B37812083290E00C0EA77 /* SDImageLoader.h in Headers */,
-               325C4614223399F7004CAE11 /* SDImageGIFCoderInternal.h in Headers */,
-               321E60861F38E8C800405457 /* SDImageCoder.h in Headers */,
-               32484763201775F600AF9E5A /* SDAnimatedImageView+WebCache.h in Headers */,
-               329F1242223FAD3400B309FD /* SDInternalMacros.h in Headers */,
-               80B6DF7E2142B43300BCB334 /* NSImage+Compatibility.h in Headers */,
-               32D1221E2080B2EB003685A3 /* SDImageCacheDefine.h in Headers */,
-               AB615303192DA24600A2D8E9 /* UIView+WebCacheOperation.h in Headers */,
-               A18A6CC7172DC28500419892 /* UIImage+GIF.h in Headers */,
-               53EDFB8A17623F7C00698166 /* UIImage+MultiFormat.h in Headers */,
-               43A918641D8308FE00B3925F /* SDImageCacheConfig.h in Headers */,
-           );
-           runOnlyForDeploymentPostprocessing = 0;
-       };
        80B6DFB82142B71600BCB334 /* Headers */ = {
            isa = PBXHeadersBuildPhase;
            buildActionMask = 2147483647;
@@ -873,7 +746,6 @@
            buildPhases = (
                53761308155AD0D5005750A4 /* Sources */,
                53761311155AD0D5005750A4 /* Frameworks */,
-               53761315155AD0D5005750A4 /* Headers */,
            );
            buildRules = (
            );
@@ -909,7 +781,7 @@
        53922D66148C55810056699D /* Project object */ = {
            isa = PBXProject;
            attributes = {
-               LastUpgradeCheck = 0940;
+               LastUpgradeCheck = 9999;
                ORGANIZATIONNAME = Dailymotion;
                TargetAttributes = {
                    4A2CADFE1AB4BB5300B6BC39 = {
@@ -1102,7 +974,9 @@
            isa = XCBuildConfiguration;
            buildSettings = {
                APPLICATION_EXTENSION_API_ONLY = YES;
+               GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
                INFOPLIST_FILE = WebImage/Info.plist;
+               RUN_CLANG_STATIC_ANALYZER = NO;
            };
            name = Debug;
        };
@@ -1110,21 +984,27 @@
            isa = XCBuildConfiguration;
            buildSettings = {
                APPLICATION_EXTENSION_API_ONLY = YES;
+               GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
                INFOPLIST_FILE = WebImage/Info.plist;
+               RUN_CLANG_STATIC_ANALYZER = NO;
            };
            name = Release;
        };
        53761323155AD0D5005750A4 /* Debug */ = {
            isa = XCBuildConfiguration;
            buildSettings = {
+               GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
                PRODUCT_NAME = SDWebImage;
+               RUN_CLANG_STATIC_ANALYZER = NO;
            };
            name = Debug;
        };
        53761324155AD0D5005750A4 /* Release */ = {
            isa = XCBuildConfiguration;
            buildSettings = {
+               GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
                PRODUCT_NAME = SDWebImage;
+               RUN_CLANG_STATIC_ANALYZER = NO;
            };
            name = Release;
        };
@@ -1132,6 +1012,8 @@
            isa = XCBuildConfiguration;
            baseConfigurationReference = EA9E0C6E2195936400AFB434 /* Module-Debug.xcconfig */;
            buildSettings = {
+               GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
+               RUN_CLANG_STATIC_ANALYZER = NO;
            };
            name = Debug;
        };
@@ -1139,6 +1021,8 @@
            isa = XCBuildConfiguration;
            baseConfigurationReference = EA9E0C6B2195936400AFB434 /* Module-Release.xcconfig */;
            buildSettings = {
+               GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
+               RUN_CLANG_STATIC_ANALYZER = NO;
            };
            name = Release;
        };
@@ -1146,7 +1030,9 @@
            isa = XCBuildConfiguration;
            buildSettings = {
                APPLICATION_EXTENSION_API_ONLY = YES;
+               GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
                INFOPLIST_FILE = WebImage/Info.plist;
+               RUN_CLANG_STATIC_ANALYZER = NO;
                SUPPORTED_PLATFORMS = "macosx iphoneos iphonesimulator appletvsimulator appletvos";
                TARGETED_DEVICE_FAMILY = "1,2,3";
                TVOS_DEPLOYMENT_TARGET = 9.2;
@@ -1157,7 +1043,9 @@
            isa = XCBuildConfiguration;
            buildSettings = {
                APPLICATION_EXTENSION_API_ONLY = YES;
+               GCC_WARN_INHIBIT_ALL_WARNINGS = YES;
                INFOPLIST_FILE = WebImage/Info.plist;
+               RUN_CLANG_STATIC_ANALYZER = NO;
                SUPPORTED_PLATFORMS = "macosx iphoneos iphonesimulator appletvsimulator appletvos";
                TARGETED_DEVICE_FAMILY = "1,2,3";
                TVOS_DEPLOYMENT_TARGET = 9.2;

You're welcome ;)

bytemtek commented 5 years ago

Any fixing ?

Ilphrin commented 5 years ago

Hi @radex! Thanks for this patch =D Turning this in a PR would be awesome as it'd have more visibility, and more testing from community

exentrich commented 5 years ago

Same issue! It's deal breaker in my opinion.

dylancom commented 5 years ago

Same here...

facuacostag commented 5 years ago

Please, provide a fix for this. It's affecting production of some products.

tberman commented 5 years ago

To everyone asking for a fix to this issue. Two different fixes have been provided. One by downgrading, a second by using patch-package.

I agree that having an upstream version with a fix would be preferred but mewling about it’s impact only serves to detract from someone spending time to fix it.

In the future, support your friendly open source maintained with constructive comments, PRs, or other encouraging actions please!!

DylanVann commented 5 years ago

I don't entirely understand how to fix this issue. The solution from @radex seems to be just suppressing the issue. (Edit: Not exactly.)

Does anyone have any more insight as to how we could fix this?

sginn commented 5 years ago

My understanding of the issue is to modify the SDWebImage build phases such that the headers are not included in the final target.

The provided patch is a good fix.

Apple’s docs from the link I originally shared indicate to do exactly what he did:

“If your app links against a static library, then your archive contains header files because the library probably uses a Headers build phase to export these files as shown in Figure 4. Headers build phases do not work correctly with static library targets when archiving in Xcode. Delete this phase, add a Copy Files build phase to your library, and use it to export your header files. See Copying Files While Building a Product for more information about adding a Copy File build phase to your project.”

DylanVann commented 5 years ago

Hmm... That's modifying SDWebImage though, which we use as either a dependency with CoaoPods or a git submodule, neither of which really allows for that modification.

DylanVann commented 5 years ago

I guess this is something that was changed in SDWebImage, which was upgraded in 6.0.

dejavu20180307 commented 5 years ago

Finally I got here, you guys have no idea, how hard I found this. So frustrated, I kept getting generic xcode archive, and there is no debug log. I spent 3 days and re-add library one by one, till I found this is the culprit. Please fix it asap, someone else like me might be struggling with it.

nonotest commented 5 years ago

@radex patch worked for me

DylanVann commented 5 years ago

@dreampiggy Do you have any insight on this? Maybe there's a way we could use the framework instead of the static library.

dreampiggy commented 5 years ago

@DylanVann Is this issue related to some project changes ? Or only happended on CocoaPods ?

The header is copied, because of the default installation steps for Objective-C/C/C++ framework. You can try to use SKIP_INSTALL = YES to skip it. Only the final static library/dynamic framework is copied.

However, this may cause the framework integrator unable to use SDWebImage's function. I'll check it later.

dreampiggy commented 5 years ago

@DylanVann Any reproduce demo or steps ? Or enough environment information, for me to investigate this issue.

  1. Integration way: CocoaPods ? Or just using Xcode project (called react-native and npm)
  2. How fastimage link SDWebImage ? SDWebImage provide 3 different link ways, the Static Library (libSDWebImage.a), the Dynamic and Static Framework (SDWebImage.framework).
  3. SDWebImage version ? (For the Xcode project user, please check the Git Submodule of SDWebImage version)
  4. How the Archive, is the default Release Configuration, or custom configuration ?

From the description above, I guess there are some configuration, cause the libSDWebImage static library target, does not change its SKIP_INSTALL, so the final header files are copied to the Product (XXX.ipa). For Static Library, these information is build only and should set SKIP_INSTALL = YES during archive. For Dynamic Framework or Static Framework, since Apple use the vendored XXX.ipa/Frameworks/SDWebImage.framework, the SKIP_INSTALL = NO is used.

DylanVann commented 5 years ago

It can be reproduce with the example:

image

DylanVann commented 5 years ago

react-native-fast-image supports using SDWebImage as either a git submodule or as a CocoaPod. If it's used as a submodule it is included within ios/FastImage.xcodeproj:

image

I'm using the most recent SDWebImage while trying to resolve this (124509e / 5.0.4).

I heard something about React Native converging on CocoaPods as the solution for native iOS dependencies, maybe we should just drop the submodule integration, although that does complicate things for users a bit, especially if they aren't already using CocoaPods.

dreampiggy commented 5 years ago

@DylanVann I test the react-native-fast-image-example-cocoapods. It works for archive. Only the react-native-fast-image-example has this issue. CocoaPods user should have no any issue to use react-native-fast-image v6.0

So this is not the CocoaPods bug ? It's about the Xcode project configuration ?

I'll check and find the reason.

dreampiggy commented 5 years ago

@DylanVann I found the reason. It's because of SDWebImage's static library target's build phase. Using the Headers build phase will cause Archive issue.

image

This already in Xcode's FAQ: https://developer.apple.com/library/archive/technotes/tn2215/_index.html

image

I've created a PR: https://github.com/SDWebImage/SDWebImage/pull/2741

So, what's the solution ? Here are some ways:

  1. Using CocoaPods for react-native-fast-image
  2. Change react-native-fast-image, to use the SDWebImage target dependency (SDWebImage.framework), instead of SDWebImage static(libSDWebImage.a) target.
  3. Write a custom build phase to remove those headers (ugly hack)
  4. Wait for SDWebImage 5.0.5 release. And change the git submoudle tag version
DylanVann commented 5 years ago

This might be fixed ( thanks to @dreampiggy ) in the latest version of react-native-fast-image, unfortunately I can't confirm because:

image

Maybe WWDC related. I'll try to test and close this later.

DylanVann commented 5 years ago

Woo! It's working!

yarn add react-native-fast-image to upgrade!

hugomosh commented 5 years ago

The version 6.1.1 solves this issue but the >7 versions are not working. Xcode crashes