godotengine / webrtc-native

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

Exporting .ipa to appstore fails #119

Closed beterfysiek closed 9 months ago

beterfysiek commented 9 months ago

Godot version

4.1.0

Plugin version

webrtc-native-1.0.2-stable.zip

System information

Macbook Air M1

Issue description

Building for iOS Apple Distribution does not work, it throws two errors on a fresh Godot 4.1.0 project. I want it to work when i deploy my app to the store without any issues after adding the webrtc library.

Asset validation failed (90208) Invalid Bundle. The bundle my_app.app/Frameworks/libwebrtc_native.ios.template_release.arm64.framework does not support the minimum OS Version specified in the Info.plist.

Asset validation failed (90049) This bundle is invalid. The bundle at path Payload/my_app.app/Frameworks/libwebrtc_native.ios.template_release.arm64.framework has an invalid CFBundleIdentifier 'com.gdextension.framework.libwebrtc_native.ios.template_release.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\u005frelease.arm64' CFBundleIdentifier must be present, must contain only alphanumerics, dots, hyphens and must not end with a dot. [see the Core Foundation Keys at https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/TP40009249-102070-TPXREF105] (ID: a1dc8e2d-631e-4a2a-8ffd-1c64d74c226f)

Steps to reproduce

Simply create a new project, import the webrtc library, build for iOS (Apple Distribution) and deploy to appstore trough XCode or otherwise.

The 'bundle is invalid. There are invalid characters' issue can be resolved by renaming com.gdnative.framework.libwebrtc_native.ios.release.arm64 to com.gdnative.webrtc-lib.

I could not figure out how to fix the minimum OS Version specified in the Info.plist yet. I tried to set the minimum OS Version to 10.0, 11.0, 12.0, 13.0 but none seem to work. I added the version to the plist and made a clean build before building each time.

Minimal reproduction project

No response

beterfysiek commented 9 months ago

Hope i can help someone with it. Got it all to work. Make a iOS build. Go into the exported folder

App_name > dylibs > webrtc > lib > libweb... > info.plist

change CFBundleIdentifier to com.gdnative.webrtc-lib and MinimumOSVersion to 15.2

<?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>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleIdentifier</key>
    <string>com.gdnative.webrtc-lib</string>
    <key>CFBundleName</key>
    <string>libwebrtc_native.ios.template_release.arm64</string>
    <key>CFBundleExecutable</key>
    <string>libwebrtc_native.ios.template_release.arm64</string>
    <key>DTPlatformName</key>
    <string>iphoneos</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleVersion</key>
    <string>1</string>
    <key>CFBundlePackageType</key>
    <string>FMWK</string>
    <key>MinimumOSVersion</key>
    <string>15.2</string>
</dict>
</plist>

Have fun coding!

beterfysiek commented 9 months ago

one question though, is it really needed that the library is build with a minimumOSVersion of 15.2? Seems high to me?