Missing required file icon - Error ITMS-90022 & ITMS-90023

AOCT.08AOCT.08 USMember
edited July 2016 in Xamarin.iOS

Hi All. Running the latest stable release of Xamarin (Xamarin version: 4.1.1.3 Xamarin.iOS: 9.8.1) and trying to build my Xamarin Forms app for a release to iTunes Connect for test flight. Tried building for both AppStore and Ad-Hoc and get the same error when trying to upload the .ipa about required icon files missing for 120x120, 76x76, and 152x152 (ERROR ITMS-90022, ERROR ITMS-90023).

[2016-07-18 09:03:27 EDT]

ERROR: ERROR ITMS-90022: "Missing required icon file. The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format for iOS versions >= 7.0."
[2016-07-18 09:03:27 EDT] ERROR: ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '76x76' pixels, in .png format for iOS versions >= 7.0."
[2016-07-18 09:03:27 EDT] ERROR: ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '152x152' pixels, in .png format for iOS versions >= 7.0."

image

I'm using Assets for the App Icons and all of the app icons are uploaded, so it seems that for some reason they aren't being built/added into the .ipa properly.

I also tried downgrading to the previous version of Xamarin.iOS, and still have the same issue. Also tried building both from Visual Studio and Xamarin Studio, and still have the same issues.

Any ideas on how to resolve?

