Live Caller ID Extension Asset validation failed when uploading to TestFlight

I’m encountering a problem with my iOS app with new Live Caller ID extension when uploading to TestFlight. Here’s what's happening:

When I try to upload the app to TestFlight without the NSExtensionPrincipalClass, I get the following error:

Missing Info.plist values. No values for NSExtensionMainStoryboard or NSExtensionPrincipalClass found in extension Info.plist for foo.app/PlugIns/bar.appex

However, if I include the NSExtensionPrincipalClass in the Info.plist of my extension, the app fails to launch on both the dev build and through TestFlight. The error message I receive is:

bar.appex with id <bundle_id> defines either an NSExtensionMainStoryboard or NSExtensionPrincipalClass key, which is not allowed for the extension point com.apple.live-lookup

Has anyone experienced a similar issue? How to fix it?

Answered by glebfann in 812740022

I have resolved the issue, and it all comes down to where the extension is placed within the app bundle. The problem arose when the extension was located in the PlugIns and Foundation extensions directory. If you embed Live Caller ID .appex in ExtensionKit extensions, i.e. /Extensions directory instead of /PlugIns in bundle, then the problem goes away - this allows you to remove the NSExtensionPrincipalClass/NSExtension entries from the extension's Info.plist file.

But it's unclear whether this behavior is an oversight on Apple's validation side or if it's intentional. The documentation does not provide any clarity on this matter, which makes it somewhat puzzling 😕

Accepted Answer

I have resolved the issue, and it all comes down to where the extension is placed within the app bundle. The problem arose when the extension was located in the PlugIns and Foundation extensions directory. If you embed Live Caller ID .appex in ExtensionKit extensions, i.e. /Extensions directory instead of /PlugIns in bundle, then the problem goes away - this allows you to remove the NSExtensionPrincipalClass/NSExtension entries from the extension's Info.plist file.

But it's unclear whether this behavior is an oversight on Apple's validation side or if it's intentional. The documentation does not provide any clarity on this matter, which makes it somewhat puzzling 😕

Live Caller ID Extension Asset validation failed when uploading to TestFlight
 
 
Q