iOS 12 和Xcode10 适配

作者: Gala_ldx | 来源:发表于2018-09-28 14:54 被阅读107次

    1、Xcode10 中多余的文件

    例如:多余的info.plist 文件

    Multiple commands produce 'xxx/info.plist':

    解决方法:删除多余的文件即可,比如info.plist只留下自己的info.plist,第三方等的info.plist 文件删掉引用。

    2、Xcode 10 c++库的问题

    原因:  项目依赖了libstdc++.tbdlibstdc++.6.0.9.tbd,导致整个工程编译不通过,报出Undefined symbols错误, 原因是苹果在XCode10和iOS12中移除了libstdc++这个库,由libc++这个库取而代之,苹果的解释是libstdc++已经标记为废弃有5年了,建议大家使用经过了llvm优化过并且全面支持C++11的libc++库。

    解决:如果你自己的工程中使用了libstdc++libstdc++.6.0.9.tbd,那么就把模块代码重新调整为依赖libc++,然后重新检查是否存在问题,重新编译。

    注意:如果你引用的三方库使用了libstdc++或libstdc++.6.0.9.tbd,那么向三方库寻求支持,进行升级。

    3、iOS 12  statusBar内部结构发生变化

    现象:

    crash log:-[_UIStatusBarIdentifier isEqualToString:]: unrecognized selector sent to instance 0x153543529* Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘-[_UIStatusBarIdentifier isEqualToString:]: unrecognized selector sent to instance 0x153543529’

    原因

    1.png

    iOS12.0 情况下identifier的变成了类"_UIStatusBarIdentifier"而不是NSString,所以会在调用“isEqualToString”方法时发生crash。

    4、Xcode 10  imageNamed: 不能正常加载Assets里面的图片

    imageNamed:加载Assets中的图片出来是nil,将图片放到bundle中即可。

    5、iOS 12  无法获取SSID信息

    现象:获取网络信息SSID信息的方法,返回NO

    2.png

    原因:在iOS 12中,调试发现由CNCopyCurrentNetworkInfo函数得到的info一直为nil。CNCopyCurrentNetworkInfo方法在iOS 12中有了变化。通过查看官方文档,发现文档中增加了Important字样的描述:

    3.png

    其中important:

    重要
    要在iOS 12及更高版本中使用此功能,请在Xcode中为您的应用启用Access WiFi信息功能。 启用此功能后,Xcode会自动将Access WiFi信息权利添加到您的权利文件和应用程序ID中。

    解决:Xcode -> [Project Name] -> Targets -> [Target Name] -> Capabilities -> Access WiFi Information -> ON

    注意:buildID需要增加此功能,配置文件需要重新配置。

    6、Xcode10  import 闪退

    import 输入系统库或第三方库的头文件时,Xcode整个闪退。

    解决:切换一下编译方式,就不闪退了

    Xcode --> File --> Workspace Settings --> Build System --> Legacy Build System

    然后在切换回来New Build System(Default),也可以。

    相关文章

      网友评论

        本文标题:iOS 12 和Xcode10 适配

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