-
-
Notifications
You must be signed in to change notification settings - Fork 97
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
Add minimum required OS version setting to macOS and iOS exports #6360
Comments
Exporting a project that uses a Vulkan backend without OpenGL fallback being enabled should automatically use 10.15 as minimum macOS version, and iOS 16 as minimum iOS version. Overriding these limits on a per-project basis can make sense for projects using custom modules or GDExtensions that rely on newer OS functionality still. |
It's not missing, it is set to 10.12, since it's what is min. version for OpenGL export is (for Vulkan it's 10.14, but it depends on hardware so probably should be 10.15 or user configurable on export). |
Ah, you're right. Sorry for the confusion. I based this on output from the productbuild tool used to create installer (and mac app store) packages. I interpreted the output
I think so. Implicitly this could also be used to control if you want to use the automatic fallback to the compatibility renderer. In other words if you want to prioritize the widest device compatibility or if you want to prioritize ensuring renderer feature support but exclude older devices. Since if you for example set the minimum version to iOS16 I believe all such iOS devices will support the vulkan backend, so it will never fall back to compatibility (even if it could do so automatically in the future). |
Describe the project you are working on
A multi-platform game I'll try to get published via the Apple App Store and other platforms
Describe the problem or limitation you are having in your project
On macOS and iOS (and possible other plattforms) apps have a minimum required OS version specified in them. This provides a nice message on unsupported OS versions if you try to run the app (instead of it just crashing) and is also used in the App Store to inform you your device can't run the app before you download it.
As far as I can tell via testing using the Mobile Vulkan renderer in Godot 4 you need macOS 10.15 or later and iOS 16 or later to be sure that the device can run the game (as discussed here). However, when exporting Godot seems to set no macOS minimum required version (which defaults to macOS 10.12) and sets iOS 12 as the minimum required iOS version. In both cases this means the game will be distributed to and be possible to launch on devices where it will just show a black screen.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
One solution would of course be to correctly set these limits based on what the engine requires for your project, but this can be hard to know and get right. So I propose at least adding a field in the export dialogue where you can specify the macOS and iOS version that should be specified as the minimum required version for the export. Then you as the developer at least have control over this and can set it consistently for your exports.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
Add fields to the export settings for macOS and iOS.
When building add these fields to the appropriate info.plist fields of the bundle for macOS:
For iOS the value needs to be set in the xcode build target as the IPHONEOS_DEPLOYMENT_TARGET key in the buildSettings dictionary. For example
If this enhancement will not be used often, can it be worked around with a few lines of script?
You can work around it on macOS by exporting the game unsigned, editing the info.plist manually and then manually signing and notarizing it via terminal.
On iOS you can edit the information in XCode before building it there.
Is there a reason why this should be core and not an add-on in the asset library?
It's a hassle to need to do these extra steps on each export, and it would be better if it was correctly set when you export it from Godot.
It would probably also be a good idea to then bump up the default values for these since I think the current minimum required macOS and iOS values will likely be wrong in for all exports unless they're using the compatibility renderer.
The text was updated successfully, but these errors were encountered: