Before, Jitsi Meet (the app) would only link with JitsiMeet.framework, which in turn embedded WebRTC.framework. While possible, Apple doesn't allow apps with nested frameworks to be submitted to the store. Now the app will link with WebRTC.framework directly so there is no framework nesting. A potential improvement here is to build WebRTC as a static library so it can then be embedded in JitsiMeet.framework and completely hidden from the app.
40 lines
1.3 KiB
Bash
Executable File
40 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This script gets executed from Xcode to fixup the embedded frameworks and
|
|
# bundle the necessary architectures.
|
|
|
|
|
|
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
|
|
|
|
# This script loops through the frameworks embedded in the application and
|
|
# removes unused architectures.
|
|
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
|
|
do
|
|
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
|
|
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
|
|
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
|
|
|
|
EXTRACTED_ARCHS=()
|
|
|
|
for ARCH in $ARCHS
|
|
do
|
|
if lipo -info "$FRAMEWORK_EXECUTABLE_PATH" | grep -q -v "^Non-fat"
|
|
then
|
|
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
|
|
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
|
|
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
|
|
fi
|
|
done
|
|
|
|
if [ -n "$EXTRACTED_ARCHS" ]
|
|
then
|
|
echo "Merging extracted architectures: ${ARCHS}"
|
|
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
|
|
rm "${EXTRACTED_ARCHS[@]}"
|
|
|
|
echo "Replacing original executable with thinned version"
|
|
rm "$FRAMEWORK_EXECUTABLE_PATH"
|
|
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
|
|
fi
|
|
done
|