如何在MAC M1上使用Xcode 12.2修复“IPA处理失败”的问题

16

当我尝试创建Ad Hoc IPA文件时,它会出现“IPA处理失败”的错误。

Xcode版本是12.2。Mac mini(M1,2020)

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

Assertion failed: Expected 2 archs in otool output:
/var/folders/kd/kb03k1ks33sb33gnl9fz95yr0000gn/T/IDEDistributionOptionThinning.~~~qlv6NP/Payload/xxx.app/xxx:
Mach header
      magic  cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
MH_MAGIC_64    ARM64        ALL  0x00     EXECUTE    47       5672   NOUNDEFS DYLDLINK TWOLEVEL BINDS_TO_WEAK PIE
Load command 0
      cmd LC_SEGMENT_64

如何修复?


打开兼容模式的XCODE,这对我有用。 - snrddo
7个回答

21

1 打开Finder--> 应用程序

2 选择Xcode----> 显示信息

3 使用Rosetta

这对我很有效

Xcode -->构建设置-->iOS部署目标-->iOS 13.0或更高版本

这个方法也可行,但我必须要兼容较旧的iOS版本, 因此我使用了Rosetta


1
太棒了!!非常感谢!!你帮我节省了另外一天解决这个问题的时间.. :) - Khushabu
嘿,由于我选择使用Rosetta,我的所有故事板都显示错误。你也遇到了这个错误吗?如果是的话,你是如何解决的? - Khushabu
我没有这个错误,你安装了Rosetta吗? - chun li
它对我有效!我没有想到启用Rosetta选项。谢谢。 - Alex Kang
@Khushabu 我也遇到了这个错误,我在这里回答了:https://stackoverflow.com/a/66010755/4711785 - Ahmet Sina Ustem
这太荒谬了,苹果!! - osrl

12

Xcode -->构建设置-->iOS部署目标-->iOS 13.0或更高版本

或者

  1. 点击窗口 > 组织器
  2. 右键单击您的应用程序 > 在Finder中显示
  3. 右键单击第一个.xcarchive文件 > 显示包内容
  4. 右键单击/Products/Applications > 显示包内容
  5. 删除所有lib*.dylib
  6. 重新分发应用程序

这对我有效。

然而,我不知道为什么这样解决了问题。

输入图片说明


今天我遇到了与yao.h相同设置的相同问题。额外提供一些信息:我的项目部署目标为iOS 10.0(最初是在旧Mac上开发的)。只有切换到iOS 13.0才能解决我的问题。-.- 我还将项目格式更新为Xcode 12.0兼容。切换到iOS 13后,我不再有一个*.dylib文件夹了。 - Sebastian
我们(包括我)遇到的问题是使用cocoapods。这就是错误似乎出现在pods框架中的地方。.dylib技巧对我没有用,但iOS 13目标看起来很有希望,我会尝试一下。我已经在苹果留言板上发布了帖子,希望能得到苹果支持团队的回复。这对我来说非常具有破坏性,因为我试图利用基于M1的笔记本电脑完成一个旧项目。 - truedat101

11
  1. 进入应用程序文件夹
  2. 选择一个Xcode并按Command+I键(这会打开Xcode的信息)
  3. 在“常规”选项下选择(使用Rosetta打开)
  4. 确保关闭项目和退出Xcode,然后重新打开Xcode,现在您可以生成.ipa文件

我在使用英特尔Mac时遇到了同样的问题。这真是令人痛苦。 - Martin
我使用苹果芯片M1,遇到了这个错误。这节省了我的时间,谢谢! - Tim
谢谢!我也有M1。 - andron

4

只需使用Rosetta打开您的Xcode。这与部署目标无关。


在一个涉及多个Cocopods的更复杂的构建中,我发现构建进度仅到90%就停滞了。卡住了。因此,虽然Rosetta方法可能适用于某些项目,但并不适用于所有情况。 - truedat101
因此,构建挂起与其他Xcode / Rosetta问题有关,通过重新启动解决。 它在索引文本时卡住了。 - truedat101
@truedat101 当你构建你的应用程序时,你不需要使用Rosetta。当你的应用程序构建完成后,你可以关闭Xcode并在Rosetta中重新打开它,然后你就可以成功地导出IPA文件了。 - ruby109

3

"Xcode -->构建设置 -->iOS部署目标-->iOS 13.0或更高版本"。这种方法可以解决问题,但我的应用程序的最低支持系统低于13。

-->在“IPA处理失败”错误提示之前,在“分析签名”显示加载过程中,快速连续点击“下一步”按钮以跳过错误。我不知道原因。希望苹果能够解决这个问题。


似乎没有办法在弹出窗口时取消勾选Bitcode复选框,但可以按照描述快速点击下一步。 - truedat101
1
你可以将 XCode 设置为使用 Rosetta 打开,这种方法可以解决这个问题。但是我感觉即使恢复了这个设置,Xcode 的构建速度也会变慢。 - Hao Liang
啊,非常好。我遇到的Rosetta问题是它一直卡在索引文本(或索引|暂停)上。解决方法是重新启动。然后我尝试了你在这里的解释。这是一个艰难的过程来弄清楚。感谢您提供取消选中“从位代码重建”的提示。同意每次都会变慢。我的应用程序有所有的storyboards和cocoapods,所以有点大。 - truedat101
仅供记录,我没有将我的项目版本设置为针对iOS 13,但是通过Rosetta方法+取消选中“从位代码重新构建”,我能够将其保持在iOS10上。 - truedat101
顺便提一下,这个问题似乎在最新的XCode版本中已经修复了。 - truedat101

2

将您的最小部署目标设置为iOS 13.0或更高版本。


1

有两个解决方案:

  1. 在 Rosetta 模式下运行 Xcode
  • 完全退出 Xcode
  • 前往 Finder -> 应用程序
  • 右键单击 Xcode 并选择“获取信息”
  • 勾选 Rosetta
  • 再试一次
  1. 升级 Xcode 到 12.5 版本

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接