iOS 12 和Xcode10 适配

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 适配)