0

I have been reading up a lot about the "Invalid Images Path" failed validation message when trying to validate my archived app. My problem is, that I was already using the asset catalog and for some reason now it just won't recognize the AppIcon image set.

Here is a screenshot of my asset catalog in Xcode 5: Here is a screenshot of my asset catalog in Xcode 5:

Here are my current Target settings and if I click the small right arrow for AppIcon it takes me to the correct images: enter image description here

This is the error I'm getting after validating my recently created archive: enter image description here

And there is no icon for the archive either: enter image description here

Here is my info.plist file contents:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIcons</key>
<dict>
    <key>UINewsstandIcon</key>
    <dict>
        <key>CFBundleIconFiles</key>
        <array>
            <string>newsstand-app-icon</string>
        </array>
        <key>UINewsstandBindingEdge</key>
        <string>UINewsstandBindingEdgeLeft</string>
        <key>UINewsstandBindingType</key>
        <string>UINewsstandBindingTypeMagazine</string>
    </dict>
</dict>
<key>CFBundleIcons~ipad</key>
<dict>
    <key>UINewsstandIcon</key>
    <dict>
        <key>CFBundleIconFiles</key>
        <array>
            <string>newsstand-app-icon</string>
        </array>
        <key>UINewsstandBindingEdge</key>
        <string>UINewsstandBindingEdgeLeft</string>
        <key>UINewsstandBindingType</key>
        <string>UINewsstandBindingTypeMagazine</string>
    </dict>
</dict>
<key>CFBundleIdentifier</key>
<string>com.magloft.magazine</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIBackgroundModes</key>
<array>
    <string>newsstand-content</string>
    <string>remote-notification</string>
</array>
<key>UINewsstandApp</key>
<true/>
<key>UIRequiredDeviceCapabilities</key>
<array>
    <string>armv7</string>
</array>
<key>UIStatusBarHidden</key>
<false/>
<key>UIStatusBarHidden~ipad</key>
<false/>
<key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
    <string>UIInterfaceOrientationLandscapeRight</string>
    <string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationPortraitUpsideDown</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
    <string>UIInterfaceOrientationLandscapeRight</string>
</array>

And here is the contents of the Contents.json file for the AppIcon iconset:

{
  "images" : [
{
  "size" : "29x29",
  "idiom" : "iphone",
  "filename" : "iphone-29x29.png",
  "scale" : "1x"
},
{
  "size" : "29x29",
  "idiom" : "iphone",
  "filename" : "iphone-29x29@2x.png",
  "scale" : "2x"
},
{
  "size" : "40x40",
  "idiom" : "iphone",
  "filename" : "iphone-40x40@2x.png",
  "scale" : "2x"
},
{
  "size" : "57x57",
  "idiom" : "iphone",
  "filename" : "iphone-57x57.png",
  "scale" : "1x"
},
{
  "size" : "57x57",
  "idiom" : "iphone",
  "filename" : "iphone-57x57@2x.png",
  "scale" : "2x"
},
{
  "size" : "60x60",
  "idiom" : "iphone",
  "filename" : "iphone-60x60@2x.png",
  "scale" : "2x"
},
{
  "size" : "29x29",
  "idiom" : "ipad",
  "filename" : "ipad-29x29.png",
  "scale" : "1x"
},
{
  "size" : "29x29",
  "idiom" : "ipad",
  "filename" : "ipad-29x29@2x.png",
  "scale" : "2x"
},
{
  "size" : "40x40",
  "idiom" : "ipad",
  "filename" : "ipad-40x40.png",
  "scale" : "1x"
},
{
  "size" : "40x40",
  "idiom" : "ipad",
  "filename" : "ipad-40x40@2x.png",
  "scale" : "2x"
},
{
  "size" : "50x50",
  "idiom" : "ipad",
  "filename" : "ipad-50x50.png",
  "scale" : "1x"
},
{
  "size" : "50x50",
  "idiom" : "ipad",
  "filename" : "ipad-50x50@2x.png",
  "scale" : "2x"
},
{
  "size" : "72x72",
  "idiom" : "ipad",
  "filename" : "ipad-72x72.png",
  "scale" : "1x"
},
{
  "size" : "72x72",
  "idiom" : "ipad",
  "filename" : "ipad-72x72@2x.png",
  "scale" : "2x"
},
{
  "size" : "76x76",
  "idiom" : "ipad",
  "filename" : "ipad-76x76.png",
  "scale" : "1x"
},
{
  "size" : "76x76",
  "idiom" : "ipad",
  "filename" : "ipad-76x76@2x.png",
  "scale" : "2x"
}
  ],
  "info" : {
"version" : 1,
"author" : "xcode"
  },
  "properties" : {
"pre-rendered" : true
  }
}

