-
Notifications
You must be signed in to change notification settings - Fork 65
Ditch .framework folders and let the export plugin copy and sign .dylib
files
#78
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
Conversation
Unfortunately, I haven't been able to successfully export an iOS project so far, so I can't confirm whether it creates |
In that case we could either upgrade the export plugins to create the folders or keep the .framework folders and just get rid of the signing. |
If I'm seeing it correctly, you tested macOS export. I think only the iOS godot exporter upgrades to |
I tried my luck at exporting an iOS build but didn't get far. The macOS VM I'm running on my Proxmox server is very laggy. I'm going mental trying to make it work. It would be neat if someone could go metal instead - haha - and try exporting a project with the artifact for iOS and post the |
I'm on mac and I've been trying, but I'm not sure its possible without a dev account. Certainly complained every time so far. |
I tried exporting the project for iOS. It didn't succeed but there are interesting errors before the critical failure. Only happens with the GDExtension installed. Here are the full logs: https://pastebin.com/xBZru8VH. No mention of the extension's dylib.
The dylibs should be processed in
|
Since bruvzg confirmed on RocketChat that the iOS exporter should convert the raw dylibs to frameworks we should keep pursuing this.
|
af4753e
to
8baa987
Compare
@dsnopek I remembered that you offered to test this so I've updated the PR description with better instructions. |
@dsnopek Do you think you have time to give it a go before the next GDExtension meeting? |
Sorry it took me so long to get to this! Re-learning and re-setting up all this stuff on MacOS is a very effective deterrent :-) To test, I...:
I then configured exports for both MacOS and iOS using all my Apple ID and code signing certificate junk. The short version: it seemed to work! Here's the verbose output from both export processes: Export log for MacOS
Export log for iOS
The signing and notarizing (in the case of MacOS) and framework generation stuff in the logs all looks successful. I was able to run the exported project on my Mac Mini and on my iPhone 12, and it showed the extension in the label, so presumably it loaded fine. |
Thanks, @dsnopek! This is great news. Looks like it's being converted, copied, and given an extra signing!
You could check the dylib location within the iOS I'll rebase this PR. |
8baa987
to
883c029
Compare
883c029
to
1661cf5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Assuming you tested this, looks perfect!
As much as I could without a proper Mac. |
1661cf5
to
51d35ff
Compare
Right, I forgot you don't have one. |
51d35ff
to
e4e73a2
Compare
Here's the contents of the
|
Perfect, thank you! Looks good. |
This does look now like it's working as intended. Is this PR mergeable then? |
I'd say so! |
Merged, thank you! |
This is a PR for the removal of
.framework
folders.At the last GDExtension meeting we discussed the possibility of ditching the use of framework folders for MacOS and iOS and letting Godot's export plugin handle the code signing. This simplifies the directory structure, the library paths in the
.gdextension
file and thebuilds.yml
workflow.MacOS and iOS binaries ...
.framework
foldersbuilds.yml
workflowHere is how to test that the export plugin's codesigning of shared objects and conversion to frameworks on iOS is functional:
--verbose
.gdextension
for convenience, otherwise it's just the artifact (The CI should just do this...)Export with Debug
enabled as the binaries for therelease
tag are referenced but not built.dylib
file is present inContents/Framework/
Export with Debug
enabled as the binaries for therelease
tag are referenced but not built.ipa
to.zip
.dylib
file were placed in a.framework
folder under something like/Payload/Application.app/Contents/Framework/
.framework
folders are a requirement for the App StoreSee @dsnopek's logs down below.