iOS应用提交:缺失64位支持

91

我昨天提交了一个应用进行审核,没有任何问题。之后我意识到需要做很小的改动(只需将地图的最大缩放级别从19更改为18,其他没变),所以我从iTunes Connect中删除了二进制文件,试图重新提交。

现在我收到了以下警告:

warning_xcode

我不明白为什么会出现这样的警告,因为我的架构是:

  • architectures : armv7
  • valid architectures : armv6, armv7, armv7s, arm64

该应用在模拟器中运行良好。如果我尝试使用标准架构(armv7、arm64)作为警告建议的话,那么该应用程序就无法构建,我会得到以下错误信息:

  • Undefined symbols for architecture x86_64
  • ld: symbol(s) not found for architecture x86_64

我正在使用lib route-me,并设置了相同的架构设置。


我们也遇到了这个问题。:( - Nazik
从昨天开始到现在只有吗? - Tim Autin
  1. 尝试在更改后清除 Xcode 的 DerivedData;
  2. 或许你正在使用较旧的外部 API、SDK、框架等。
- TonyMkenu
@Tim,你解决了这个问题吗?能否请你发布解决方案? - user2056563
抱歉,我没有找到解决方案,而且我已经不再参与这个项目了。目前只是一个警告,所以我已经能够提交应用程序了。 - Tim Autin
12个回答

106

使用“标准体系结构”如下:

  • 架构: "标准体系结构" arm7, arm64
  • 有效架构: "arm64" , armv7...
  • 仅构建活动架构-(特别是...如果您连接的设备不兼容arm64)

如下所示:

输入图像描述

  • 此外,从Mac上拔下iPhone和iPad有助于解决问题,特别是如果它们是32位版本。

2
谢谢您的回答,但正如我在问题中所述,我已经尝试过了,但是使用这些设置项目无法编译 :/ - Tim Autin
3
@Tim,我也在架构中有“armv7和arm64”。然而,在提交应用程序进行验证时仍会出现缺少64位支持的警告。 - Nazik
@Tim 请尝试清理您的DerivedData,并检查您最新的外部框架或SDK是否支持64位。 - TonyMkenu
3
请确保在归档最终版本时,设备未连接。请参考下面的@powertoold回答(https://dev59.com/u18d5IYBdhLWcg3weiB-#26848865)。 - Filipe Borges
谢谢兄弟!真是太棒了!解决了一直悬而未决的问题。 - Tejas
显示剩余2条评论

68
在确认正确的架构后,确保在将最终构建档案备份以提交到应用商店时,您的设备未连接到计算机。
出现此警告的原因是您所连接的设备可能不兼容arm64。

4
感谢夸奖!:D 你节省了我的时间。 - Vaibhav Limbani
1
大帮助!在这个问题上为我节省了很多时间。对于升级旧应用程序来说是一个不错的提示。 - harry
我相信如果你将构建设置Build Active Architecture Only更改为No,则可以保持非64位设备的连接。这将强制Xcode构建64位二进制文件,无论连接的设备是什么。 - jxmallett
3
除了 @jxmallett 的回答外,确保您的 Scheme 配置存档设置为 Release,其中 Build Active Architecture 设置为 No设置存档方案 - KarenAnne
1
FYI,我必须拔掉我的设备,切换到模拟器,然后再切换回“iOS设备”才能使这个工作。 - nwkeeley
在此之前,我还需要执行“Product -> Clean Build Folder..”步骤才能使其正常工作。 - Kevin Qi

37

正如Tony所写,两行中都有这些设置是很重要的。

由于我的(显然也包括你的)项目在arm64被添加到标准之前就已经创建了,即使它被显示为标准,也没有反映在“有效架构”中。

我做的事情:

  • 我进入了项目(而不是目标)配置
  • 在可用架构中输入“arm64”(它会自动反映在目标和模式中)

经过清理/构建后,我甚至收到一些关于将float转换为CGFloat等不正确的警告,因此这些设置显然应用了。

验证警告也消失了!

输入图像说明


1
即使标为“标准”,也不会在“有效架构”中反映出来。这对我来说很关键。谢谢! - Romain
1
如果有助于他人,我必须在项目和目标中进行更改才能使其正常工作。 - djburdick
@djburdick 谢谢。在其他方法都无效时,这个对我很有用。 - Dave Chambers

27

将您的物理设备从 Mac 上拔下。在 XCode 中的设备列表中选择 iOS 设备,然后再次创建存档。对我而言有效。


5

今天我用以下步骤解决了这个问题:

构建设置:

体系结构:标准架构(arm7,arm64) - $(ARCH_STANDARD)

有效的体系结构:armv7 armv7s arm64

  1. 连接iPhone并进行应用的清理和构建
  2. 断开iPhone连接,检查顶部栏是否为“iOS 设备”
  3. 存档
  4. 验证和提交

@Timuçin。很抱歉回复晚了,你说得对:armv7、armv7s和arm64。 - Leonel Folmer

3

只需使用最新版本的xCode创建一个新项目,并找到“Build settings”选项。使用最新版本创建的新项目默认具有64位支持。

enter image description here


不到2%的人使用iOS 6或更低版本。https://developer.apple.com/support/appstore/ - Kirit Vaghela

2

好的,这很疯狂。

我尝试了每个答案。但只有当我在有效架构中将arm64放在armv7armv7s之前时才有效。

P.S.:xcode版本:7.2


1
嗯,只有连接设备后才会显示实际的错误日志。然后一些已弃用且需要修复(红色)的代码行以及RSA库的一些问题出现了。 - maxweber

1

我通过更改解决了这个问题,

架构:arm7,arm64

有效架构:arm7,arm64

仅构建活动架构:是


1
我通过设置如下图所示的配置提交成功: enter image description here (使用真实设备进行存档)

1
应该将发布模式设置为否。 - ZYiOS

1

解决了所有警告。反复检查了所有内容。在此处找到了一个单词的答案。

"仅构建活动架构 - NO(特别是...如果您连接的设备不兼容arm64)"

我的iPad不是64位的。将Build Active Architecture设置为NO,我的提交成功了!


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