godotengine / webrtc-native

The official GDNative WebRTC implementation for non-html exports.
MIT License
215 stars 35 forks source link

MacOS, The developer cannot be verified #124

Open Alex2782 opened 1 year ago

Alex2782 commented 1 year ago

Godot version

v4.1.2.stable.official [399c9dc39]

Plugin version

v1.0.3

System information

macOS 13.6.0 - Vulkan (Forward+) - integrated Apple M1 - Apple M1 (8 Threads)

Issue description

System message in German language. The developer cannot be verified Godot tries to load the lib several times, cancel not possible, MessageBox comes again and again. The application must be terminated in the Task Manager.

https://github.com/godotengine/webrtc-native/releases godot-extension-4.1-webrtc.zip

image

Steps to reproduce

-

Minimal reproduction project

No response

aidan-j-rhoden commented 1 year ago

Open Settings, then Privacy & Security. Click the button for that app that says, "Open Anyway." This button will be visible for about an hour after you attempted to open it. support.apple.com/guide/mac-help/open-a-macapp-from-an-unidentified-developer

Please note that overriding your mac's security is not recommended, unless you know the exact contents of the application in question.

Alex2782 commented 1 year ago

Probably it is better to compile the webrtc-native sources yourself and run code-signing-and-notarization Otherwise all users would have to do that (customize Privacy & Security)? That's out of the question, I think.

aidan-j-rhoden commented 1 year ago

Yes, that would definitely be better practice, but this is a quick workaround until you can get a Apple Developer ID, which, I assume, is a hassle. With any exported projects from Godot to Mac, your end users would experience the same issue, unless you were able to code-sign and notarize the builds, which still requires an Apple Dev ID. This might be helpful to you: developer.apple.com/help/account/create-certificates/create-developer-id-certificates/

Ughuuu commented 8 months ago

So I was wondering what's the status on this? @Faless do you currently have a mac developer account?

Ughuuu commented 8 months ago

Or whoever is in charge of this addon I mean.

Faless commented 8 months ago

@Faless do you currently have a mac developer account?

I don't have a mac developer account so I can't sign it. We might want to sign it with the same identity that signs Godot, but I'm not sure (CC @akien-mga @hpvb )

Ughuuu commented 8 months ago

Also i try to build on ios and its failing at signing.(using Xcode localy) It appears xcode is generating a plist file that is wrong or something.

Ughuuu commented 8 months ago

The exact error I am getting when trying to build for iOS is:

This bundle is invalid. The bundle at path Payload/polyglot.app/Frameworks/libwebrtc_native.ios.template_debug.arm64.framework has an invalid CFBundleIdentifier 'com.gdextension.framework.libwebrtc_native.ios.template_debug.arm64' There are invalid characters(characters that are not dots, hyphen and alphanumerics) that have been replaced with their code point 'com.gdextension.framework.libwebrtc\\u005fnative.ios.template\\u005fdebug.arm64' CFBundleIdentifier must be present, must contain only alphanumerics, dots, hyphens and must not end with a dot

and

Invalid Bundle. The bundle polyglot.app/Frameworks/libwebrtc_native.ios.template_debug.arm64.framework does not support the minimum OS Version specified in the Info.plist.

It only happens if I export the build to app store, if I run locally it runs fine.

Ughuuu commented 8 months ago

Aparently solution is to have a .plist file near the .dylib and have them instead of .dylib to be a .framework that contains a .plist and a .dylib. (for the iOS problem). For the mac problem, we could use automatic signing action, eg similar to this I wrote: https://github.com/Ughuuu/godot-cpp-template/blob/add-more-stuff/options-to-build/.github/actions/sign/action.yml If it gets approved into godot-cpp-template we could reuse it from there.

Ughuuu commented 8 months ago

I would want to change this but the build system is so overly complicated, it's not just calling SConstruct but has a lot of scripts here and there. If you need an example on how the Info.plist file should look like, there is one either in godot-cpp-template or in godot-jolt.