Adding RunScript in project for Smartech SDK
Note:
Do this step if you manually add the Smartech SDK.
This script loops through the frameworks embedded in the application and removes unused architectures. This should be added in the RunScript of your Xcode Project.
- Click on the project file on left panel.
- Select the application target.
- Click on Build Phases.
- Click on the Plus button on the top left side.
- Select New Run Script Phase.
- Paste the following script in script editor.
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
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
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"
done
Common error while creating an Archive
If you get an error like ‘Assertion failed: Expected 5 archs in otool output’, you can perform the following steps:
- Go to Xcode preferences.
- Select the Locations tab.
- Select the Xcode version in Command Line Tools which you are using to Archive the build (Recommended to use the latest one).
- Open Terminal.
- Go to the directory in the project where NetCorePush.framework is added.
- At that directory run following commands one by one:
a. lipo -remove i386 NetCorePush.framework/NetCorePush -o NetCorePush.framework /NetCorePush
b. lipo -remove x86_64 NetCorePush.framework/NetCorePush -o NetCorePush.framework/NetCorePush
Updated over 4 years ago