Xcode说我的一些豆荚不是PIE,这样好吗?

Swe*_*per 9 xcode itunesconnect ios cocoapods

今天,在我将存档上传到应用程序商店后,Xcode向我展示了这个警告以及其他几个(都是类似的).

这是其中之一:

警告ITMS-90080:"可执行文件'Payload/MyApp.app/Frameworks/EZLoadingActivity.framework'不是位置无关的可执行文件.请确保您的构建设置已配置为创建PIE可执行文件.有关更多信息,请参阅技术问答QA1788 - 在iOS开发人员库中构建一个与位置无关的可执行文件." 警告ITMS-90080:"可执行文件'Payload/MyApp.app/Frameworks/EZLoadingActivity.framework'不是位置无关的可执行文件.请确保您的构建设置已配置为创建PIE可执行文件.有关更多信息,请参阅技术问答QA1788 - 在iOS开发人员库中构建一个与位置无关的可执行文件."

所以显然这个东西非常重要,需要说两遍.

EZLoadingActivity是我用来编写应用程序的cocoapod.由于它是一个库,因此不能单独运行.因此,我认为它不是一个独立的位置可执行文件.但是当警告出现时,我认为一定有问题.

我看到另一个问题,其OP的二进制文件由于此错误而被拒绝.所以我担心我的二进制文件也会被拒绝.

我的二进制文件会被拒绝吗 拥有非PIE的框架是否可以?我有其他使用cocoapods的应用程序,但我上传它们时没有这个警告.这是我第一次遇到这样的警告?这是严重的吗?我能做什么?

jee*_*yul 19

这是一个临时的iTunesConnect问题.

我已经检查过没有警告的旧档案.然后,我发现无论使用什么构建设置,所有构建的嵌入式框架都没有PIE标​​志.

因此,框架的缺失PIE标志不应成为警告的原因.

我认为Apple改变了服务器端验证并引入了一些错误.

  • 框架[不能有PIE标​​志](https://github.com/aosm/ld64/blob/88428de93dab43bf5fc5baca9ee38226bc013269/src/ld/Options.cpp#L3437-L3440),因为它仅适用于主要可执行文件.所以这肯定是验证方面的一个错误. (4认同)