tvOS package for distribution fails to find valid certificate and valid provision [UE-39501] [Workaround]

I was able to package (in development) for tvOS in 4.14.1 on macOS Sierra without any trouble. Could you please submit your provisions and certificates to me through a private message on the forums?

Thank you. :slight_smile:

The only other thing I can think of about my setup is that I signed in with my Apple ID in Xcode → Preferences → Accounts and downloaded the provision profiles through Xcode.

I sent you a PM with a link for both the development and distribution files.

,

After further investigation from our specialist, it is coming down to the provision and the certificates not matching properly. For instance, when your development provision is added to the engine, it says there aren’t any valid certificate. Your wildcard was imported during this test. I noticed that I wasn’t seeing them pop up at all, and it was because it was invalid and I had to hit the ‘all’ button. I did run into the error that you described on the distribution provisions however, it still seems to point to the provisions and certificates not matching up correctly or being created correctly.

I know you’ve went through the set up process multiple times but I am going to provide additional documentation.

  • [App Distribution Guide: Troubleshooting][1]
  • [App Distribution Guide: Maintaining Your Signing Identities and Certificates][2]

I hope that this helps. You might want to contact Apple Developer Support if you’re still not able to get the provisions and certificates to match up like they should.

Let me know!

https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/Troubleshooting/Troubleshooting.html
[2]: https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html

Not matching properly…how??? I’ve given you descriptions and screenshots of the creation process as well as the certificates themselves. Can you not at least give me a hint as to WHAT doesn’t match?

Or maybe describe exactly what you do to create your certificate, provision, and app config?

What would you have me change? I recreated my certificates and provisions again. I made sure my email address matched my Apple ID email address this time on both. The cert/provision names are super simple using only alphabet letters. The app id is always specific (com.agileperception.com).

Saying “you’re certs and provisions are bad” isn’t very convincing. All of the things I have tried for tvOS actually work for iOS with the same values (except choosing the iOS instead of tvOS options during cert/provision creation).

If they work for app authors not using UE4, I don’t see how you can blame the certificates and provisions.

Have you and the tvOS developer tried generating new certificates and provisions lately? Perhaps something has changed there that UE4 is not taking into account.

Would it help if I made a screencast of myself creating certs/provisions and running through the process for you to see exactly what I’m doing?

118891-screen+shot+2016-12-15+at+12.41.01+pm.png

Your set up looks fine from the screenshots provided. However, it looks as though you’re using a .cer file as the certificate. If you’re attempting to use this on a Mac other than the .CSR, you’ll need to generate a .p12 in Xcode. .cer files will only work on the computer that the .CSR was generated on.

If you’d like, we can further debug the issue if you could provide us with the .p12.

I’ll post this on your other question too, just in case - thanks!

, I am doing this all on the same Mac.

I tried to generate a .p12 file (both to try and to send to you), but it does not seem to be an option (Note how the export to .p12 option is greyed out).

Do you have some instructions on how to generate the .p12 that might work? [These instructions appear current, but don’t work.][1]

Please help. - YouTube

I’m able to launch on a mac but once I remove the iOS provisioning profiles and leave just the tvOS profiles I get the same error as you.

So if you haven’t already I would try creating iOS profiles with the same bundle id. I also had to make the project a coded project in order for it to get past a different error.

Another issue I just figured out is you want to open up the Application Loader from Xcode(Xcode->Open Developer Tool->Application Loader) not from the applications folder. I’m getting a couple of errors though that I need to figure out but opening Application Loader that way sees it as an tvOS app and the other does not.

@ That was the key!!! After 5 weeks of effort to just package for tvOS, I can make my first submission to the iTunes store! I am going to post the summary as a separate “answer” so people can actually find it.

tvOS Distribution Package PARTIAL Workaround (4.14)

Bug [UE-39501][1]

