Can't distribute Mac Catalyst extension

Hi guys

I successfully uploaded to the Appstore for iOS an app with several extensions, but when I try to upload the same app for Mac AppStore ( a Mac Catalyst App ) I get the following error from Xcode on two extensions


ERROR ITMS-90355: "Missing Info.plist value. No value for NSExtensionPrincipalClass found in extension Info.plist 
for MyApp.app/Contents/PlugIns/MyExtension.appex"


These extensions are a Share Extension and an Action Extension that have a storyboard file, so if I set the NSExtensionPrincipalClass key in the Info.plist file I get the following message in console


Invalid Configuration: Either NSExtensionMainStoryboard or NSExtensionPrincipalClass 
must be specified in the extension's Info.plist file but not both.


And of course the extension interface does not appear and nothing works


Anybody got an idea how to solve this?

Apple engineers and evangelists, do you have any suggestions?


Alternatively there is the possibility to set only the NSExtensionPrincipalClass key in the Info.plist file and then call the storyboard file programmatically ?


Thank you all in advance



Vanni

Replies

This looks like a bug in the App Store API - I've filed a bug report (FB7593637); suggest you do the same if you haven't. I haven't found an easy workaround other than rewriting the extension to not use a storyboard.


Note that if you're not really using the storyboard (e.g. you're just updating the default controller that comes with the Xcode template), you can work around this issue by updating your extension's Info.plist file to include NSExtensionPrincipalClass and remove the storyboard (NSExtensionMainStoryboard):


You need to have the module name in front of your class name for the sharing extension to work. My controller is called "ShareViewController". Set the value of "NSExtensionPrincipalClass" to "$(PRODUCT_MODULE_NAME).YourPrincipalControllerName".


More info:

I've filed a bug report just now.

In my extension I'm using the storyboard, it would be possible to use

NSExtensionPrincipalClass instead of NSExtensionMainStoryboard, preserving the storyboard ?

Or I need to convert the storyboard in a xib ?

Thanks.

The issue still persist, I can't upload my Mac Catalyst app with a Share Extension.