簡體   English   中英

如何在 Xcode 12 中調試 iOS 14 小部件?

[英]How to debug iOS 14 widget in Xcode 12?

我正在開發一個 iOS 14 小部件,我想要我現有的 iOS 11+ 應用程序。 整個過程非常繁瑣,因為經常發生某些事情沒有按預期工作。

例如,小部件顯示意外數據,或未按預期呈現(例如,如此處所述)。 我認為當系統從我的應用程序擴展請求小部件及其內容時出現問題。 但是我無法弄清楚這可能是什么。

有沒有辦法實際調試小部件擴展? 查看代碼何時執行以及它是如何工作的?

我已經嘗試將調試器連接到小部件擴展(使用 Xcode 中的Debug/Attach to process菜單)。 當進程在那里列出時,調試器沒有顯示日志輸出,也沒有在斷點處停止。

使用系統控制台顯示 iOS 模擬器設備的日志也不起作用。 使用print(...)還是NSLog(...)並不重要。 沒有輸出到達控制台。

這里似乎是 Xcode 錯誤。 快速修復對我有用的是通過 cmd + shift + y 手動打開日志控制台。 並添加斷點。 然后運行小部件查看日志。

由於我沒有找到調試小部件擴展的其他方法,因此我編寫了一個日志記錄方法,將日志輸出添加到應用程序組文件夾的 aa 文件中:

static func logToFile(_ text: String) {        
    if let documentsDirectory = FileManager().containerURL(forSecurityApplicationGroupIdentifier: "my.app.group.key") {
        let logFileUrl = documentsDirectory.appendingPathComponent("log.txt")
        
        do {
            var logContent = try String(contentsOf: logFileUrl, encoding: .utf8)
            logContent = (logContent.count > 0 ? "\(text)\n\(logContent)" : text)
            try logContent.write(to: logFileUrl, atomically: false, encoding: .utf8)
        }
        catch {}
    }
}

不是最好的解決方案,而是我目前找到的唯一解決方案。

在 Xcode 的左上角選擇您的小部件目標,構建並運行應用程序,然后小部件進程將能夠調試和顯示日志。 (本示例項目由蘋果提供下載: https : //developer.apple.com/documentation/widgetkit/building_widgets_using_widgetkit_and_swiftui

在此處輸入圖片說明

嘗試在您的擴展程序中禁用位碼,在我這樣做之前,我很難獲取日志。

我也遇到過這個問題。 當我在 Xcode 中運行我的小部件擴展時,日志沒有顯示(或僅有時顯示)。

經過數小時的調試,為我修復它的是插入我的實際設備(iPhone 12 Pro Max)並在該物理設備而不是模擬器上運行小部件。

在Xcode的左上角->

  1. 單擊項目名稱,您可以看到一個列表,選擇小部件名稱,運行它
  2. 點擊小部件名稱,可以看到一個列表,選擇項目名稱,運行它

Xcode:版本 12.3,iPad:iPadOS 14.3
這對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM