Swift错误集

作者: BennyLoo | 来源:发表于2018-03-06 11:07 被阅读104次

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

    相关文章

      网友评论

        本文标题:Swift错误集

        本文链接:https://www.haomeiwen.com/subject/kbslfftx.html