非PIE二进制 - 可执行的“项目名称”不是位置无关的可执行文件。

时间:2013-05-09 06:03:57

标签: iphone pie-chart

我将二进制文件上传到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 SettingsYES,但我仍然收到上述相同的消息。

3 个答案:

答案 0 :(得分:8)

Apple现在提供了一份文件,解释了该问题及其解决方法:QA1788: Building a Position Independent Executable

  

以PIE

构建应用程序的步骤      
      
  1. 在Xcode中,在“目标”部分中选择目标,然后点击“构建设置”标签查看其设置。

  2.   
  3. 对于iOS应用,请将iOS Deployment Target设置为 iOS 4.3或更高版本。对于Mac应用,请将OS X Deployment Target设置为 OS X 10.7或更高版本

  4.   
  5. 确认Generate Position-Dependent Code设置为

  6.   
  7. 确认Don't Create Position Independent Executables设置为

  8.   

答案 1 :(得分:5)

我们本周在所有应用更新中收到相同的消息。 您需要将“不创建位置独立可执行文件”设置为“否”和“生成位置相关代码”为“否”,这是默认值。

关键是您需要将“iOS部署目标”设置为4.3或更高版本,否则将忽略PIE设置。

您可以使用此命令测试应用程序二进制文件,它将在PIE exe行的末尾显示“PIE”。 otool -vh MyAppExe

答案 2 :(得分:0)

如文森特所提到的,有一个PIE-Binary:

  • 关注Apple Q&A QA1788
  • 将部署目标设置为4.3作为最低操作系统版本(这是PIE-Binary的要求)
  • (缺失位):确保您没有与PIE-binary不兼容的第三方库,否则不会为PIE-Binary构建所有项目。< / LI>
  • 查看: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/