所以我尝试使用Shopify API。当我存档并验证应用程序时,就没有问题了,但当我将其提交到应用程序商店时,它就会给我以下问题。

ERROR ITMS-90087: "Unsupported Architecture. Your executable contains unsupported architecture '[x86_64, i386]'." ERROR ITMS-90209: "Invalid segment Alignment. The App Binary at SJAPP.app/Frameworks/Buy.framework/Buy does not have proper segment alignment. Try rebuilding the app with the latest Xcode version." (I am already using the latest 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 built with Apple's Linker." WARNING ITMS-90080: "The Executable Payload/..../Buy.framework is not a Position Independent Executable. Please ensure that ur build settings are configured to create PIE executables."


当前回答

下面是我专门用来从可执行文件中删除一个框架架构的脚本。

# Remove unused Framework architecture from "YourApp" framework.

FRAMEWORK_EXECUTABLE_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}/Frameworks/YourApp.framework/YourApp"

echo "$FRAMEWORK_EXECUTABLE_PATH"

cp "$FRAMEWORK_EXECUTABLE_PATH" "${FRAMEWORK_EXECUTABLE_PATH}_X86_64"

echo "Executing following command to remove x86_64 arch from YourApp framework executable"
echo "lipo -remove x86_64 \"$FRAMEWORK_EXECUTABLE_PATH\" -o \"${FRAMEWORK_EXECUTABLE_PATH}_X86_64\""

lipo -remove x86_64 "${FRAMEWORK_EXECUTABLE_PATH}_X86_64" -o "$FRAMEWORK_EXECUTABLE_PATH"

rm "${FRAMEWORK_EXECUTABLE_PATH}_X86_64"

将此脚本添加到项目目标的“构建阶段”中。请务必选中复选框:“仅在安装时运行脚本”

其他回答

我从构建设置-有效架构-发布中删除了i386和x64_86架构,一切都工作得很好。

现在唯一的问题是您不能为了测试目的在模拟器上运行RELEASE版本。但是,如果你想的话,你可以很容易地把它们加回来。

更新为Xcode 10.1,以下解决方案为我工作:

你只需要从嵌入式二进制文件中删除框架,并将其添加到链接框架和库中。

参考下面的截图;

此错误(ITMS-90240)也可能由静态(.a)库引起。这里有一个脚本来剥离多余的架构。在Xcode中将此添加到目标> BuildPhases >单击+并选择运行脚本。然后将其粘贴到脚本框中。

该脚本搜索.a文件,检查它是否包含有问题的体系结构,如果确实包含,则生成一个不包含该体系结构的新.a文件。

macOS:

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
STRIPARCHS="armv7 armv7s arm64"
for t in $STRIPARCHS
do

if find "$APP_PATH" -name '*.a' -exec lipo -info {} \; | grep $t ; then
    find "$APP_PATH" -name '*.a' -exec lipo -remove $t {} -output {}2 \; -exec rm {} \; -exec mv {}2 {} \; ;
fi

done

exit 0

对于iOS:

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
STRIPARCHS="x86_64 i386"
for t in $STRIPARCHS
do

if find "$APP_PATH" -name '*.a' -exec lipo -info {} \; | grep $t ; then
    find "$APP_PATH" -name '*.a' -exec lipo -remove $t {} -output {}2 \; -exec rm {} \; -exec mv {}2 {} \; ;
fi

done

exit 0

我也有同样的问题。 即使在添加给定的运行脚本后,它也不能工作。 这是与Xcode相关的问题。 我使用的是Xcode 9.0版本,但最新版本是9.2。

所以我安装了最新的Xcode(9.2),它工作。

即使在添加脚本和更新框架几次之后,我也遇到了同样的问题。

确保在xCode中脚本被添加在嵌入之后的末尾。我想我不小心在嵌入框架之前移动了脚本。

注意:我有xCode 9.1