Answers

  • Try to manually include the image files into your appiconset.

    First, make sure you have the files needed. They are:

    [email protected]
    Icon-76.png
    [email protected]

    They gotta have exactly these name and must be 120x120 pixels, 76x76 pixels and 152x152 pixels respectively.

    To add those files, right click on your AppIcons.appiconset (maybe your asset will have another name), select "Add" and then "Add Files..." option. Add the files to your project.

    Make sure their build action are set to ImageAsset.

    I think you will have to make some changes into your Contents.json file inside your Icon Assets. Make a backup of this file before you do this. Below are the lines that you will probably have to add into your Contents.json.

    {
    "filename": "[email protected]",
    "size": "60x60",
    "scale": "2x",
    "idiom": "iphone"
    },

    {
    "filename": "Icon-76.png",
    "size": "76x76",
    "scale": "1x",
    "idiom": "ipad"
    },

    {
    "filename": "[email protected]",
    "size": "76x76",
    "scale": "2x",
    "idiom": "ipad"
    },

  • DarrenMcGrath86DarrenMcGrath86 GBMember ✭✭

    I am also having this issue also @AOCT.08 did bernado's solution work for you as i am still getting the same error? I have tried on both Xamarin Studio Mac and in Visual Studio

  • AOCT.08AOCT.08 USMember

    @DarrenMcGrath.8750 said:
    I am also having this issue also @AOCT.08 did bernado's solution work for you as i am still getting the same error? I have tried on both Xamarin Studio Mac and in Visual Studio

    I haven't tried Bernado's resolution yet; however, to get it working I switched from using Image Assets and instead just added the images to the info.plist file/project in Visual Studio and it solved the issue.

    Right click the iOS project in Visual Studio -> Click Properties -> iOS Application -> App, Spotlight and Settings Icon Section -> Set Asset Catalog to Don't Use Asset Catalogs, and then just manually add the app icons there.

  • DarrenMcGrath86DarrenMcGrath86 GBMember ✭✭

    My solution as the asset catalogue icons are still not working in both Xamarin Studio and Visual Studio

    1) open Info.plist in VisualStudio and under App. Spotlight and Settings Icons select "Don't use Asset Catalogs"
    2) close Visual Studio and open the Info.plist file in a text editor and manually typed

            <key>CFBundleIconFiles</key>
                <array>
                    <string>[email protected]</string>
                    <string>[email protected]</string>
                    <string>Icon-72.png</string>
                    <string>[email protected]</string>
                    <string>Icon.png</string>
                    <string>[email protected]</string>
                    <string>Icon-76.png</string>
                    <string>[email protected]</string>
                    <string>[email protected]</string>
                    <string>Icon-Small-50.png</string>
                    <string>Icon-Small-40.png</string>
                    <string>[email protected]</string>
                    <string>Icon-Small.png</string>
                    <string>[email protected]</string>
                </array>
                <key>UIPrerenderedIcon</key>
                <true/>
    

    3) drag and drop the corresponding files that must be named exactly the same as each icon into the Resources folder and make sure the Build Action is set to BundleResource for each file

    The app store now accepts my build... :-)

  • DarrenMcGrath86DarrenMcGrath86 GBMember ✭✭

    also if you change anything in your info.plist editor after manually editing it will be overridden so be sure to check again before you do a final build

  • Thanks Darren, it solve my problem.

  • Dsadowski3Dsadowski3 USMember

    My resolution was to take the build and run it in Xamarin Studio on the Mac. I opened the Plist and where the App icons and Lunch Icons fields are, a button appeared to use appIcons(i dont recall the actual title of the button). Once clicked new folder appeard called Assets.xcassets. In that folder i was able to upload/replace and/or add missing images. Once i added all the icons i rebuild the app in Visual Studio and worked. Disclaimer, i had manually replace most of the icons and add missing icons that did not have @2x in the name.

    In Visual Studio, in the Info.plist, under Universal Icons, change asset Catalog to AppIcons as well as LunchIcons and it should work. If that does not work then Asset Catalog should remain Don't use Asset Catalogs and manually add the images to each open space.

  • BasilJohnBasilJohn NZMember ✭✭

    Thanks Darren, it solve my problem.

  • I had exactly the same problem, I cant get it working with the Asset Catalog., keep getting the "Error ITMS-90022 120x120" error while that file is pressent. DarrenMcGrath.8750 answer fixed it for me!

  • fernando3xfernando3x BRMember

    Hi all. Today I had the same problem with the lastest update by now (Xamarin VS 4.5.0.476, and Xamarin iOS 10.10.0.35). In my case, I found that the problem was related to the iOS project file. I will describe what happened.

    I was developing an app that used an old version of Xamarin, and after doing the latest update, my launch screens did not displayed the right images on application startup for iOS.
    To solve this, I migrated the resources that was previously added to the project as images to use the new 'Assets Catalog', and then, dismissed that bunch of screens with resolution in the file names.

    To make use of the Assets Catalog, I opened the Info.plist file through VS, and then on the 'Visual Assets' tab, and clicked on 'Use Asset Catalog' button for App Icons (I was planning to use the Storyboard to make the splash screen). At this time, Visual Studio has related the 'Source' combobox of App Icons, but also related the 'Source' of Launch Images.

    Since I did not want to have all that files again for my splash, I decided to use the LaunchScreen.storyboard to manage the splash for all resolutions. So, back to Info.plist, I selected 'None' for the Launch Images asset in Info.plist, and the storyboard file for "Launch Screen".

    Now, inside the 'Media' file, on Asset Catalog (in Solution Explorer), after choosing every icon file needed for each resolution in the 'App Icon' section, I deleted the entry for 'Launch Images' (not used anymore in Info.plist as stated) and then deleted the folder LaunchImages that was on Resources\Media.xcassets in disk.

    After a release build, when I selected the ipa, the 'Application Upoloader' displayed the message of missing icons for some resolutions. Checking the ipa file, I noted that the icons in Media.xcassets was not copied.

    To solve that error, I checked the .csproj of iOS, and found a reference to the LaunchImages folder that was not on my project anymore.

    <ItemGroup>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\Contents.json">
          <InProject>false</InProject>
    </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\LaunchImages.launchimage\Contents.json">
        <InProject>false</InProject>
        </ImageAsset>
    </ItemGroup>
    

    ...

    Editing this lines to remove that reference makes all icons of AppIcons.appiconset to be inserted on the ipa in my next build.

    I think if just that invalid reference to the LaunchImages invalidates all the ItemGroup?

    In the next step to correct the csproj file, I replaced the ItemGroup displayed above for the following lines:

    <ItemGroup>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\Contents.json">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\Icon-167.png">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\[email protected]">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\[email protected]">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\Icon-76.png">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\[email protected]">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\Icon-Small-40.png">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\[email protected]">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\[email protected]">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\Icon-Small.png">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\[email protected]">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\[email protected]">
          <InProject>false</InProject>
        </ImageAsset>
      </ItemGroup>
    

    ...and finally, the assets was added correctly on all of my builds. Note that there are one entry for each icon in my asset file (same name, same case).

    If you are having the 'missing icons' problem, here are some tips:

    • Before you try to upload your app to the App Store, open the file ipa (like a zip file) and check if your assets was copied there;
    • Check the .csproj for invalid references in "";
    • Check the case of file names (case sensitive?);
    • Make a clean build deleting the bin/obj files;
    • If your phone are not displaying the icons properly try to reboot the device. That saved me some times;

    Hope that if someone is upgrading your projects and making use of Asset Catalogs, this can be useful in some way.

    :D

  • fernando3xfernando3x BRMember

    Hi all. Today I had the same problem with the lastest update by now (Xamarin VS 4.5.0.476, and Xamarin iOS 10.10.0.35). In my case, I found that the problem was related to the iOS project file. I will describe what happened.

    I was developing an app that used an old version of Xamarin, and after doing the latest update, my launch screens did not displayed the right images on application startup for iOS.
    To solve this, I migrated the resources that was previously added to the project as images to use the new 'Assets Catalog', and then, dismissed that bunch of screens with resolution in the file names.

    To make use of the Assets Catalog, I opened the Info.plist file through VS, and then on the 'Visual Assets' tab, and clicked on 'Use Asset Catalog' button for App Icons (I was planning to use the Storyboard to make the splash screen). At this time, Visual Studio has related the 'Source' combobox of App Icons, but also related the 'Source' of Launch Images.

    Since I did not want to have all that files again for my splash, I decided to use the LaunchScreen.storyboard to manage the splash for all resolutions. So, back to Info.plist, I selected 'None' for the Launch Images asset in Info.plist, and the storyboard file for "Launch Screen".

    Now, inside the 'Media' file, on Asset Catalog (in Solution Explorer), after choosing every icon file needed for each resolution in the 'App Icon' section, I deleted the entry for 'Launch Images' (not used anymore in Info.plist as stated) and then deleted the folder LaunchImages that was on Resources\Media.xcassets in disk.

    After a release build, when I selected the ipa, the 'Application Upoloader' displayed the message of missing icons for some resolutions. Checking the ipa file, I noted that the icons in Media.xcassets was not copied.

    To solve that error, I checked the .csproj of iOS, and found a reference to the LaunchImages folder that was not on my project anymore.

    <ItemGroup>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\Contents.json">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\LaunchImages.launchimage\Contents.json">
        <InProject>false</InProject>
        </ImageAsset>
    </ItemGroup>
    

    ...

    Editing this lines to remove that reference makes all icons of AppIcons.appiconset to be inserted on the ipa in my next build.

    I think if just that invalid reference to the LaunchImages invalidates all the ItemGroup?

    In the next step to correct the csproj file, I replaced the ItemGroup displayed above for the following lines:

    <ItemGroup>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\Contents.json">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\Icon-167.png">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\[email protected]">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\[email protected]">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\Icon-76.png">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\[email protected]">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\Icon-Small-40.png">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\[email protected]">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\[email protected]">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\Icon-Small.png">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\[email protected]">
          <InProject>false</InProject>
        </ImageAsset>
        <ImageAsset Include="Resources\Media.xcassets\AppIcons.appiconset\[email protected]">
          <InProject>false</InProject>
        </ImageAsset>
      </ItemGroup>
    

    ...and finally, the assets was added correctly on all of my builds. Note that there are one entry for each icon in my asset file (same name, same case).

    If you are having the 'missing icons' problem, here are some tips:

    • Before you try to upload your app to the App Store, open the file ipa (like a zip file) and check if your assets was copied there;
    • Check the .csproj for invalid references in 'ItemGroup';
    • Check the case of file names (case sensitive?);
    • Make a clean build deleting the bin/obj files;
    • If your phone are not displaying the icons properly try to reboot the device. That saved me some times;

    Hope that if someone is upgrading your projects and making use of Asset Catalogs, this can be useful in some way.

    :D

  • smchughinfosmchughinfo Member ✭✭
    edited July 2018

    I was getting ITMS-90022 and ITS-90023. Eventually what turned out to be the cause of my particular instance of this error was the wrong value for XSAppIconsAssets in info.plist. The value that gets put in is

    <key>XSAppIconAssets</key>
    <string>Resources/Assets.xcassets/AppIcons.appiconset</string>
    

    but it didn't work until I removed Resources/

    <key>XSAppIconAssets</key>
    <string>Assets.xcassets/AppIcons.appiconset</string>
    

    Fun Fact: Updating the build number may reset this (back to Resources/) so for me it requires a manual rejigging every time I want to submit to the app store.

  • arueda_1980arueda_1980 Member ✭✭

    the solution DarrenMcGrath86 work for my! thanks!

  • PeterMidgleyPeterMidgley USMember ✭✭

    Now in Nov 2018, iOS being at 11+ we are not permitted to upload to app store unless we correctly use asset catalog. Thus Darren's fix, I believe, no longer an option.

    Fernando3x's solution worked for me, although more daunting in the amount of 'hacking' needed with the csproj file: mine was an older project and thus had bits of Resources-located icon files, bits of 'first go' at asset catalog in Media but discontinued. You also remove any of the app icon png files from the Resources folder; they should be accessed via the Asset Catalog editor screen, which shows you placeholders for each size of icon file and you select files for each from out of your store of icon images. Speaking of which, the website appicon.build will generate most if not all you need: just be aware that the names are not all correct, need changing to match the relevant iOS version table in the developer apple com library archive (/qa/qa1686/_index.html#//apple_ref/doc/uid/DTS40009882-CH1-MANUAL) which are, for me:

    Icon-20.png
    [email protected]
    [email protected]
    Icon-2g.png
    [email protected]
    [email protected]
    Icon-40.png
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    Icon-76.png
    [email protected]
    [email protected]
    ItunesArtwork.png

    Oh and due to constraints I can only use VisualStudio 2015 which adds to difficulty in terms of working out which documentation is relevant.

    Fernando3x's hint about checking the ipa file is good, saved me a lot of wasted time: I'll just document the process as I did it using VS2015 so this may or may not be exactly the same in later versions:

    Once the project is built:

    In Visual Studio, solution explorer, right-click the iOS project and select 'Show IPA file on Build Server' to see the built ipa file on the Mac you are connected to, in the place it was generated.
    (You may well find that it complains that you are not connected to the Mac (even though otherwise it looks as if you are), so just disconnect and reconnect that and it should then allow you to select that option).

    Then you will see on your view of the Mac (I use Tight-VNC Viewer) the ipa file which you would subsequently use to upload;

    • Right click it and select 'open with' then select 'archive utility'.
    • That creates a 'payload' folder containing yourapp.iOS.
    • Right-click that iOS file and select 'Show Package Contents' whereupon you can search through looking for the png files relating to the app icons you expect to see.

    As long as they are there (and everything else is in order), you should be OK to upload.

  • nick5454nick5454 USUniversity ✭✭✭

    Personally, it's faster to clean out the project file then delete your Icon Asset virtual folder and drag and drop all the icons back. Takes 2 minutes and you don't have to struggle with hacking.

  • Amd3Amd3 USMember ✭✭

    I ran into the same issue VS 2019 and VS2017. latest Xamarin stable. Releasing a simple update to an app we publish frequently. Hopefully this will help someone running into the same issue. I tried everything, deleting Xcassets, adding a new AppIcon set from scratch etc. I can see all the icons are there, and as mentioned i released this at least 20x...
    What was different was that the bin folder where the IPA was now had a device-builds folder. After days of wrestling with this i found this post: github.com/xamarin/Xamarin.Forms/issues/4034 which is a bit old. Finally i was able to double check that the Distribution Cert was not selected (it was but it reverted maybe from all the trials i was doing). Once i published the ipa ended up in the root folder of the releases/bin and the file uploaded. Again hopefully that will give you some clues if this happens to you!

  • IanVinkIanVink CAInsider, University ✭✭✭

    I had the same error today, I found that I had 2 strange problems that needed fixing:

    1. The Cert / Profile wrong. I repointed them correctly manually.
    2. The assets were no longer pointed to in the info.plist. I added:

          <key>XSAppIconAssets</key>
         <string>Assets.xcassets/AppIcon.appiconset</string>
      
Sign In or Register to comment.