Swift见解

Swift错误集

2018-03-06  本文已影响104人  BennyLoo

错误1: 打包上架二进制文件中,包含了不兼容的数据

The following binaries use incompatible versions of Swift:*******(此处为相关文件的地址)

最近一年Swift更新的频率颇高,到目前为止,Xcode已经到了9.X版本,这次更新遇到一个小问题: 同一个项目,我使用Xcode8.3.3打开是没有问题的,但是使用Xcode9.0打开之后会报错:

The following binaries use incompatible versions of Swift:*******(此处为相关文件的地址)

不管是重新启动Xcode或者Clear都没用。然后进行了一番研究。记录于此。

问题产生原因:

这个问题产生的原因是在更新Xcode之前,Xcode中有预留的DriveData文件没有被清空(这个文件相当于与缓存文件,可以增加每次编译的速度),DriveData文件中会根据每个项目单独建立一个与之对应的'Drive'。 假设更新Xcode之前我的Xcode版本是8.3.3,那么这个'Drive'的版本也就是8.3.3,而后,当我使用更新后的Xcode9运行项目的时候,就会提示二进制文件包含了不兼容Swift版本的数据。

解决办法:

对症下药,进入到/Users/XXXX/Library/Developer/Xcode/DerivedData/ 直接删除对应的'Drive'文件然后重新编译即可。

错误2: 上传ipa文件时候,提示构建的版本无效。

2018-3-15

如图:


错误信息

并接到苹果发出的邮件:

Dear Developer,
We identified one or more issues with a recent delivery for your app, "GPRS-Alarm". Please correct the following issues, then upload again.
Unexpected CFBundleExecutable Key - The bundle at '/Payload/GSMGP20GPRS.app/Base.lproj/Info.plist' does not contain a bundle executable. If this bundle intentionally does not contain an executable, consider removing the CFBundleExecutable key from its Info.plist and using a CFBundlePackageType of BNDL. If this bundle is part of a third-party framework, consider contacting the developer of the framework for an update to address this issue.

问题产生原因:

我遇上的这个错误的具体的原因是我们的 info.plist 文件中没有包含可执行的文件。
根据这个提示,删除了 Executable file 文件之后,发现不能编译。

解决办法:

最后我发现,因为项目中包含的info.plist文件的路径被修改过,直接进入到了整个项目的下级文件中。
手动将 info.plist 拖回,并在Xcode 的设置中,将 info.plist 的路径修改为心的路径,最后 clear 运行,再打包。

拓展:

除了这个原因之外,在搜索解决之道的过程中,看到很多类似的错误,大部分都是集中在第三方的 info.plist 中。这个一般根据提示删除对应的第三框架的 info.plist 中的 Executable file 即可。

上一篇下一篇

猜你喜欢

热点阅读