Non-PIE Binary - The executable 'project name' is not a Position Independent Executable.

主宰稳场 提交于 2019-12-18 13:24:10

问题


I uploaded a binary on into iTunes Connect, it was validated and accepted to publish to the App Store. I received an email from Apple, saying that my application is an invalid binary:

Dear developer,

We have discovered one or more issues with your recent delivery for "Project name". To process your delivery, the following issues must be corrected:

iPhone 5 Optimization Requirement - Your binary is not optimized for iPhone 5. As of May 1, all new iPhone apps and app updates submitted must support the 4-inch display on iPhone 5. All apps must include a launch image of the appropriate size. Learn more about iPhone 5 support by reviewing the iOS Human Interface Guidelines.

Though you are not required to fix the following issues, we wanted to make you aware of them:

Non-PIE Binary - The executable 'xyz.app' is not a Position Independent Executable. Please ensure that your build settings are configured to create PIE executables. Once the required corrections have been made, go to the Version Details page and click "Ready to Upload Binary." Continue through the submission process until the app status is "Waiting for Upload." You can then deliver the corrected binary.

I have changed the Don't Create Position Independent Executables option in Target > Build Settings to YES, but I still receive the same message above.


回答1:


There is now a document from Apple explaining the issue and how to solve it: QA1788: Building a Position Independent Executable,

Steps for building your application as PIE

  1. In Xcode, select your target in the "Targets" section, then click the "Build Settings" tab to view its settings.

  2. For iOS apps, set iOS Deployment Target to iOS 4.3 or later. For Mac apps, set OS X Deployment Target to OS X 10.7 or later.

  3. Verify that Generate Position-Dependent Code is set at to NO.

  4. Verify that Don't Create Position Independent Executables is set to NO.




回答2:


We're getting the same message on all of our app updates this week. You will need to set "Don't Create Position Independent Executables" to "NO" and "Generate Position-Dependent Code" to "NO", which is the default.

The key is that you will need to set "iOS Deployment Target" to 4.3 or later, or the PIE settings will be ignored.

You can test the app binary with this command and it will show "PIE" at the end of the line for a PIE exe. otool -vh MyAppExe




回答3:


as mentioned here by Vincent, to have a PIE-Binary:

  • follow Apple Q&A QA1788
  • set deployment target to 4.3 as minimum OS version (this is a requirement for PIE-Binary)
  • (the missing bit): make sure you don't have a 3rd party library that would not be compatible with PIE-binary, otherwise the all project will not build for PIE-Binary.
  • check with: otool -hv /path/to/MyApp.app/MyApp

This said, Apple does not force you "YET" to have a PIE-Binary app. So the question is "will they force to do so ? and when ?"

_oho

more info: http://blog.hoachuck.biz/blog/2013/06/28/non-pie-binary-app-on-ios-could-lead-to-security-issue/



来源:https://stackoverflow.com/questions/16455416/non-pie-binary-the-executable-project-name-is-not-a-position-independent-exe

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!