Errors when submitting to App Store
elzalem opened this issue · 2 comments
elzalem commented
Hello,
I'm having the following errors when I upload the archive to the App Store using Xcode 7.1.1:
- ERROR ITMS-90087: "Unsupported Architectures. The executable for 'GalileoControl.framework' contains unsupported architectures '[x86_64, i386]'."
- ERROR ITMS-90209: "Invalid Segment Alignment. The app binary at 'GalileoControl.framework/GalileoControl' does not have proper segment alignment. Try rebuilding the app with the latest Xcode version."
- ERROR ITMS-90125: "The binary is invalid. The encryption info in the LC_ENCRYPTION_INFO load command is either missing or invalid, or the binary is already encrypted. This binary does not seem to have been build with Apple's linker."
- WARNING ITMS-90080: "The executable 'GalileoControl.framework' is not a Position Independent Executable. Please ensure that your build settings are configured to create PIE executables.
GalileoControl.framework is configured as an Embedded Binary, my Deployment Target is 8.0
The app functions normally when distributed through Fabric's Beta.
Does anyone have a clue?
Thanks
AlexisBarreyat commented
Add this Run Script in your Build Phases.
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
elzalem commented
I have stripped GalileoControl's simulator binaries using lipo and was able to submit the archive to the App Store without any warnings.
Thanks @AlexisBarreyat