如何修复Xcode 11中的“ IPA处理失败”错误?

R.B*_*jan 9 ipa ios13 xcode11

当我尝试使用Distribute APP选项创建IPA文件时。它给出了“ IPA处理失败”错误。

我已经检查了日志文件:IDEDistribution.standard.logfile。

2019-08-06 18:36:52 +0000警告:配置问题:平台iPhoneSimulator.platform没有任何非模拟器SDK; 忽略它扫描IPA ... 2019-08-06 18:36:52 +0000断言失败:otool输出中预期有4个弓形:/var/folders/4t/rpjk7pd55t16jfrd32y98gf0lb2t68/T/IDEDistributionOptionThinning.~~~a4cZJc/Payload/demo .app / Frameworks / AppAuth.framework / AppAuth:马赫标题魔术cputype cpusubtype限制文件类型ncmds sizeofcmds标志MH_MAGIC_64 X86_64 ALL 0x00 DYLIB 23
3680 NOUNDEFS DYLDLINK TWOLEVEL NO_REEXPORTED_DYLIBS加载命令0

Dil*_*hra 58

我遇到了同样的问题。我使用这个脚本解决了这个问题。
请按照相同的步骤操作。

在此处输入图片说明

构建阶段 -> 加号按钮 -> 创建新的运行脚本阶段

 APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"

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"
echo $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH")

FRAMEWORK_TMP_PATH="$FRAMEWORK_EXECUTABLE_PATH-tmp"

case "${TARGET_BUILD_DIR}" in
*"iphonesimulator")
    echo "No need to remove archs"
    ;;
*)
    if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "i386") ; then
    lipo -output "$FRAMEWORK_TMP_PATH" -remove "i386" "$FRAMEWORK_EXECUTABLE_PATH"
    echo "i386 architecture removed"
    rm "$FRAMEWORK_EXECUTABLE_PATH"
    mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH"
    fi
    if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "x86_64") ; then
    lipo -output "$FRAMEWORK_TMP_PATH" -remove "x86_64" "$FRAMEWORK_EXECUTABLE_PATH"
    echo "x86_64 architecture removed"
    rm "$FRAMEWORK_EXECUTABLE_PATH"
    mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH"
    fi
    ;;
esac

echo "Completed for executable $FRAMEWORK_EXECUTABLE_PATH"
echo $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH")

done
Run Code Online (Sandbox Code Playgroud)


Zgp*_*ace 43

1.取消选中“从位码重建”,2.单击下一步快速快速。(速度也很重要。)

在此处输入图片说明

如果不是,它将显示 IPA 处理失败。 在此处输入图片说明


小智 14

为了解决类似的问题,我使用了以下内容:

  • 在应用程序的目标中,我去了 Build Phases
  • 之后Embed FrameworksEmbed App Extensions部分我已经添加Run script与下面的脚本:
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
Run Code Online (Sandbox Code Playgroud)

我从这里获取的脚本:https : //medium.com/@maximbilan/ios-submission-unsupported-architectures-issues-733917a98cc3,感谢 Daniel Kennet!

另外,请注意此脚本也可能导致编译错误。在这种情况下,这是解决方案:在添加运行脚本致命错误后构建 Xcode 项目时出错:lipo: input file

最后,我还注意到在本地编译应用程序时必须关闭此脚本(在开发设备/模拟器上)

希望有帮助!


小智 8

在 Xcode 11 中存档时,似乎不允许使用 i386 或 x86_64 架构的动态库。我通过从上述框架中删除这些架构来修复它

  • [这篇文章](/sf/answers/2899187511/)中@Varrry的脚本做了删除架构的技巧并为我解决了问题 (3认同)
  • 实际上,我通过添加脚本来删除模拟器二进制文件来解决问题 (2认同)

nul*_*uli 6

您应该检查Embed Frameworks以下Xcode > build阶段。

如果此处介绍了您的框架,则不能i386\x86_64在框架中使用。因为将Embed Frameworks复制到应用程序。为了控制应用程序的大小,Embed Frameworks需要最简化的框架。

您可以Link Binary With Libraries用来介绍您的框架,如下所述:https : //github.com/Carthage/Carthage/issues/1046

请注意,您需要添加一个新的运行脚本并向其中添加您的框架,否则它将崩溃。在此处输入图片说明


Mob*_*Mon 6

我不得不取消选中“从位码重建”


归档时间:

查看次数:

5243 次

最近记录:

5 年,12 月 前