关于Xcode10适配的坑以及打包出现的BUG

一、由于2018年新出了3款iPhone,分别是XS、XR、XS Max,因此我们要考虑适配问题。

适配的iPhoneX 的分辨率或pt:2436 * 1125 、 pt: 812 * 375
iPhoneXr的分辨率或pt:1792 * 828 、 pt: 896 * 414
iPhoneXs 的分辨率或pt: 2436 * 1125 、 pt: 812 * 375
iPhoneXs Max 的分辨率或pt:2688 * 1242 、 pt: 896 * 414

这里请注意,如果你在项目中使用的是分辨率适配的iPhone X的话,对于今年的XR和XS Max,也需要进行适配。

([[UIScreen mainScreen]bounds].size.width * [UIScreen mainScreen].scale == 1125 && [[UIScreen mainScreen]bounds].size.height * [UIScreen mainScreen].scale == 2436)? YES : NO ;

如果你使用的是屏幕高度来进行适配的话,name恭喜你,你可以省掉大部分的适配逻辑。因为如果你打印了iPhone XR和iPhone XS Max 的话,就会发现他们的UIScreen.main.bounds.size都等于(375,812)。

public let IS_IPHONE_X = UIScreen.main.bounds.height == 812

二、在进行打包的时候,你可能会遇到这个错误

error: Multiple commands produce '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist':
1) Target 'OptimalLive' has copy command from '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist' to '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist'
2) Target 'OptimalLive' has copy command from '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Server/Masonry/Info.plist' to '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist'
3) Target 'OptimalLive' has process command with input '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist

解决方案:
Open target -> Build phase > Copy Bundle Resource 移除 info.plist.

如果遇到了这个错误

 library not found for -lstdc++.6
 linker command failed with exit code 1 (use -v to see invocation)

原因是Xcode 10 取消了内置支持的 libstdc++ 库,需等待某些第三方 SDK 修复。
解决方案:
1.通知第三方SDK,尽快更新适配。
2.找到未升级的Xcode9的libstdc++.6.0.9.tbd文件,加入到自己的Xcode10对应的文件夹中。
如图,随便选择一个lib库,然后showInfinder将libstdc++.6.0.9.tbd拷贝到lib文件夹内,就可以解决这个BUG了。


image.png

其他BUG目前正在查找中,欢迎分享交流。

你可能感兴趣的:(关于Xcode10适配的坑以及打包出现的BUG)