-
-
Notifications
You must be signed in to change notification settings - Fork 21.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
macOS (and iOS?) exports missing provisioning profile required for Apple App Store distribution #73876
Comments
As the Apple signing and distribution process has become increasingly convoluted and cryptic to manage outside of XCode it's also perhaps worth thinking about if it would be possible to add an XCode-based macOS export just like with iOS. So that just like with iOS Godot would export an XCode project you can then use to actually build/sign/distribute the game on macOS. |
Can you provide output of We can add a provisioning profile to the export options, but I not sure what to do with the first cryptic message. As a workaround, you can try exporting it without signing, manually add provisioning profile, and sign / notarize it from the command line. |
Here's the codesign output. (Replaced APP_NAME and the actual team id with MY_TEAM_ID) as far as I can tell it looks valid.
Right, I forgot you could still export without codesigning, that's a good idea to try. If you have any hints on how to manually add the provisioning profile and then code sign it that would be helpful. Otherwise I'll go try to figure it out myself. I guess it could also be a good idea to test and see it signing it that way will also fix the signature issue. |
AFAIK, if enough to copy it to the
For the sandboxed app, <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
</dict>
</plist> If you need some other entitlements, take a look at this part of exporter code which is generating it: godot/platform/macos/export/export_plugin.cpp Lines 1488 to 1607 in 6296b46
At least that's what Godot exporter do. |
Thanks for the help. After a couple of tries I managed to correctly sign the package and upload it to the app store without any errors during upload or processing. However, even though it now no longer complained about the missing profile it's still listed as not available for testing in the Test Flight interface. I've contacted test flight support to try and get some information on what is still missing. I'm unsure if this means it would also not be able to publish the game, or if it's just not available for Test Flight testing. Here's a breakdown of what I did in steps (some the same as your description, with some modifications) Step 1: Export the game from godot with codesigning disabled Step 2: Download an Apple Mac appstore provisioning profile Step 3: Place a copy of your distribution provisioning profile in the app bundle Step 4: Set up an entitlements file
Step 5: Codesign the app bundle using terminal Step 6: Create an appstore package for upload using terminal Step 7: Upload the package to the App Store using the Transporter app As for the bug report above I think the steps that would be required to do this in Godot would be to select in the export panel codesigning if you're signing it for developer ID distribution outside the app store (including the notarization upload step), or if you're exporting for App Store distribution and in that case include the provisioning profile, sign with the appstore distribution ID and maybe even generate the pkg you need for Transporter but skip the notarization. |
Some further follow-up: This means that the minimal entitlements file required would look like this (with placeholders)
With this addition I finally got the build up on App Store Connect and working in Test Flight. |
I was thinking about adding these two, but app won't work if you use them without provisioning profile. I'll update my pr to add it if profile is selected. |
Official export templates are compiled using OSXCross, so this might be the reason, and require template rebuild with Xcode. Or it might be looking for the |
Ok, perhaps a separate issue should be opened for this then if you think you know what the issue might be? Otherwise I think it will block any mac app store distribution since you can't submit the builds for review even if you can now upload them. |
It seems like the missing DT* keys in the info.plist were indeed the issue. Good catch! I've done some tests and opened a separate issue for this #74154 |
That's good, we can add them easily (I guess as a pre-filled export options to allow users with custom templates setting different versions). |
Godot version
4.0rc4
System information
macOS 13.2
Issue description
I've been experimenting with trying to get a Godot project onto the Apple App Store (or at least into the Test Flight testing part) and I've run into an issue: Basically, when codesigning code with certain entitlements (like the now required App Sandbox) this also seems to require a provisioning profile to be embedded. However, it seems that Godot does not do this currently, and there is no option in the export dialogue to pick a provisioning profile to use.
In the case of iOS exports I think this problem could be the same, but there Godot generates an XCode project where you can fix the code signing issues and let XCode handle the signing and uploading, so there you can work around it. For macOS there is no way to generate an XCode project where you can fix the signing and upload it to the app store, so you need to create a pkg installer package and use the Transporter app to upload to app. And while I've managed to create a signed .pkg that Transporter accepts and uploads (using this information) I get these two cryptic errors back from Apple by e-mail (APP_NAME replaced):
The first of these seems to indicate that there is something wrong with the code signing or signature and I don't really know what since the signature seems valid and there's no issue running the game. But it could be something that is not signed correctly during export.
The second one is however more straight forward and indicates that the provisioning profile is missing as stated in the title. It seems there is a way to embed these (as describe here under "Embed Distribution Provisioning Profiles") but it seems like this has to be done by adding it to the bundle before signing, so it can't be fixed after the export as I understand it.
Steps to reproduce
Minimal reproduction project
This is I think more of an export process omission/issue and not specific to a certain project.
The text was updated successfully, but these errors were encountered: