我将二进制文件上传到iTunes Connect,它已经过验证并被接受发布到App Store。我收到了Apple的电子邮件,说我的申请是无效的二进制文件:
亲爱的开发人员,
我们发现您最近交付的一个或多个问题 “项目名”。要处理您的交付,必须出现以下问题 校正:
iPhone 5优化要求 - 您的二进制文件未针对iPhone 5进行优化。截至5月1日,所有新的iPhone应用和应用更新 提交必须支持iPhone 5上的4英寸显示屏。所有应用程序必须 包括适当大小的启动图像。学习更多关于 通过查看iOS人机界面指南获得iPhone 5支持。
虽然您不需要修复以下问题,但我们希望如此 让你意识到它们:
非PIE二进制文件 - 可执行文件'xyz.app'不是位置无关的可执行文件。请确保您的构建设置 配置为创建PIE可执行文件。一旦需要更正 已完成,请转到版本详细信息页面,然后单击“准备好” 上传二进制文件。“继续完成提交过程,直到应用程序 状态为“等待上传”。然后,您可以提供更正的 二进制的。
我更改了Don't Create Position Independent Executables
>中的Target
选项Build Settings
至YES
,但我仍然收到上述相同的消息。
答案 0 :(得分:8)
Apple现在提供了一份文件,解释了该问题及其解决方法:QA1788: Building a Position Independent Executable,
以PIE
构建应用程序的步骤
在Xcode中,在“目标”部分中选择目标,然后点击“构建设置”标签查看其设置。
对于iOS应用,请将
iOS Deployment Target
设置为 iOS 4.3或更高版本。对于Mac应用,请将OS X Deployment Target
设置为 OS X 10.7或更高版本。确认
Generate Position-Dependent Code
设置为否。- 醇>
确认
Don't Create Position Independent Executables
设置为否。
答案 1 :(得分:5)
我们本周在所有应用更新中收到相同的消息。 您需要将“不创建位置独立可执行文件”设置为“否”和“生成位置相关代码”为“否”,这是默认值。
关键是您需要将“iOS部署目标”设置为4.3或更高版本,否则将忽略PIE设置。
您可以使用此命令测试应用程序二进制文件,它将在PIE exe行的末尾显示“PIE”。 otool -vh MyAppExe
答案 2 :(得分:0)
otool -hv /path/to/MyApp.app/MyApp
这就是说,Apple并没有强迫你“YET”拥有一个PIE-Binary应用程序。所以问题是“他们会强迫这样做吗?何时?”
_oho
更多信息:http://blog.hoachuck.biz/blog/2013/06/28/non-pie-binary-app-on-ios-could-lead-to-security-issue/