Distribution Failed, AppicationLoader: ERROR ITMS-90096

p.s: problem details log attached.

[build.settings]

settings = 

{

    orientation = 

    {

        default = “portrait”,

        supported = { “portrait”, }

    },

    build =

    {

        neverStripDebugInfo = true

    },

    splashScreen = 

    {

        enable = false

    },

    plugins =

    {

        [“plugin.utf8”] =

        {

            publisherId = “com.coronalabs”

        },

        [“CoronaProvider.ads.vungle”] =

        {

            publisherId = “com.vungle”

        },

        [“plugin.google.play.services”] =

        {

            publisherId = “com.coronalabs”,

            supportedPlatforms = { android=true }

        },

    },

    android =

    {

        usesPermissions =

        {

            “android.permission.INTERNET”,

            “android.permission.WRITE_EXTERNAL_STORAGE”,

            “android.permission.READ_EXTERNAL_STORAGE”,

            “android.permission.ACCESS_NETWORK_STATE”,

            – “com.android.vending.BILLING”,

        },

    },

    

    iphone = 

    {

        plist = 

        {

            UILaunchStoryboardName = “LaunchScreen”,

            UIPrerenderedIcon = true,

            UIStatusBarHidden = true,

            UIApplicationExitsOnSuspend = false,

            CFBundleDisplayName = “Hi Rob”,

            CFBundleName = “hirob”,

            CFBundleIconFiles =

            {

                “asset/icon-ios/Icon-120.png”,

                “asset/icon-ios/Icon-152.png”,

                “asset/icon-ios/Icon-16.png”,

                “asset/icon-ios/Icon-167.png”,

                “asset/icon-ios/Icon-180.png”,

                “asset/icon-ios/Icon-24.png”,

                “asset/icon-ios/Icon-32.png”,

                “asset/icon-ios/Icon-40.png”,

                “asset/icon-ios/Icon-40@2x.png”,

                “asset/icon-ios/Icon-40@3x.png”,

                “asset/icon-ios/Icon-60.png”,

                “asset/icon-ios/Icon-60@2x.png”,

                “asset/icon-ios/Icon-60@3x.png”,

                “asset/icon-ios/Icon-64.png”,

                “asset/icon-ios/Icon-72.png”,

                “asset/icon-ios/Icon-72@2x.png”,

                “asset/icon-ios/Icon-76.png”,

                “asset/icon-ios/Icon-76@2x.png”,

                “asset/icon-ios/Icon-Small-40.png”,

                “asset/icon-ios/Icon-Small-40@2x.png”,

                “asset/icon-ios/Icon-Small-40@3x.png”,

                “asset/icon-ios/Icon-Small-50.png”,

                “asset/icon-ios/Icon-Small-50@2x.png”,

                “asset/icon-ios/Icon-Small.png”,

                “asset/icon-ios/Icon-Small@2x.png”,

                “asset/icon-ios/Icon-Small@3x.png”,

                “asset/icon-ios/Icon.png”,

                “asset/icon-ios/Icon@2x.png”,

                “asset/icon-ios/Icon@3x.png”,

            },

            UILaunchImages = {

                {  – iPhone 4 Portrait

                    [“UILaunchImageMinimumOSVersion”] = “7.0”,

                    [“UILaunchImageName”] = “Default”,

                    [“UILaunchImageOrientation”] = “Portrait”,

                    [“UILaunchImageSize”] = “{320, 480}”

                },

                {  – iPhone 4 LandscapeLeft

                    [“UILaunchImageMinimumOSVersion”] = “7.0”,

                    [“UILaunchImageName”] = “Default”,

                    [“UILaunchImageOrientation”] = “LandscapeLeft”,

                    [“UILaunchImageSize”] = “{320, 480}”

                },

                {  – iPhone 4 LandscapeRight

                    [“UILaunchImageMinimumOSVersion”] = “7.0”,

                    [“UILaunchImageName”] = “Default”,

                    [“UILaunchImageOrientation”] = “LandscapeRight”,

                    [“UILaunchImageSize”] = “{320, 480}”

                },

                {  – iPhone 5 Portrait

                    [“UILaunchImageMinimumOSVersion”] = “7.0”,

                    [“UILaunchImageName”] = “Default-568h”,

                    [“UILaunchImageOrientation”] = “Portrait”,

                    [“UILaunchImageSize”] = “{320, 568}”

                },

                {  – iPhone 5 LandscapeLeft

                    [“UILaunchImageMinimumOSVersion”] = “7.0”,

                    [“UILaunchImageName”] = “Default-568h”,

                    [“UILaunchImageOrientation”] = “LandscapeLeft”,

                    [“UILaunchImageSize”] = “{320, 568}”

                },

                {  – iPhone 5 LandscapeRight

                    [“UILaunchImageMinimumOSVersion”] = “7.0”,

                    [“UILaunchImageName”] = “Default-568h”,

                    [“UILaunchImageOrientation”] = “LandscapeRight”,

                    [“UILaunchImageSize”] = “{320, 568}”

                },

                {  – iPad Portrait

                    [“UILaunchImageMinimumOSVersion”] = “7.0”,

                    [“UILaunchImageName”] = “Default-Portrait”,

                    [“UILaunchImageOrientation”] = “Portrait”,

                    [“UILaunchImageSize”] = “{768, 1024}”

                },

                {  – iPad LandscapeLeft

                    [“UILaunchImageMinimumOSVersion”] = “7.0”,

                    [“UILaunchImageName”] = “Default-Landscape”,

                    [“UILaunchImageOrientation”] = “LandscapeLeft”,

                    [“UILaunchImageSize”] = “{768, 1024}”

                },

                {  – iPad LandscapeRight

                    [“UILaunchImageMinimumOSVersion”] = “7.0”,

                    [“UILaunchImageName”] = “Default-Landscape”,

                    [“UILaunchImageOrientation”] = “LandscapeRight”,

                    [“UILaunchImageSize”] = “{768, 1024}”

                },

                {  – iPhone 6 Portrait

                    [“UILaunchImageMinimumOSVersion”] = “8.0”,

                    [“UILaunchImageName”] = “Default-667h”,

                    [“UILaunchImageOrientation”] = “Portrait”,

                    [“UILaunchImageSize”] = “{375, 667}”

                },

                {  – iPhone 6 LandscapeLeft

                    [“UILaunchImageMinimumOSVersion”] = “8.0”,

                    [“UILaunchImageName”] = “Default-667h”,

                    [“UILaunchImageOrientation”] = “LandscapeLeft”,

                    [“UILaunchImageSize”] = “{375, 667}”

                },

                {  – iPhone 6 LandscapeRight

                    [“UILaunchImageMinimumOSVersion”] = “8.0”,

                    [“UILaunchImageName”] = “Default-667h”,

                    [“UILaunchImageOrientation”] = “LandscapeRight”,

                    [“UILaunchImageSize”] = “{375, 667}”

                },

                {  – iPhone 6 Plus Portrait

                    [“UILaunchImageMinimumOSVersion”] = “8.0”,

                    [“UILaunchImageName”] = “Default-736h”,

                    [“UILaunchImageOrientation”] = “Portrait”,

                    [“UILaunchImageSize”] = “{414, 736}”

                },

                {  – iPhone 6 Plus LandscapeLeft

                    [“UILaunchImageMinimumOSVersion”] = “8.0”,

                    [“UILaunchImageName”] = “Default-Landscape-736h”,

                    [“UILaunchImageOrientation”] = “LandscapeLeft”,

                    [“UILaunchImageSize”] = “{414, 736}”

                },

                {  – iPhone 6 Plus LandscapeRight

                    [“UILaunchImageMinimumOSVersion”] = “8.0”,

                    [“UILaunchImageName”] = “Default-Landscape-736h”,

                    [“UILaunchImageOrientation”] = “LandscapeRight”,

                    [“UILaunchImageSize”] = “{414, 736}”

                },

                {  – iPad Pro Portrait

                    [“UILaunchImageMinimumOSVersion”] = “9.0”,

                    [“UILaunchImageName”] = “Default-Portrait-1366”,

                    [“UILaunchImageOrientation”] = “Portrait”,

                    [“UILaunchImageSize”] = “{1024, 1366}”

                },

                {  – iPad Pro Landscape Right

                    [“UILaunchImageMinimumOSVersion”] = “9.0”,

                    [“UILaunchImageName”] = “Default-Landscape-1366”,

                    [“UILaunchImageOrientation”] = “LandscapeRight”,

                    [“UILaunchImageSize”] = “{1024, 1366}”

                },

                {  – iPad Pro Landscape Left

                    [“UILaunchImageMinimumOSVersion”] = “9.0”,

                    [“UILaunchImageName”] = “Default-Landscape-1366”,

                    [“UILaunchImageOrientation”] = “LandscapeLeft”,

                    [“UILaunchImageSize”] = “{1024, 1366}”

                },

            },

            NSAppTransportSecurity = 

            {

                NSAllowsArbitraryLoads = true,

            },

        },

    },

}

