These docs are for v1.0. Click to read the latest docs for v2.0.

Adding RunScript in project for Smartech SDK

🚧

Note

The below script needs to be added only if you perform manual integration of Smartech SDK.

This script loops through the frameworks embedded in the application and removes unused architectures when you Archive your build. This should be added to the RunScript of your Xcode Project.

  1. Click on the project file on the left panel.
  2. Select the application target.
  3. Click on Build Phases.
  4. Click on the Plus button on the top left side.
  5. Select New Run Script Phase.
  6. Paste the following script in the 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:

  1. Go to Xcode preferences.
  2. Select Locations tab.
  3. Select the Xcode version in Command Line Tools which you are using to Archive the build (Recommended to use the latest one).
  4. Open Terminal.
  5. Go to the directory in project where Smartech.framework is added.
  6. At that directory run following commands one by one:
    a. lipo -remove i386 Smartech.framework/Smartech -o Smartech.framework /Smartech
    b. lipo -remove x86_64 Smartech.framework/Smartech -o Smartech.framework/Smartech