Your App can not be loaded because it is not a valid application.

Posted on Posted in Blog

This week I ran across an interesting problem. I was taking an older version of one of my company’s apps and making some minor feature adjustments and redeploying. I spent about 5 hours updating the code, debugging and testing. I then spent about 16 hours trying to get the changes to deploy on my device.

What was strange is, this had never happened before with this app and I had other apps that I made changes to where there was no problem.

Here are the scenarios:

Created a debug build and deployed to my iPad and iPhone directly from Xcode.

Specs:

Macbook Pro 2011 - OSx Yosemite 10.10
iPhone 5 - iOS 8.1
iPad 3 - iOS 8.0.2

This build worked as expected. Nothing really to report. I was working in this method for the entire development cycle.

Created an enterprise build and deployed via the classic Testflight service.

When I tried this method, a few unusual things happened.

1. The app loaded as expected, but the icon was in a disabled state where you could not launch the app and it was semi-transparent.

2. I also received the error message: “Unable to Download App – ‘Appname’ could not be installed at this time.”

download error

No matter how many times I selected retry I received the same message. I figured that I set up the certificates incorrectly. But after revoking the certificate and recreating everything I was convinced that this was not the problem. I also used iTunes and tried to drag and drop the app right on the device with the same results.

Next up was scouring stack overflow, I found a few helpful tips, but I did not really find anything that solved the problem.

At this point, I started looking at some of the core files that are used to load the app. I started
comparing some of the core app files to the app that I had that was working. I quickly identified that that info.plist was different between the two apps.

I renamed the non-working app plist and copied the working plist over. I did and enterprise build and it worked just as expected. At this point, I took the working plst and added all of the custom settings from the backup and everything still worked as expected.

I can’t say for sure but it looks like there is some difference in the legacy plist that does not agree with the new way of doing things.

Problem solved, I don’t plan on breaking this down any further, but I am going to submit a Radar to Apple, they may want more information, if so, I will update this post.

 

 

edit: added Radar.  Issue ID: 18784520