I have tried the following without any success:

1) Remove the AppIcon image set and created a new one from scratch by addin it in Xcode and dragging images to all placeholders. 2) Removed the CFBundleIcons from info.plist 3) Removed the CFBundleIcons~ipad from info.plist (I added this one because my app wouldn't show the default newsstand icon in iOS 7+ on the shelf and this fixed it. 4) Removed both keys from above and still got the errors including the missing key/value form newsstand icon binding type. 5) Tried targeting iOS 7.0 instead of iOS 6.0.

I have no idea why this has happend all of a sudden. I'm thinking maybe because I updated Xcode to Version 5.1 (5B130a)? I'm running OSX 10.9.2 which is the latest I believe.

I did find this Invalid Image Path - No image found at the path. CFBundleIcons Xcode 5 and that sounds very much like my case. I have made sure that the actual asset catalog is part of the target (see first screenshot) but the OP talks about making sure each image is part of the target?

UPDATE: Adding compiled Info.plist content. I couldn't open it as it's compressed, so I grabbed a screenshot. I can see some references to images, but have no idea where to find these in the Xcode project? I have tried to search for some names but that yields no result.

enter image description here

My build log seems OK but this warning stands out:

Warning: The Copy Bundle Resources build phase contains this target's Info.plist file 'Baker/Magloft-Info.plist'.

Not sure what it means, but I deleted the app-info.plist file, created a new one and copied in the XML from the original app-info.plist file (this is based on an open source project that works).

Any suggestions to what I can try? Thanks!

Community
  • 1
  • 1
  • May I ask if this happens only in this project? If you do that in a different project, will it work? Because it could be the case that the xproj structure has some sort of corruption. But that won't be the case if it doesn't work for other projects as well. Try that and let me know. – isklikas Mar 24 '14 at 00:46
  • Hi @matt, I was under the impression that since I'm using Asset Catalog those entries aren't needed? Xcode is supposed to generate the info.plist information on archive? – Nicholas John Martin Mar 24 '14 at 01:57
  • Hey @isklikas I think this happens only for this project, and I have created several other Newsstand apps that work fine. I had some issues getting the newsstand icon to work in iOS7+ and have been hacking around the info.plist, maybe something broke it?? – Nicholas John Martin Mar 24 '14 at 01:59
  • @NicholasJohnMartin Yes, I realized that and that's why I deleted my comment. :( Can you crack open the archive and show what its compiled Info.plist looks like? And are the icons present in the archive's built app bundle? And what does the build log show about all this? – matt Mar 24 '14 at 02:29
  • @matt I added a screenshot of the info.plist from the archive. None of the App Icon files are in there, but all of the launch images are there. The build log shows a bunch of warnings, but only one stands out a little and I've added that above about the app-info.plist – Nicholas John Martin Mar 24 '14 at 14:43
  • The compiled Info.plist is referring to icon files named AppIcon29x29 and so on. The asset catalog is supposed to generate these when it is compiled, as part of the build process, and you should be able to see it doing that in the build log. If it fails to do so, that completely explains the validation errors in your screen shot. – matt Mar 24 '14 at 16:30
  • "The build log shows a bunch of warnings" You should not see _any_ warnings. The target's info.plist should certainly not be in the copy resources build phase. This project seems very badly hosed. I strongly suggest that you start over from scratch. Do NOT delete the info.plist and try to recreate it by hand; do not attempt to edit it or paste into it by hand. Start with a new template-based project and copy code files and resources into it in small batches. – matt Mar 24 '14 at 16:37

1 Answers1

1

I finally figured out what this was all about. Apparently Xcode didn't like my actual icon graphics. In a last desperate attempt, I tried to create new icon graphics that were very simple and with no shadow effects. Still don't know if this was the actual cause but they were all accepted without any problems.

Thanks to all that contributed to this mystery!