I solved it.
Using two things together, the error occurred.

  1. UILaunchImages = { … }

  2. UILaunchStoryboardName = “LaunchScreen”,

Yea, it’s gotta be one or the other.

Rob

Hey,

I get the same problem with “ERROR ITMS-90096:…” but I do not use any LaunchImages. I have the splash screen plugin though but I guess that is not the same thing?

How do I solve this problem? This seams to be the case for build 3060, 3067, 3068 and 3073 as I’ve tried it in. The same code worked perfectly 3049 or some older around that (did not note before updating). 

Apple requires you to use some form of launch image. The splash screen control is different. It happens after Apple processes the launch image.

Please see:

https://docs.coronalabs.com/guide/distribution/buildSettings/index.html#launchimage

Rob

Ok, thanks will try.

Is this some new requirement? Because it worked whiteout two weeks ago.

So basically if I understand this right all I need to do is add:

UILaunchStoryboardName = "LaunchScreen",  -- Required!

? :slight_smile: Do not need to add any corresponding filer/image due to?

For your convenience, a default (blank) LaunchScreen.storyboardc document is automatically added to all new project templates.

And this is then black initially and after that my default.png splash screen shows up as I’ve set up? (And worked before. Have bought the plugin and still active.) 

Sorry for all basic questions but wanna limit frustration for me right now after a way to long week.

