Getting Script Error 'Extracting arm64 from ArcGIS fatal error: lipo: input file' while running my project using xcframeworks

305 views Asked by At
    Executable is /Users/Username/Library/Developer/Xcode/DerivedData/MyProject-eavzdqtipinkadfawvcisnzrpzgh/Build/Products/Debug-iphoneos/myApp.app/Frameworks/ArcGIS.framework/ArcGIS
Extracting arm64 from ArcGIS
fatal error: lipo: input file (/Users/Username/Library/Developer/Xcode/DerivedData/MyProject-eavzdqtipinkadfawvcisnzrpzgh/Build/Products/Debug-iphoneos/MyApp.app/Frameworks/ArcGIS.framework/ArcGIS) must be a fat file when the -extract option is specified
Merging extracted architectures: arm64
fatal error: lipo: can't open input file: /Users/username/Library/Developer/Xcode/DerivedData/MyProject-eavzdqtipinkadfawvcisnzrpzgh/Build/Products/Debug-iphoneos/MyApp.app/Frameworks/ArcGIS.framework/ArcGIS-arm64 (No such file or directory)
rm: /Users/username/Library/Developer/Xcode/DerivedData/MyProject-eavzdqtipinkadfawvcisnzrpzgh/Build/Products/Debug-iphoneos/MyApp.app/Frameworks/ArcGIS.framework/ArcGIS-arm64: No such file or directory
Replacing original executable with thinned version
mv: rename /Users/username/Library/Developer/Xcode/DerivedData/MyProject-eavzdqtipinkadfawvcisnzrpzgh/Build/Products/Debug-iphoneos/MyApp.app/Frameworks/ArcGIS.framework/ArcGIS-merged to /Users/username/Library/Developer/Xcode/DerivedData/MyProject-eavzdqtipinkadfawvcisnzrpzgh/Build/Products/Debug-iphoneos/MyApp.app/Frameworks/ArcGIS.framework/ArcGIS: No such file or directory
Command PhaseScriptExecution failed with a nonzero exit code
1

There are 1 answers

0
Rajasekhar Pasupuleti On

I found an invalid Run Script on Build phases in my project. I remove that and Im able to run the project

Please find the script bellow

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