Xcode 10、iOS 12、iPhone X系列的適配與總結
1、libstdc++相關的3個庫(libstdc++、libstdc++.6、libstdc++.6.0.9)在XCode10和iOS12中被移除
錯誤描述: ld: library not found for -lstdc++.6.0.9 linker command failed with exit code 1(use -v to see invocation)
解決辦法一:刪除libstdc++,編譯無錯則不用適配,否則參考方法二
解決辦法二:拷貝缺失的libstdc++
從XCode 9的目錄裡,把缺失的.tbd檔案拷貝過來,要記得拷貝2套,一套是模擬器的,一套是真機的,檔案路徑如下:
真機:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib 模擬器:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib
2、與第三方的info.plist檔案衝突
錯誤描述: Showing Recent Messages :-1: Multiple commands produce '/Users/wzm/Library/Developer/Xcode/DerivedData/MMC_SchoolShip-clbdywlcrnuhghgjrqctfnobowcr/Build/Products/Debug-iphoneos/MMC_SchoolShip.app/Info.plist': 1) Target 'MMC_SchoolShip' (project 'MMC_SchoolShip') has copy command from '/Users/wzm/Documents/MMC_SchoolShip/MMC_SchoolShip/MMVC/SCHChat/Vender/MJExtension/Info.plist' to '/Users/wzm/Library/Developer/Xcode/DerivedData/MMC_SchoolShip-clbdywlcrnuhghgjrqctfnobowcr/Build/Products/Debug-iphoneos/MMC_SchoolShip.app/Info.plist' 2) Target 'MMC_SchoolShip' (project 'MMC_SchoolShip') has copy command from '/Users/wzm/Documents/MMC_SchoolShip/MMC_SchoolShip/MMVC/SCHChat/Vender/Masonry/Info.plist' to '/Users/wzm/Library/Developer/Xcode/DerivedData/MMC_SchoolShip-clbdywlcrnuhghgjrqctfnobowcr/Build/Products/Debug-iphoneos/MMC_SchoolShip.app/Info.plist' 3) Target 'MMC_SchoolShip' (project 'MMC_SchoolShip') has process command with output '/Users/wzm/Library/Developer/Xcode/DerivedData/MMC_SchoolShip-clbdywlcrnuhghgjrqctfnobowcr/Build/Products/Debug-iphoneos/MMC_SchoolShip.app/Info.plist'
解決辦法一:將第三方的info.plist刪除
解決辦法二:將第三方的info.plist檔案重新命名且保持唯一
解決辦法三:如以上方法出錯,參考下圖設定Xcode

第一步

第二步
3、專案圖示和啟動圖的調整
ofollow,noindex">Xcode 10如何合理的設定『專案圖示』和『啟動圖』
推薦一款快速生成專案圖示的工具: APRO
App Store內搜尋下載或 點選下載連結
將生成的圖片和Contents.json檔案全部拖到對應的資料夾下,即可自動替換。
4、新版螢幕適配
#define IS_iPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) #define SCREEN_SCALE[UIScreen mainScreen].scale #define SCREEN_HEIGHT[UIScreen mainScreen].bounds.size.height #define iPhoneX(IS_iPhone && SCREEN_HEIGHT>=812)//iPhoneX系列 #define iPhone_5_8 (IS_iPhone && SCREEN_HEIGHT==812)//5.8寸 #define iPhone_6_1 (IS_iPhone && SCREEN_HEIGHT==896 && SCREEN_SCALE==2.0)//6.1寸 #define iPhone_6_5 (IS_iPhone && SCREEN_HEIGHT==896 && SCREEN_SCALE==3.0)//6.5寸