Swift错误集
错误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 即可。