【问题标题】:'IPA processing failed' while distributing build in Xcode Beta在 Xcode Beta 中分发构建时出现“IPA 处理失败”
【发布时间】:2019-07-04 06:24:40
【问题描述】:

在尝试分发 IPA 时,Xcode 抛出错误:

“IPA 处理失败”

步骤:

产品 -> 存档。 -> Distrubute -> 企业/开发 -> “IPA 处理失败”

Xcode: Version 11.0 beta 3 (11M362v)

操作系统: 10.15 Beta (19A501i)

注意:升级到 Xcode 11 一次后,我能够进行构建,但在代码中进行了额外的计数检查后,从那一刻起我就无法成功。,即使我无法重新导出最后成功生成存档。


更新:我认为这是因为我有一些框架 包含在我的项目中,当时第 3 方框架没有 为新的编译器发布。现在他们发布了支持 swift 5.1 和 Xcode 11 编译器。所以问题不再是 我。

【问题讨论】:

标签: ios xcode ipa xcode11


【解决方案1】:

对我来说,以下解决方案有效。创建iPA时取消bitcode检查并尽快点击next并且不允许xcode调用api来验证IPA

在启用 bitocde 的情况下取消选中此 rebuit,然后尽快单击下一个

【讨论】:

  • 但是如果我的应用支持 iPad 和 iPhone 怎么办?
  • 我的应用在应用精简期间失败。仍在挖掘。
  • 创建 IPA 时.. 取消选中 bitcode 选项并尝试尽快单击下一个。不要让 xcode 调用 api 来验证 iPA
  • 很高兴知道,此解决方案对您有用。对我来说是不同的。我已经更新了问题。而且我不再有错误了。无论如何感谢您的回答。我已经为你的努力投票赞成你的回答。一旦获得更多支持,我会接受这个答案。
【解决方案2】:

同样的问题,同样的技巧在 Xcode 11.1 中仍然存在 即使项目设置禁用了位码,在分发应用程序时它也会执行检查。当前的解决方法是在该窗口出现后立即按 Enter,因为“下一步”按钮具有焦点,或者超级快速地单击它。

注意:当它失败时,从日志来看,断言失败似乎是对 otools 的一些抱怨,而不是一个或多个 3d 方框架的某个预期数量的拱门。 (想知道使用 Xcode 11+ 重建这些框架是否会在没有变通方法的情况下解决问题)

更新

这种“方法”仍然适用于 Xcode 11.3

希望对你有帮助

【讨论】:

  • 这真是一个了不起的修复!哈哈苹果cmon!
【解决方案3】:

我认为这是因为我的项目中包含了一些框架,当时没有为新编译器发布第 3 方框架。

现在他们发布了支持 swift 5.1 和 Xcode 11 编译器。所以这个问题现在对我来说不是。

【讨论】:

  • 我正在使用一个框架。我尝试使用 swift 5 创建新框架,但它给了我同样的错误
【解决方案4】:

我只是从 嵌入式框架 中删除了 WEBRTC 框架,因为我是从 Mac 安装位置手动添加的 WEBRTC 框架。删除后,项目工作正常,应用程序成功构建到 Apple Store Connect。我可能错了但我认为嵌入式框架仅适用于使用 Carthage 安装的框架。

【讨论】:

    【解决方案5】:

    我在 Xcode 11.3 中遇到了同样的问题。 我已经使用这些步骤解决了这个问题。这对我有用。

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

    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
    

    【讨论】:

      【解决方案6】:

      在我使用来自 Amazon 的 Chime SDK 时,在日志报告中检查您的任何框架是否导致了此问题

      Assertion failed: Expected 4 archs in otool output:
      /var/folders/gw/92tbc3ls1mgfcg8qn1gh4whh0000gr/T/IDEDistributionOptionThinning.~~~aSD3W8/Payload/telehealth.app/Frameworks/AmazonChimeSDK.framework/AmazonChimeSDK:
      

      我的解决方案是根本不嵌入框架。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-07
        • 2019-12-14
        • 2021-03-03
        • 2022-01-26
        • 2016-07-30
        • 2022-11-14
        • 1970-01-01
        相关资源
        最近更新 更多