繁体   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