Thanks to @ for the key information leading to this workaround!

  • Import both development and distribution certificates (They will both be called “iOS” certs despite the fact that they work across both iOS and tvOS provisions)
  • Import mobile provisions for each of the 4 combinations of development/distribution and iOS/tvOS (dev+iOS, dev+tvOS, dist+iOS, dist+tvOS)
  • (Just) The tvOS provisions MUST use a wildcard identifier * to get past the next bug that you will hit (the engine ignoring your config and trying to literally match com.YourCompany.[PROJECT_NAME] against your provision’s app id)
  • File > Package Project > tvOS

It looks like this:

For DISTRIBUTION you then need to do the additional steps:

  • Near the end of the output log is a long line that starts with /usr/bin/codesign --force --sign ... – copy this code signing line and keep it until we need it several steps along the way below
  • Unzip the .ipa' file either by opening it with Archive Utility.appor runningunzip filename.ipain the terminal. (This will extract it into aPayload` folder)
  • Open Payload/UE4Game.app/Info.plist in a text editor (or the plist editor) and change YourName in the bundle identifier to your organization name used on your apple developer account. For example, I changed my bundle identifier from com.YourCompany.ToppleTown to com.agileperception.toppletown – notice that the case (upper/lower) of the app id has to match your app id in Apple’s developer console exactly.
  • Get the code signing command that you saved from a few steps ago (the one that starts with /usr/bin/codesign...) and run in in Terminal.app
  • Re-zip the fixed package with zip -r SomeName.ipa Payload
  • Upload your app by going to Xcode and selecting Xcode > Open Developer Tool > Application Loader and using that version of the Application Loader that shipped with your current Xcode. This is stored inside Xcode itself, so using any other version will eventually get you into trouble.

And that’s as far as this workaround gets you. There are at least 5 more bugs which I cannot yet work around:

You get a little farther on the unreleased 4.15 branch

  • You don’t have to do the unzipping, code signing, re-zipping
  • You hit less errors uploading to the app store (these two errors have a separate post [here (for both of them)][4] and [here (for one of them)][5]:

Extra Tips:

  • If your app fails to launch on the AppleTV after the installation step, try deleting the existing app from the AppleTV (hold down the main button on the app, then press play/pause, then select delete)
  • The [GetPlatform blueprint node erroneously returns “IOS” on tvOS][7].

,

I was able to repro the issue you were seeing with certificates and provisions. Here’s what I did based on what has already been discussed in this thread:

  1. Deleted all provision profiles and certificates

  2. Imported TVOS distribution certificate and both IOS and TVOS distribution provision profiles with the appropriate bundle id

  3. Imported the IOS development certificate as well

With these steps, I was getting the same error as you were, regarding missing provision and certificate. In the accepted answer, you mentioned also importing wildcard provision profile. So:

  1. Imported the wildcard provision profile that mapped to the IOS development certificate from step 3

After this I was able to get past the errors and package the TVOS project. The build process for TVOS borrows/shares a lot with the IOS build process that’s why you need to also have IOS certificates and the provision profile that maps to it.

Separately, you seemed to have encountered the bundle id issue which should be fixed in the next update. The issue was that the project config INI files were not getting included into the config hierarchy so it would end up using the default value from Engine/Config base Engine INI files. So, after the next update is released, you should not need to go through the resigning since the plist will have the correct bundle id.

In short, your workaround is just how the build process works for TVOS and the bundle id issue will be fixed in the next update.

Cheers!

were u able to solve it in 4.14.3 ?

is there any plan to solve this problem in 4.15 ?

No.

No.

It’s pretty sad. I started trying to submit my project for the AppleTV on 26 November 2016. UE4 hasn’t been able to produce a submittable build yet.

It might be fixed in 4.16. See Uploading tvOS project: ERROR ITMS-90513 & ITMS-90471 - Platform & Builds - Epic Developer Community Forums

did u try to pacakge it for ios ?
I am having same issue . But my project is for ios. Not for tvos .

Yes, iOS works fine for me without any errors.

by any are u using Xcode7 for ios?

No, I use the latest Xcode 8.x