It did not help. Still get:

ERROR ITMS-90096: "Your binary is not optimized for iPhone 5 - New iPhone apps and app updates submitted must support the 4-inch display on iPhone 5 and must include a launch image referenced in the Info.plist under UILaunchImages with a UILaunchImageSize value set to {320, 568}. Launch images must be PNG files and located at the top-level of your bundle, or provided within each .lproj folder if you localize your launch images. Learn more about iPhone 5 support and app launch images by reviewing the ‘iOS Human Interface Guidelines’ at https://developer.apple.com/ios/human-interface-guidelines/graphics/launch-screen."

This is my build file:

settings = { orientation = { default = "portrait", supported = { "portrait", "portraitUpsideDown" }, }, iphone = { plist = { CFBundleDisplayName = "Via Sacra", CFBundleName = "Via Sacra", UIStatusBarHidden = true, UIApplicationExitsOnSuspend = true, UILaunchStoryboardName = "LaunchScreen", NSCalendarsUsageDescription = "Not used in this app", NSPhotoLibraryUsageDescription = "Not used in this app", NSCameraUsageDescription = "Not used in this app", NSAppTransportSecurity = { NSExceptionDomains = { ["iceyware.com"] = { NSIncludesSubdomains = true, NSThirdPartyExceptionAllowsInsecureHTTPLoads = true, }, ["youtube.com"] = { NSIncludesSubdomains = true, NSThirdPartyExceptionAllowsInsecureHTTPLoads = true, }, }, }, UIPrerenderedIcon = true, CFBundleIconFiles = { "Icon-40.png", "Icon-40@2x.png", "Icon-40@3x.png", "Icon-60.png", "Icon-60@2x.png", "Icon-72.png", "Icon-72@2x.png", "Icon-76.png", "Icon-76@2x.png", "Icon-Small-50.png", "Icon-Small-50@2x.png", "Icon-Small.png", "Icon-Small@2x.png", "Icon.png", "Icon@2x.png", "Icon@3x.png", "iTunesArtwork.png", "iTunesArtwork@2x.png", "Icon-16.png", "Icon-24.png", "Icon-32.png", "Icon-64.png", "Icon-120.png", "Icon-152.png", "Icon-Small-40.png", "Icon-Small-40@2x.png", "Icon-60@3x.png", "Icon-Small@3x.png", "Icon-Small-40@3x.png" }, }, }, android = { usesPermissions = { "android.permission.INTERNET", "android.permission.ACCESS\_FINE\_LOCATION" }, }, splashScreen = { enable = true, image = "Default.png" }, plugins = { ["plugin.CoronaSplashControl"] = { publisherId = "com.coronalabs" }, ["plugin.utf8"] = { publisherId = "com.coronalabs" }, }, }

