14 Replies Latest reply on Aug 1, 2016 9:35 AM by Chris W. Griffith

    Application loader error - icon

    dank77762582 Level 1

      When I upload my IPA file, I get an ITMS-9032 error: "Invalid image Path - No image found at the path referenced under the key 'CFBundleIconFiles': 'icon.png;"


      This is the line causing the error is   <icon src="img/icon.png" /> The img folder is inside the www folder, and there is an icon.png file.

      If I comment out the line, the error goes away.


      Any ideas?



        • 1. Re: Application loader error - icon
          kerrishotts Adobe Employee

          Would you mind sharing your entire config.xml file? (If there's bits you don't want to share, just x them out or remove them.)

          • 2. Re: Application loader error - icon
            dank77762582 Level 1

            Here it is. Thanks for taking a look.

            Note that except for the basic icon, I have all the other icons and splash screen entries commented out.


            <widget xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://K.com/ns/1.0" id="xxx.xxx.xxx" version="0.1.125">

              <name>AxiKit PhoneGap </name>

              <description>An accident reporting app.</description>

              <author href="xxx" email="xxx">xxx</author>

              <content src="index.html"/>

              <preference name="permissions" value="none"/>

              <preference name="orientation" value="portrait" />

              <preference name="target-device" value="universal"/>

              <preference name="fullscreen" value="true"/>

              <preference name="webviewbounce" value="true"/>

              <preference name="prerendered-icon" value="true"/>

              <preference name="stay-in-webview" value="false"/>

              <preference name="ios-statusbarstyle" value="black-opaque"/>

              <preference name="detect-data-types" value="true"/>

              <preference name="exit-on-suspend" value="false"/>

              <!-- <preference name="show-splash-screen-spinner" value="true"/> -->

              <preference name="auto-hide-splash-screen" value="true"/>

              <preference name="disable-cursor" value="false"/>

              <preference name="android-minSdkVersion" value="7"/>

              <preference name="android-installLocation" value="auto"/>

              <preference name="StatusBarOverlaysWebView" value="false"/>

              <preference name="StatusBarBackgroundColor" value="#000000"/>

              <preference name="StatusBarStyle" value="lightcontent" />



              <plugin name="cordova-plugin-statusbar" />

              <plugin name="org.apache.cordova.battery-status"/>

              <plugin name="org.apache.cordova.camera"/>

              <plugin name="org.apache.cordova.media-capture"/>

              <plugin name="org.apache.cordova.console"/>

              <plugin name="org.apache.cordova.contacts"/>

              <plugin name="org.apache.cordova.device"/>

              <plugin name="org.apache.cordova.device-motion"/>

              <plugin name="org.apache.cordova.device-orientation"/>

              <plugin name="org.apache.cordova.dialogs"/>

              <plugin name="org.apache.cordova.file"/>

              <plugin name="org.apache.cordova.file-transfer"/>

              <plugin name="org.apache.cordova.geolocation"/>

              <plugin name="org.apache.cordova.globalization"/>

              <plugin name="org.apache.cordova.inappbrowser"/>

              <plugin name="org.apache.cordova.media"/>

              <plugin name="org.apache.cordova.network-information"/>

              <plugin name="org.apache.cordova.splashscreen"/>

              <plugin name="org.apache.cordova.vibration"/>

              <plugin name="cordova-plugin-x-toast" source="npm"/>

              <plugin name="cordova-plugin-email-composer" source="npm"/>

              <!-- <plugin name="cordova-sms-plugin" /> -->

              <plugin name="cordova-plugin-x-socialsharing" />



              <icon src="img/icon.png" />

              <!-- <icon src="www/res/icon/android/icon-36-ldpi.png" gap:platform="android" gap:qualifier="ldpi"/>

              <icon src="www/res/icon/android/icon-48-mdpi.png" gap:platform="android" gap:qualifier="mdpi"/>

              <icon src="www/res/icon/android/icon-72-hdpi.png" gap:platform="android" gap:qualifier="hdpi"/>

              <icon src="www/res/icon/android/icon-96-xhdpi.png" gap:platform="android" gap:qualifier="xhdpi"/>

              <icon src="www/res/icon/blackberry/icon-80.png" gap:platform="blackberry" gap:state="hover"/> -->

              <!-- <icon src="www/res/icon/ios/icon-57.png" gap:platform="ios" width="57" height="57"/>

              <icon src="www/res/icon/ios/icon-72.png" gap:platform="ios" width="72" height="72"/>

              <icon src="www/res/icon/ios/icon-57-2x.png" gap:platform="ios" width="114" height="114"/>

              <icon src="www/res/icon/ios/icon-72-2x.png" gap:platform="ios" width="144" height="144"/> -->

              <!-- <icon src="www/res/icon/webos/icon-64.png" gap:platform="webos"/>

              <icon src="www/res/icon/windows-phone/icon-48.png" gap:platform="winphone"/>

              <icon src="www/res/icon/windows-phone/icon-173-tile.png" gap:platform="winphone" gap:role="background"/>

              <gap:splash src="www/res/screen/android/screen-ldpi-portrait.png" gap:platform="android" gap:qualifier="port-ldpi"/>

              <gap:splash src="www/res/screen/android/screen-mdpi-portrait.png" gap:platform="android" gap:qualifier="port-mdpi"/>

              <gap:splash src="www/res/screen/android/screen-hdpi-portrait.png" gap:platform="android" gap:qualifier="port-hdpi"/>

              <gap:splash src="www/res/screen/android/screen-xhdpi-portrait.png" gap:platform="android" gap:qualifier="port-xhdpi"/>

              <gap:splash src="www/res/screen/blackberry/screen-225.png" gap:platform="blackberry"/> -->

              <!-- <gap:splash src="www/res/screen/ios/screen-iphone-portrait.png" gap:platform="ios" width="320" height="480"/>

              <gap:splash src="www/res/screen/ios/screen-iphone-portrait-2x.png" gap:platform="ios" width="640" height="960"/>

              <gap:splash src="www/res/screen/ios/screen-iphone-portrait-568h-2x.png" gap:platform="ios" width="640" height="1136"/>

              <gap:splash src="www/res/screen/ios/screen-ipad-portrait.png" gap:platform="ios" width="768" height="1024"/>

              <gap:splash src="www/res/screen/ios/screen-ipad-landscape.png" gap:platform="ios" width="1024" height="768"/> -->

              <!-- <gap:splash src="www/res/screen/windows-phone/screen-portrait.jpg" gap:platform="winphone"/> -->

              <access origin="*"/>

              <plugin name="cordova-plugin-whitelist" version="1"/>

              <allow-intent href="http://*/*"/>

              <allow-intent href="https://*/*"/>

              <allow-intent href="tel:*"/>

              <allow-intent href="sms:*"/>

              <allow-intent href="mailto:*"/>

              <allow-intent href="geo:*"/>

              <platform name="android">

                <allow-intent href="market:*"/>


              <platform name="ios">

                <allow-intent href="itms:*"/>

                <allow-intent href="itms-apps:*"/>



            • 3. Re: Application loader error - icon
              kerrishotts Adobe Employee

              Ok -- I see several things that are going to cause problems, although they may not fix your immediate issue. Be sure to test, test, test if you make any changes in case it breaks your app:


              <plugin name="org.apache.cordova.battery-status"/>

              You're using the older-style plugin names. You should move to the current naming scheme instead: "cordova-plugin-battery-status".


              Also, you aren't specifying version numbers with your plugins. This is risky with PhoneGap Build, because when you next build your app, you'll receive a newer version of a plugin. While this might sound like a good thing initially, new versions may in fact introduce breaking changes and cause your app to fail. You can specify version numbers by adding the "spec" attribute, as explained here: PhoneGap Build Documentation


                <icon src="img/icon.png" />


              Per the PhoneGap Build documentation (emphasis mine):


              The default icon must be named icon.png and must reside in the root of your application folder.

              <icon src="icon.png" />



              Also, you aren't going to be able to get away with specifying only one icon for iOS. Instead, you need to create a version of the plugin for each size of icon. Per the PhoneGap Build Documentation:



              We support classic, retina, iPhone 5 and iPad displays.

              The names below reflect the names of the destination files when they are added to the application. During app submittal you may get feedback that has a reference to these filenames.

              iOS 7.0+

              <!-- iPhone 6 / 6+ -->
              <icon src="icon-60@3x.png" platform="ios" width="180" height="180" />

              <!-- iPhone / iPod Touch  -->
              <icon src="icon-60.png" platform="ios" width="60" height="60" />
              <icon src="icon-60@2x.png" platform="ios" width="120" height="120" />

              <!-- iPad -->
              <icon src="icon-76.png" platform="ios" width="76" height="76" />
              <icon src="icon-76@2x.png" platform="ios" width="152" height="152" />

              <!-- Settings Icon -->
              <icon src="icon-small.png" platform="ios" width="29" height="29" />
              <icon src="icon-small@2x.png" platform="ios" width="58" height="58" />

              <!-- Spotlight Icon -->
              <icon src="icon-40.png" platform="ios" width="40" height="40" />
              <icon src="icon-40@2x.png" platform="ios" width="80" height="80" />

              iOS 6.1

              <!-- iPhone / iPod Touch -->
              <icon src="icon.png" platform="ios" width="57" height="57" />
              <icon src="icon@2x.png" platform="ios" width="114" height="114" />

              <!-- iPad -->
              <icon src="icon-72.png" platform="ios" width="72" height="72" />
              <icon src="icon-72@2x.png" platform="ios" width="144" height="144" />

              <!-- iPhone Spotlight and Settings Icon -->
              <icon src="icon-small.png" platform="ios" width="29" height="29" />
              <icon src="icon-small@2x.png" platform="ios" width="58" height="58" />

              <!-- iPad Spotlight and Settings Icon -->
              <icon src="icon-50.png" platform="ios" width="50" height="50" />
              <icon src="icon-50@2x.png" platform="ios" width="100" height="100" />


              Note that in your code, you're using:


                <icon src="www/res/icon/ios/icon-72.png" gap:platform="ios" width="72" height="72"/>

              You'll want to remove the "gap:" prefix on "gap:platform" to match the modern format.


              The same applies to launch screens -- you need one for each option (and supported device). Large screen support on iOS, for example, is determined by whether or not you supply a launch screen of suitable size.


              From the docs (same page):



              We support classic, retina, iPhone 5 and iPad displays; the following will define splash screens for each of those. Standard iPads have two different splash screens, portrait, landscape. Retina iPads have two additional splash screens, retina portrait and retina landscape.

              The names below reflect the names of the destination files when they are added to the application. During app submittal you may get feedback that has a reference to these filenames.

              <!-- iPhone and iPod touch -->
              <splash src="Default.png" platform="ios" width="320" height="480" />
              <splash src="Default@2x.png" platform="ios" width="640" height="960" />

              <!-- iPhone 5 / iPod Touch (5th Generation) -->
              <splash src="Default-568h@2x.png" platform="ios" width="640" height="1136" />

              <!-- iPhone 6 -->
              <splash src="Default-667h@2x.png" platform="ios" width="750" height="1334" />
              <splash src="Default-Portrait-736h@3x.png" platform="ios" width="1242" height="2208" />
              <splash src="Default-Landscape-736h@3x.png" platform="ios" width="2208" height="1242" />

              <!-- iPad -->
              <splash src="Default-Portrait.png" platform="ios" width="768" height="1024" />
              <splash src="Default-Landscape.png" platform="ios" width="1024" height="768" />

              <!-- Retina iPad -->
              <splash src="Default-Portrait@2x.png" platform="ios" width="1536" height="2048" />
              <splash src="Default-Landscape@2x.png" platform="ios" width="2048" height="1536" />


              Finally, your whitelist is wide open. Unless you are building a browser or some other app that needs unfettered access to external resources, I highly suggest limiting this to the servers you need access to.


              Hope that helps!

              • 4. Re: Application loader error - icon
                dank77762582 Level 1

                Thanks for the detailed response. I really appreciate you taking the time.
                I made all the "org.apache.cordova.*" changes. I liked your suggestion on using versions, I'll add that as I go.


                The one thing I can't seem to get around is the error on icon path. If I have  "<icon src="icon.png" />" in the config file, and if I have the icon.pgn file at the top root, or in the www level directory, I get the error below. If I comment out the icon reference I don't get a fatal error, I just get a warning.




                Here's what my directory structure looks like:


                There must be something I'm missing. Any ideas? Thanks.

                • 5. Re: Application loader error - icon
                  kerrishotts Adobe Employee

                  When you're uploading to PhoneGap Build, you'll be uploading the "www" folder which should also contain the config.xml file. File paths are relative to the config.xml file.


                  Your current structure has the images outside of the "www" folder, which means they aren't ever being uploaded in the first place. Try moving them into the "www" folder and see how that goes.

                  • 6. Re: Application loader error - icon
                    dank77762582 Level 1

                    Try, try, again....


                    First I moved all the icons in the WWW directory; no joy.

                    Then I zipped just the WWW directory; no joy.

                    Finally, I changed the config file entries to include gap:platform="ios" with width and height.


                    This worked!


                    <icon src="icon.png" gap:platform="ios" width="57" height="57" />

                    <icon src="icon-72.png" gap:platform="ios" width="72" height="72"/>


                    Thanks for your help.

                    • 7. Re: Application loader error - icon
                      kerrishotts Adobe Employee

                      Glad you got it working.

                      • 8. Re: Application loader error - icon
                        dank77762582 Level 1



                        I did a new build today. No changes in the config file except the version number. My icons and splash screens are gone from the iPhone. Did something change on the build side of things?



                        • 9. Re: Application loader error - icon

                          We are having the same issue. Are there new requirements that were introduced when the version of Phonegap was updated recently?

                          • 10. Re: Application loader error - icon
                            kerrishotts Adobe Employee

                            Not that I'm aware of, but PGB is now using 6.3.0. For a quick fix, try to pin your project to the previous version of PGB and rebuild. See  Adobe PhoneGap Build  for version #s.


                            You might want to try avoiding the use of "gap:platform" and just wrap your assets in "platform" tags, like so:


                            <platform name="ios">

                               <icon ... />



                            See Icons and Splash | PhoneGap Docs

                            • 11. Re: Application loader error - icon
                              dank77762582 Level 1

                              First I tried using 6.2.0; same results - no icons/no splash screen (actually phonegap defaults).


                              Then I moved the "gap:platform..." for the icons to the <platform name "ios">.

                              Now I get a new error when I try to upload: "The package does not contain an Info.plist." I've done hundreds of builds and this is the first time I've seen this issue.

                              • 12. Re: Application loader error - icon
                                dank77762582 Level 1

                                Ignore last message - pilot error. Sorry.

                                • 13. Re: Application loader error - icon
                                  dank77762582 Level 1

                                  This is driving me crazy. It was working fine - icons and splash worked. Then 6.3.0 came along and the icon and splash no longer work.

                                  AppLoader doesn't complain.


                                  I've tried with and without the platform tag.

                                  I've tried with and without the www/ in the paths.

                                  I've tried zipping from the / and zipping from /www


                                  Nothing seems to work.

                                  I'd appreciate it if you could take a look. Here's my config.xml file:


                                  <?xml version='1.0' encoding='utf-8'?>

                                  <widget id="com.dgkconsulting" version="0.1.211" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://K.com/ns/1.0">

                                      <name>AxiKit PhoneGap </name>

                                      <description>A simple app</description>

                                      <author email="dan.kalagher@gmail.com" href="http://www.dgkconsulting.com">Dan Kalagher</author>

                                      <content src="index.html" />

                                      <preference name="permissions" value="none" />

                                      <preference name="orientation" value="portrait" />

                                      <preference name="target-device" value="universal" />

                                      <preference name="fullscreen" value="false" />

                                      <preference name="webviewbounce" value="true" />

                                      <preference name="prerendered-icon" value="true" />

                                      <preference name="stay-in-webview" value="false" />

                                      <preference name="ios-statusbarstyle" value="black-opaque" />

                                      <preference name="detect-data-types" value="true" />

                                      <preference name="exit-on-suspend" value="false" />

                                      <preference name="auto-hide-splash-screen" value="true" />

                                      <preference name="disable-cursor" value="false" />

                                      <preference name="android-minSdkVersion" value="7" />

                                      <preference name="android-installLocation" value="auto" />

                                      <preference name="StatusBarOverlaysWebView" value="false" />

                                      <preference name="StatusBarBackgroundColor" value="#000000" />

                                      <preference name="StatusBarStyle" value="lightcontent" />

                                      <preference name="SplashScreenDelay" value="7000" />

                                      <plugin name="cordova-plugin-statusbar" />

                                      <plugin name="cordova-plugin-battery-status" />

                                      <plugin name="cordova-plugin-camera" />

                                      <plugin name="cordova-plugin-media-capture" />

                                      <plugin name="cordova-plugin-console" />

                                      <plugin name="cordova-plugin-contacts" />

                                      <plugin name="cordova-plugin-device" />

                                      <plugin name="cordova-plugin-device-motion" />

                                      <plugin name="cordova-plugin-device-orientation" />

                                      <plugin name="cordova-plugin-dialogs" />

                                      <plugin name="cordova-plugin-file" />

                                      <plugin name="cordova-plugin-file-transfer" />

                                      <plugin name="cordova-plugin-geolocation" />

                                      <plugin name="cordova-plugin-globalization" />

                                      <plugin name="cordova-plugin-inappbrowser" />

                                      <plugin name="cordova-plugin-media" />

                                      <plugin name="cordova-plugin-network-information" />

                                      <plugin name="cordova-plugin-splashscreen" />

                                      <plugin name="cordova-plugin-vibration" />

                                      <plugin name="cordova-plugin-x-toast" source="npm" />

                                      <!-- <plugin name="cordova-plugin-email-composer" source="npm" /> -->

                                      <!-- <gap:plugin name="cordova-plugin-email-composer" version="0.8.3" source="npm" /> -->

                                      <icon  src="icon.png" />



                                      <platform name="ios">

                                          <plugin name="cordova-plugin-email-composer" source="npm" version="0.8.3" />


                                      <platform name ="ios">

                                          <icon  src="www/res/icon/ios/icon.png" height="57" width="57" />

                                          <icon  src="www/res/icon/ios/icon-72.png" height="72" width="72" />

                                          <icon  src="www/res/icon/ios/icon-57-2x.png" height="114" width="114" />

                                          <icon  src="www/res/icon/ios/icon-72-2x.png" height="144" width="144" />

                                          <icon  src="www/res/icon/ios/icon-76.png" height="76" width="76" />

                                          <icon  src="www/res/icon/ios/icon-120.png" height="120" width="120" />

                                          <icon  src="www/res/icon/ios/icon-152.png" height="152" width="152" />



                                      <platform name="android">

                                          <plugin spec="https://github.com/katzer/cordova-plugin-email-composer.git#0.8.2" source="git" />



                                  <!-- splash screens -->

                                  <splash src="www/res/screen/ios/Default-568h@2x~iphone.png" platform="ios" width="640" height="1136"/>

                                     <!-- <splash platform="ios" src="res/screen/ios/Default-568h@2x~iphone_640x1136.png" />

                                     <splash platform="ios" src="res/screen/ios/Default@2x~iphone_640x960.png"  />

                                     <splash platform="ios" src="res/screen/ios/Default.png"  /> -->



                                      <access origin="*" />

                                      <access origin="mailto:*" launch-external="yes" />

                                      <plugin name="cordova-plugin-whitelist" version="1" />

                                      <allow-intent href="http://*/*" />

                                      <allow-intent href="https://*/*" />

                                      <allow-intent href="tel:*" />

                                      <allow-intent href="sms:*" />

                                      <allow-intent href="mailto:*" />

                                      <allow-intent href="geo:*" />

                                      <platform name="android">

                                          <allow-intent href="market:*" />


                                      <platform name="ios">

                                          <allow-intent href="itms:*" />

                                          <allow-intent href="itms-apps:*" />


                                      <engine name="ios" spec="~4.1.1" />


                                  • 14. Re: Application loader error - icon
                                    Chris W. Griffith Adobe Community Professional

                                    Drop the www from the directory path. This is telling PhoneGap build to look into a www within your root directory.

                                    I would also delete the app from your iOS device before installing the new version.


                                    You can try using my ConfiGAP tool (ConfiGAP ). If it can display your icons in the app, PhoneGap Build should as well.