一、前言
Xcode 13 包括適用于 iOS 15、iPadOS 15、tvOS 15、watchOS 8 和 macOS Big Sur 11.3 的 SDK。
Xcode 13 Release Candidate 支持 iOS 9 及更高版本、tvOS 9 及更高版本以及 watchOS 2 及更高版本的設備上調(diào)試。
Xcode 13 需要運行 macOS 11.3 或更高版本的 Mac。
參考資料
二、通用
- Xcode 13 包括對 Swift 并發(fā)編程的原生支持、對 Xcode Cloud 持續(xù)集成和交付的支持、對 Git 拉取請求的集成支持、使用 DocC 在 Swift 框架中創(chuàng)建和查看文檔的能力、Vim 鍵綁定支持、Swift 包集合;
- 可以在命令行上使用 cktool 與 CloudKit 數(shù)據(jù)庫架構(gòu)和記錄進行交互;
- 可以在命令行上使用 TextureConverter 將紋理壓縮為所有 Metal 壓縮紋理格式;
- 對于相同的內(nèi)容,Xcode 13 的 XIP 存檔現(xiàn)在大約小 15%。
三、Clang 編譯器
- 為了支持新的 Swift 并發(fā)模型,clang 現(xiàn)在可以在您多次調(diào)用完成處理程序或執(zhí)行路徑?jīng)]有完成處理程序調(diào)用時發(fā)出警告;
- 新的 -fobjc-constant-literals 標志允許您聲明全局常量文字,并對其在 Objective-C 代碼中支持的其他文字執(zhí)行優(yōu)化;
- 可以在 Xcode 的構(gòu)建設置中配置 C++20 和 GNU++20 C++;
- 支持 C++20 似然屬性 [[likely]] 和 [[unlikely]]。
四、資產(chǎn)目錄
- 應用程序現(xiàn)在可以使用其資產(chǎn)目錄中的 iOS 應用程序圖標資產(chǎn)作為備用應用程序圖標;
- 允許選擇適用于所有平臺(包括 watchOS)的通用系統(tǒng)顏色。
五、構(gòu)建系統(tǒng)
- .xcconfig 文件現(xiàn)在支持使用 \ 跨多行拆分長列表;
HEADER_SEARCH_PATHS = $(SRCROOT)/include \
$(SRCROOT)/include/component1 \
$(SRCROOT)/include/component2
- 當使用 -xcconfig 命令行標志和 XCODE_XCCONFIG_FILE 環(huán)境變量將 xcconfig 文件傳遞給 xcodebuild 時,Xcode 會使用 New Build System 語義解析它們,該語義也支持條件參數(shù);
- 通過將 SUPPORTED_PLATFORMS 構(gòu)建設置設置為您支持的平臺列表并將 ALLOW_TARGET_PLATFORM_SPECIALIZATION 設置為 YES,將框架配置為在單個構(gòu)建操作中為多個平臺構(gòu)建;
- 可以在構(gòu)建階段使用平臺過濾器,并為所有支持的平臺定位依賴項;
當發(fā)生構(gòu)建失敗時,xcodebuild 現(xiàn)在會在構(gòu)建日志末尾的摘要中顯示每個失敗命令的目標和項目名稱; - 當腳本階段或自定義構(gòu)建規(guī)則聲明不屬于構(gòu)建輸入的一部分,且未聲明為構(gòu)建中任何其他任務的輸出依賴項的輸入依賴項時,構(gòu)建系統(tǒng)會發(fā)出警告;
- 構(gòu)建選項表現(xiàn)在包括一個依賴順序選項,它取代了并行構(gòu)建選項。
六、Core Data
- 使用 Core Data 模型編輯器的屬性檢查器中的 Allows Cloud Encryption 復選框來支持 CloudKit 加密記錄字段功能。
七、Core ML
- Xcode 的 Core ML 模型編輯器現(xiàn)在支持新的 Core ML 包格式 .mlpackage,以及對其元數(shù)據(jù)和描述的直接編輯;
- 當部署目標是 macOS 12、iOS 15、tvOS 15 或 watchOS 8 時,Swift 為 Core ML 模型生成的接口現(xiàn)在包括通過強類型 MLShapedArray 屬性訪問多維輸入和輸出。
八、Create ML
- 兩個新模板:Hand Pose Classification 和 Hand Action Classification,可用于訓練模型來解釋手部姿勢;
- Sound Classification 模板的新 Audio Feature Print 選項能夠以更高的準確度、更低的延遲和更小的模型尺寸更快地訓練聲音分類器模型。
九、調(diào)試
- Xcode 的控制臺現(xiàn)在支持通過 Editor > Wrap Lines 菜單項切換換行;
要在一行上設置列斷點,請按住 Command 鍵并單擊表達式,然后從 Actions 菜單中選擇 Set Column Breakpoint; - 如果調(diào)試器尚未解析斷點,則斷點的圖標將更改為占位符字形。
十、文檔
- Xcode 可以根據(jù) Swift 代碼中的注釋以及隨附的文章生成文檔;
- 當編寫項目文檔時,Code completion 會提供建議。它在源文件中編寫文檔注釋和在 .docc 目錄中編寫標記文件時提供建議;
- Quick Help 現(xiàn)在使用 DocC 來呈現(xiàn)項目文檔并在文檔窗口中呈現(xiàn)指向項目文檔的鏈接。
十一、索引
- Xcode 索引宏名稱,它們現(xiàn)在出現(xiàn)在 Open Quickly 中。
十二、Instruments
- Instruments 中的調(diào)用樹視圖和擴展詳細信息視圖現(xiàn)在用“[inlined]”標記指示內(nèi)聯(lián)函數(shù);
- 通過詳細視圖導航欄更容易發(fā)現(xiàn)不同的視圖?,F(xiàn)在可以通過快捷方式(Command-1、Command-2 等)訪問詳細視圖;
- 在命令行上使用 xctrace export 從包含Allocations, Leaks, 和 VM Tracker instruments 的跟蹤中導出表數(shù)據(jù);
- Instruments 擴展詳細信息視圖,現(xiàn)在在選擇關(guān)聯(lián)的詳細信息視圖行時顯示 os_log 和 os_signpost 消息和回溯;
- Run Information 視圖現(xiàn)在出現(xiàn)在 Instruments 工具欄的活動視圖區(qū)域中;
CPU Counters 模板現(xiàn)在更加可靠并且具有更好的性能; - leaks 命令具有三種新模式:-referenceTree、-autoreleasePools和 -debug;
- Network 模板現(xiàn)在包含一個用于捕獲和分析 HTTP 流量的新工具;
- Instruments 時間線視圖現(xiàn)在使用基于 Metal 的渲染器以獲得更流暢的體驗,包括對時間線可用性的整體改進;
- os_signpost 工具的記錄設置現(xiàn)在支持在記錄期間為 dynamicTracing 和 dynamicStackTracing 日志記錄類別指定 os_signpost 子系統(tǒng);
- 新的 CPU Profiler 模板允許使用基于周期的性能監(jiān)控中斷 (PMI) 分析 CPU 工作負載;
- 為了支持在 macOS Monterey 和 iOS 15 中生成的新 JSON 格式的崩潰日志,Instruments 包含了一個新的 CrashSymbolicator.py 腳本。
十三、Interface Builder
- 現(xiàn)在可以在大綱視圖中手動重新排序 Storyboard 場景;
- macOS 的 Storyboard 和 XIB 使用 UINIbEncoder 進行編譯,以減少文件大小并提高運行時性能;
- 現(xiàn)在可以使用鍵盤選擇和導航大綱視圖組,例如 Constraints;
- Interface Builder 有一個重新設計的畫布底部欄,帶有用于更改設備和布局的彈出窗口,以及用于更改設備外觀和方向的開關(guān);
- 添加了對 UIButton 和 UIBarButtonItem 上的 changesSelectionAsPrimaryAction 屬性的支持;
- 支持從對象庫中創(chuàng)作和拖動 iOS Core Location Buttons;
- 添加了對用于靜態(tài)表格視圖中表格視圖單元格的新內(nèi)容配置樣式的支持;
- UITabBar 和 UIToolbar 檢查器現(xiàn)在支持配置 scrollEdgeAppearance;
- Interface Builder 現(xiàn)在支持 UIButton.menu;
- 編輯啟動 storyboards 時,如果總圖像資源大小超過運行時閾值限制,Xcode 會發(fā)出設計時警告;
- Watch Storyboards 的預覽窗格現(xiàn)在顯示畫布樣式的邊;
- 現(xiàn)在可以在 Interface Builder 場景中預覽以下輔助功能設置:動態(tài)類型、粗體文本、按鈕形狀、開/關(guān)標簽、增加對比度和降低透明度;
- 現(xiàn)在可以啟用 UILabel 的 showsExpansionTextWhenTruncated 屬性以在標簽被截斷時顯示工具提示擴展;
- 從文檔檢查器 > 模擬指標 > 場景大小自定義 Mac Catalyst 模擬場景大??;
- 通過屬性檢查器為使用 Mac Catalyst 構(gòu)建的應用程序指定 UIControl 對象上的工具提示;
- Interface Builder 現(xiàn)在支持 UIBarButtonItem.menu;
十四、鏈接
- dyld 共享緩存已拆分為多個文件;
- 使用 macOS 12 或 iOS 15 或更高版本的部署目標構(gòu)建的所有程序和 dylib 現(xiàn)在都使用鏈式修復格式;
- 統(tǒng)一 dyld2 和 dyld3?,F(xiàn)在所有平臺上只有一個 dyld;
- DriverKit 運行時現(xiàn)在有一個 dyld 共享緩存;
- 如果 DYLD_PRINT_SEARCHING 環(huán)境變量在啟動時設置為 1,則 dyld 會打印出它搜索的所有位置的路徑,以找到要加載的 dylib;
十五、本地化
- Xcode 現(xiàn)在可以打開 Xcode 本地化目錄 (.xcloc) 以查看和編輯字符串和其他本地化資產(chǎn)的翻譯;
- 新的 Use Compiler to Extract Swift Strings 構(gòu)建設置調(diào)用 Swift 編譯器從 Text()、String(localized:)、AttributedString(localized:) 初始值設定項、SwiftUI 的 LocalizedStringKey 和 Foundation 的 StringLocalizationKey
添加了對 genstrings 和本地化導入和導出的支持,以提取在 Objective-C 代碼中使用新 NSLocalizedAttributedString 宏的字符串; - 導出本地化時,多個本地化中的錯誤現(xiàn)在會聚合到一個警報對話框中;
在導出以進行本地化時,Xcode 會自動從 Info.plist 文件中提取 NSGKFriendListUsageDescription、NSLocationTemporaryUsageDescriptionDictionary 和 NSFallDetectionUsageDescription
十六、Metal
- Metal Debugger 現(xiàn)在支持 Selective Shader Debugging,它允許您限制大型 Compute 著色器的調(diào)試范圍,這導致更快的著色器調(diào)試器會話創(chuàng)建和迭代時間;
- Metal Debugger 中的新捕獲控件可讓您精確控制來決定捕獲 Metal 工作負載的哪個部分,以及捕獲多個幀或范圍的選項;
- Metal Debugger 現(xiàn)在支持導入 metallibsym 文件,這使您可以在應用程序中進行 Metal 著色器調(diào)試和分析,而無需在您的 metallib 中嵌入著色器源;
- Metal Debugger 中的 Apple GPU 可以使用 GPU 時間線,使用此時間線可視化和檢查 Metal GPU 命令的并行執(zhí)行以及一組精選的 GPU 計數(shù)器;
- 現(xiàn)在可以在 Metal System Trace 模板的記錄選項中覆蓋 GPU 性能狀態(tài);
- Metal Debugger 現(xiàn)在支持 Metal 光線追蹤以及新的高級加速結(jié)構(gòu)查看器;
- Metal 應用程序錄制設置現(xiàn)在特定于正在配置的設備。
十七、Organizer
- Xcode 現(xiàn)在可以近乎實時地提供崩潰報告,數(shù)據(jù)保留時間更長;
- Xcode 現(xiàn)在提供具有更多過濾功能和更多統(tǒng)計信息的崩潰報告;
- 現(xiàn)在可以通過 URL 共享崩潰報告;
- Xcode 現(xiàn)在會顯示您的崩潰問題的 TestFlight 反饋,以便更好地了解問題所在;
- 現(xiàn)在可以根據(jù)任何特定的歷史應用程序版本、任何特定的歷史應用程序版本、產(chǎn)品類型(如 App Clip、應用程序擴展或主應用程序)以及 TestFlight 或 App Store 的發(fā)布歷史記錄過濾 Energy 報告列表;
- Xcode Organizer 中的新 Scroll Hitch Goals 使分析應用程序版本的滾動體驗變得容易;
- 當查看應用的指標時,現(xiàn)在可以選擇查看應用的 App Clip 的指標;
十八、預覽
- 預覽現(xiàn)在支持在預覽視圖時檢查視圖的輔助功能元素。
十九、Project Navigator
- 當 Products 組位于默認位置時,項目導航器會隱藏它;
- Move Focus to Editor 命令現(xiàn)在解釋 vim 方向移動鍵;
- schema 編輯表不再有最大尺寸。
二十、簽名和分發(fā)
- xcodebuild 現(xiàn)在支持使用 App Store Connect API 密鑰對 Apple Developer 網(wǎng)站進行身份驗證;
- Xcode 現(xiàn)在提供在您第一次將新應用上傳到 App Store Connect 時創(chuàng)建應用記錄的功能;
- Xcode 分發(fā)助手中的自動簽名現(xiàn)在支持云簽名;
- Xcode 13 支持在 Mac 上為 TestFlight 配置應用程序;
- 現(xiàn)在可以在命令行上使用 notarytool 與 Apple 公證服務進行交互;
二十一、Source Control
- 現(xiàn)在,可以在登錄 GitHub 或 Bitbucket Server 帳戶后,使用 Xcode 的源代碼控制功能創(chuàng)建、審查和合并拉取請求;
- 現(xiàn)在可以從文檔選項卡欄中的任何編輯器(或編輯器拆分)中啟用代碼審查,默認情況下它會在內(nèi)嵌演示中顯示比較。
二十二、源碼編輯器
- Xcode 13 引入了 Vim 鍵綁定,在源代碼編輯器中模擬 vim 體驗并結(jié)合現(xiàn)有的編輯器功能;
- 在首選項中啟用 Vim 鍵綁定,使用文本編輯 > 編輯中的啟用 Vim 鍵綁定選項;
- 可以通過選擇 Edit > Copy Location 以 : 的形式將所選內(nèi)容的當前位置復制到剪貼板;
- 在 Swift 中將占位符擴展為閉包時,代碼完成使用閉包的參數(shù)名稱而不是 <#Type#>;
- 從 Swift 類、協(xié)議或方法聲明跳轉(zhuǎn)到定義還可以輕松導航到整個工作區(qū)中的所有子類、擴展和符合協(xié)議的類型;
二十三、Static Analyzer
- 靜態(tài)分析器現(xiàn)在警告帶有副作用的斷言、無限循環(huán)和更多 C++11 std::move 誤用情況。
二十四、StoreKit
- Xcode 中的 StoreKit 測試支持對使用 StoreKit 新的現(xiàn)代基于 Swift 的 API 構(gòu)建的應用內(nèi)購買進行全面測試。
二十五、Swift Packages
- 根包和基于分支的包依賴項現(xiàn)在可以在其目標設置中使用 unsafeFlags;
- Swift 包現(xiàn)在可以聲明 Mac Catalyst 的部署目標,并且現(xiàn)在可以在構(gòu)建條件中將 Mac Catalyst 指定為平臺;
- 當包聲明工具版本為 5.5 或更高版本時,macOS 的構(gòu)建條件不再適用于 Mac Catalyst;
- Swift Packages 現(xiàn)在支持 DriverKit 作為平臺;
- 當嘗試導入本地尚不可用的模塊時,Xcode 現(xiàn)在會建議添加的集合中的包;
- 現(xiàn)在可以在 Add Packages 表中添加精選的包集合;
- 單元測試現(xiàn)在可以直接測試可執(zhí)行目標。
二十六、Swift 重構(gòu)
- 新的重構(gòu)有助于遷移到異步代碼?!癈onvert Call to Async Alternative”可用于將完成處理程序作為最后一個參數(shù)的調(diào)用,并重構(gòu)它們以使用新的異步語言功能,假設該函數(shù)的異步等效項已經(jīng)存在;
- 現(xiàn)在可以將新的 Add Async Wrapper 重構(gòu)操作應用于具有完成處理程序的函數(shù)。
二十七、測試
- XCTestCase 現(xiàn)在包含一個 addTeardownBlock 方法重載,其閉包參數(shù)是 async throws;
- xcodebuild 現(xiàn)在支持將某些環(huán)境變量傳遞給測試運行器進程;
- XCTExpectFailure 函數(shù)現(xiàn)在包括用于自定義某些選項的 Swift 重載,而無需創(chuàng)建 XCTExpectedFailure.Options 實例;
- XCTest 現(xiàn)在能夠在 watchOS UI 測試中合成 Digital Crown 旋轉(zhuǎn);
- XCTest 現(xiàn)在包括 setUp 和 tearDown 實例方法的異步拋出重載;
- 測試現(xiàn)在可以從任何線程調(diào)用 XCTestCase.expectation(description:),以及其他返回 XCTestExpectation 的 XCTestCase API,這消除了之前測試從主線程調(diào)用這些 API 的要求,并允許使用它們的現(xiàn)有測試采用異步,而無需 @MainActor。
二十八、App Store
- StoreKit 2 引入了一個現(xiàn)代的基于 Swift 的 API,它利用了新的語言功能,如 Swift 并發(fā)性。使用這個 API 加載產(chǎn)品信息、在您的商店中顯示應用內(nèi)購買、允許客戶進行購買、管理對內(nèi)容和訂閱的訪問以及接收由 App Store 以 JSON Web 簽名 (JWS) 格式簽署的交易信息。
- 現(xiàn)在可以訪問 Product 原始 JSON 數(shù)據(jù)以進行自定義解碼。
- Transaction 上現(xiàn)在提供了一個新的類型屬性 unfinished,該屬性返回應用程序仍需要向用戶提供內(nèi)容的任何交易的簽名信息。
二十九、Audio Units
- Audio Units 現(xiàn)在提供 Audio Unit host 可以在 iOS 中顯示的自定義視圖。
- 使用 provideUserInterface 屬性來確定 AUAudioUnit 是否具有用戶界面。
- 使用 requestViewController(completionHandler:) 方法獲取視圖的 AUViewController。
- 自定義視圖支持通過 tintColor 屬性設置視圖的色調(diào)顏色。這可用于將視圖的顏色設置為每個軌道的不同顏色或匹配應用程序的外觀。
三十、AVFoundation
- iPadOS 應用程序現(xiàn)在可以繼續(xù)使用相機,同時呈現(xiàn)多個窗口并成為屏幕上唯一的應用程序。
三十一、Core Haptics
- 如果暫停的 CHHapticAdvancedPatternPlayer 恢復,則 CHHapticEventTypeAudioContinuous、CHHapticEventTypeHapticContinuous 和 CHHapticEventTypeAudioCustom 類型的事件現(xiàn)在恢復播放中間事件。
- 現(xiàn)在可以控制是否將 volume envelope 應用于類型資源。默認情況下,這些資源使用內(nèi)置的音量 envelope 進行播放,該 envelope 在開始時將信號慢慢提升并在結(jié)尾慢慢降低,以避免產(chǎn)生咔嗒聲。
三十二、Create ML
- Create ML 框架現(xiàn)已在 iOS 和 iPadOS 15 中可用,為構(gòu)建利用設備 ML 的動態(tài)應用程序體驗開辟了新的機會。提供用于圖像分類、聲音分類、文本分類以及手部姿勢和手部動作分類的以任務為中心的 API,以及用于經(jīng)典表格分類和回歸的 API。
- 基于 Audio Feature Print 的 MLSoundClassifier 算法可以更快地訓練聲音分類器模型,具有更高的準確性、更低的延遲和更小的模型尺寸。該算法現(xiàn)在是 Create ML 中 MLSoundClassifier 的默認選項。
三十三、iCloud
- iCloud Private Relay 將作為公開測試版發(fā)布,以收集更多反饋并提高網(wǎng)站兼容性。
三十四、Foundation
- Foundation 現(xiàn)在包括一個自動語法協(xié)議引擎。這可以簡化您的代碼并減少提供的本地化字符串的數(shù)量,因為它會自動對本地化字符串進行變形以說明復數(shù)、語法協(xié)議。它適用于英語和西班牙語。
- JSONSerialization 和 JSONDecoder 現(xiàn)在支持從 JSON5 解碼。
- SortDescriptor、KeyPathComparator 和 SortComparator API 提供了一個 Swift 接口來表達可歸檔的值排序規(guī)則。
三十四、Logging
- 來自 Swift 的 os_signpost(_:dso:log:name:signpostID:) 是所有平臺上框架操作系統(tǒng)的一部分
三十五、Networking
- URLSession 發(fā)送的默認 Accept-Language 標頭具有更新的格式和多個區(qū)域設置的更正值。除了首選語言之外,如果當前系統(tǒng)語言與首選語言不同,標頭還包括作為后備的當前系統(tǒng)語言。此行為會影響鏈接到 macOS 12、iOS 15、tvOS 15 和 watchOS 8 SDK 的應用程序。
- URLSession 現(xiàn)在包括異步函數(shù)。
三十六、隱私
- 要下載在應用隱私報告中顯示應用內(nèi)容的文件,可以選擇設置 > 隱私 > 記錄應用活動。
三十七、Safari
- 底部標簽欄經(jīng)過重新設計,顯示在頁面內(nèi)容下方。還可以選擇在頂部顯示地址欄。
三十八、SKAdNetwork
- 如果開發(fā)者選擇接收 winning postback,設備現(xiàn)在可以將 winning postback 的副本發(fā)送給廣告應用的開發(fā)者。
三十九、TabularData
- TabularData 是一個新的 Swift 框架,用于分析和操作表格數(shù)據(jù)。您可以使用 DataFrame 讀取 CSV 和 JSON 文件,以及連接、分組和聚合數(shù)據(jù)
四十、UIKit
- 對于針對 iOS 15 beta SDK 編譯的應用程序,在文本視圖和文本字段中鍵入時,按鍵命令不再攔截文本輸入和文本編輯命令。例如,按下 Delete 鍵始終會刪除一個字符,并且不會觸發(fā) Delete 鍵命令(如果存在)。要讓鍵盤命令攔截文本輸入,請將鍵盤命令上的 WantPriorityOverSystemBehavior 屬性設置為 true。這也需要鍵盤命令優(yōu)先于焦點鍵盤導航命令,例如箭頭和 Tab 鍵按下。
- 在 iOS 14 和 iPadOS 14 及更早版本中,當 autocorrectionType 設置為 UITextAutocorrectionTypeNo 時,QuickType 欄將被禁用。對于與 iOS 15 和 iPadOS 15 或更高版本鏈接的應用程序,QuickType 欄已啟用并顯示拼寫檢查候選。如果新行為不適合您的用例,請將 spellCheckingType 設置為 UITextSpellCheckingTypeNo 以隱藏 QuickType 欄。
- 使用 iOS 15 beta SDK 進行編譯時,幾個與窗口相關(guān)的關(guān)鍵屬性、方法和通知會更改行為。
參考資料
github.com/uzi-yyds-co…[3]
[1]
github.com/uzi-yyds-co…: https://github.com/uzi-yyds-code
[2]
地址: https://blog.csdn.net/Forever_wj
[3]
github.com/uzi-yyds-co…: https://github.com/uzi-yyds-code