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

Adding RunScript in project for Smartech SDK

📘

Note:

Do this step if you have 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.

  1. Click on the project file on 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 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 the 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 the project where Smartech.framework is added.
  6. 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