Apple has been requiring either static or storyboard based launch images for some time. At some point with the iOS 10 release they started checking for the Default-568h@2x.png file (or a storyboard setup) sometime after that. They seem to be getting more aggressive too.

We used to include the Default-568h@2x.png file for you when you did a File->New Project, but changed it so that File->New Project puts a proper storyboard file in the project which works.

In addition to the line in build.settings you also have to have the “LaunchScreen.storyboardc” file that goes with it. You can copy it from one of our sample apps if you just want a blank/black screen. If you want to customize it, you will need to get the project and follow the instructions on setting up a custom one.

Rob

Ahh, then I understand. Tank you so much!

Edit: Worked fine!

hi - I just tried to update my 3 year-old app this morning and got this same error (ITMS-90096). In response I’ve added a file called default-568h.png to the main project folder and added 

 ["UILaunchImageMinimumOSVersion"] = "7.0",  ["UILaunchImageName"] = "Default-568h@2x",  ["UILaunchImageOrientation"] = "LandscapeLeft",  ["UILaunchImageSize"] = "{640, 1136}"

to the other entries in settings/iphone/plist/UILaunchImages

But I’m still getting the same error message from Apple when I try to upload using the application loader.

I read the article reference above and was going to try adding the launchScreen.storyboardc file to my project, but today’s daily build of Corona does not contain a folder called /Resource Library/iOS/  although I see other instances of that file in different folders.

Should I just include any of those, and then add the associated lines in build.settings? 

Thanks.

You have to include the portrait block for UILaunchImages in the build.settings UILaunchImage table. This is case sensitive too. At one point you refer to default-568h@2x.png and another Default-568h@2x.  They have to match the upper/lower case letters.

If you follow the guide on building the LaunchImage.storyboardc file, there is a link to GitHub where we have a base project that you can load into Xcode and output your own. Or you can copy the one from the HelloWorld sample app. That one doesn’t use images, it just gives a black screen before hit hands off to the Corona managed splash screen.

Rob

OK so just to confirm, if I want to use the “static method” approach to launch images, I need to follow the guidelines here https://docs.coronalabs.com/guide/distribution/launchFile/index.html  and create 13 launch images??

Are these relatively new guidelines? In the past I’ve always just used 3 launch images and that has worked OK.

thanks.

Starting with iOS 10, Apple started enforcing needing the Default-568h@2x.png file which must be portrait oriented and specified in the UILaunchImage table as a portrait style.

Building 13 launch images and maintaining that table was required when we supported iOS 6 and 7. It’s a lot of work to create and maintain and it bulks up your bundle. Today if you’re using the latest public build or any daily after we dropped support for iOS 6 and 7, then you should seriously consider switching to Apple’s “Storyboard” method. It’s 3 images, an extra file and one line in build.settings.

Rob

Thanks.

ok I have created my 3 launch images and the storyboard file, and modified my build.settings, according to the instructions. What I’m seeing on my test device (iPad) is just a blank/black launch screen, so I’m doing something wrong but not sure what.  I tried using both landscape and portrait images, but in both cases I just see black. Does it matter which I use?

When I view the images in Xcode under the LaunchScreen.storyboard section, my launch image does not fill the simulated screen, i.e. there are black edges. Thanks.

First make sure you’re exporting the Compiled version of the storyboard file. It should produce a .storyboardc file, not a .storyboard file. Next your files need to be named accordingly and it’s case sensitive. 

I don’t know if you’ve changed any names in the storyboard file, but the default as we left it was looking for Launch.png, Launch@2x.png and Launch@3x.png.

If you want something other than a square image on a black background, you will have to figure out how to make that happen and adjust the storyboard accordingly.

Rob

Thanks, I had “launch.png” with a small L. It all works now.