当前位置: 首页 > news >正文

轻松调试iOS应用的利器——DebugSwift

DebugSwift - 提升 iOS 应用调试体验的工具包 🚀

在开发 iOS 应用时,调试是一个不可或缺的环节,而DebugSwift正是为了优化这个过程而诞生的一个强大工具包。无论是处理故障、优化性能,还是实时监控应用状态,DebugSwift 都能提供全面的支持,帮助开发者高效地解决问题。

目录

  1. 功能特性
  2. 安装与设置
  3. 故障排查
  4. 使用示例
  5. 配置

功能特性

🌐 网络监视器

  • HTTP 监控:捕获所有请求/响应,提供详细日志记录及过滤功能。
  • WebSocket 监控:自动监控 WebSocket 连接和消息,无需配置。
  • 请求限制:设定阈值,监控和控制 API 的使用情况。
  • 智能内容:自动格式化 JSON 数据,并提供语法高亮显示。
  • 加密支持:支持 AES-256/128 数据解密,便于处理加密的 API 响应。

⚡ 性能监控

  • 实时指标:实时监控 CPU、内存和帧率等性能指标。
  • 内存泄漏检测:自动检测泄漏的 ViewControllers 和视图。
  • 线程检查:检测主线程违规,提供详细的堆栈跟踪信息。
  • 性能小工具:叠加层显示实时性能数据。

📱 应用工具

  • 崩溃报告:提供详细崩溃分析,包括截屏和堆栈跟踪。
  • 控制台日志:实时监听和过滤控制台输出。
  • 设备信息:获取应用版本、构建号、设备详细信息等。
  • APNS Tokens:便捷访问和复制推送通知 token。
  • 自定义动作:支持添加自定义调试动作和信息。

🎨 界面工具

  • 网格叠加:提供自定义颜色和透明度的视觉对齐网格。
  • 视图层级:3D 互动视图层级检查工具,帮助理解 UI 结构。
  • 触摸指示器:提供触摸互动的视觉反馈。
  • 动画控制:减缓动画速度,便于调试。
  • 视图边框:高亮显示视图边界,便于查看结构。

📁 资源工具

  • 文件浏览器:浏览应用沙盒和共享应用组容器。
  • UserDefaults:实时查看和修改应用偏好设置。
  • 钥匙串:检查钥匙串条目。
  • 数据库浏览器:检查 SQLite 和 Realm 数据库。
  • 推送通知:根据模板模拟推送通知,以进行测试。

安装与设置

🍃 使用 Swift Package Manager(推荐)

在您的Package.swift文件中添加:

dependencies:[.package(url:"https://github.com/DebugSwift/DebugSwift.git",from:"1.0.0")]

或者通过 Xcode 添加:文件>添加包依赖> 输入 URL:

https://github.com/DebugSwift/DebugSwift

🎯 使用 CocoaPods

选项 1:源分发(标准)

Podfile中添加:

pod'DebugSwift'
选项 2:XCFramework 分发(构建更快) ⚡

Podfile中添加:

pod'DebugSwift',:http=>'https://github.com/DebugSwift/DebugSwift/releases/latest/download/DebugSwift.xcframework.zip'

🍎 支持 Apple Silicon

DebugSwift 完全支持 Apple Silicon Mac,提供原生 arm64 模拟器构建,无需架构排除或兼容性问题。

基本设置

在您的 AppDelegate 中初始化 DebugSwift:

importDebugSwift@mainclassAppDelegate:UIResponder,UIApplicationDelegate{privateletdebugSwift=DebugSwift()funcapplication(_application:UIApplication,didFinishLaunchingWithOptions launchOptions:[UIApplication.LaunchOptionsKey:Any]?)->Bool{#ifDEBUGdebugSwift.setup()// debugSwift.setup(disable: [.leaksDetector])debugSwift.show()#endifreturntrue}}

摇动切换(可选)

extensionUIWindow{openoverridefuncmotionEnded(_motion:UIEvent.EventSubtype,with event:UIEvent?){super.motionEnded(motion,with:event)#ifDEBUGifmotion==.motionShake{ifletappDelegate=UIApplication.shared.delegateas?AppDelegate{appDelegate.debugSwift.toggle()}}#endif}}

故障排查

Apple Silicon 构建问题

如果在 Apple Silicon Mac 上遇到error unsupported Swift architectureDebugSwift.framework only contains x86_64 slice for simulator的构建错误:

  1. 解决方案 1:更新到最新版本

确保您使用的是最新版本的 DebugSwift,该版本已包括 Apple Silicon 支持。

pod'DebugSwift','~> 1.8.1'
  1. 解决方案 2:使用 XCFramework 分发(推荐)
pod'DebugSwift',:http=>'https://github.com/DebugSwift/DebugSwift/releases/latest/download/DebugSwift.xcframework.zip'
  1. 解决方案 3:移除架构排除设置

如果您在项目中有自定义的架构排除设置,请将其移除。

  1. 解决方案 4:清理构建

在 Xcode 中选择:Product → Clean Build Folder (⌘⇧K)

使用示例

增强的层级树(Beta)

利用 iOS 层级树的视觉信息来发现应用中复杂的布局和元素关系。

使用方法

只需按住圆形按钮,即可查看快照和层级的综合概述。

结果展示

自定义调试动作

通过以下示例添加自定义调试动作:

DebugSwift.App.shared.customAction={[.init(title:"Development Tools",actions:[.init(title:"Clear User Data"){UserDefaults.standard.removeObject(forKey:"userData")},.init(title:"Reset App State"){// 这里放置您的重置逻辑}])]}

配置网络过滤

您可以配置 DebugSwift 监控的网络请求:

DebugSwift.Network.shared.ignoredURLs=["https://analytics.com"]DebugSwift.Network.shared.onlyURLs=["https://api.myapp.com"]

配置

网络加密/解密

DebugSwift 支持自动解密加密的 API 响应,方便调试启用端到端加密的应用。

DebugSwift.Network.shared.setDecryptionEnabled(true)ifletkey="your-32-byte-aes-key-here-123456".data(using:.utf8){DebugSwift.Network.shared.registerDecryptionKey(for:"api.example.com",key:key)}

Beta 特性

要启用实验性特性(如 SwiftUI 渲染跟踪),需在设置中显式启用。

debugSwift.setup(enableBetaFeatures:[.swiftUIRenderTracking])

DebugSwift 是一个集成多种调试功能于一体的强大工具,极大地提升了 iOS 应用的调试效率,可以帮助开发者快速解决问题,提升用户体验。与其类似的项目还包括:

  • InAppViewDebugger:主要用于查看iOS应用的视图层次结构。
  • CocoaDebug:提供网络请求监控、内存使用检查等功能,适合调试和性能分析。
  • DBDebugToolkit:包括自卫生内存泄漏检测、网络监控和崩溃分析等。

DebugSwift 以其全面的功能和易于使用的界面,使调试 iOS 应用变得更加简单高效,成为开发者的绝佳助手。

http://www.jsqmd.com/news/391892/

相关文章:

  • 从零开始:利用Python逆向分析Naver视频流并实现自动化下载
  • Python 微信小程序的校园招聘求职系统
  • 电子世界的奇妙冒险:09 振荡器与定时器:电路的“心脏起搏器”
  • Python 微信小程序的校园新闻发布系统
  • Python 微信小程序的易农产品商城多商家小程序
  • axure: axure11的macos版本汉化
  • 盒马鲜生礼品卡,使用与回收全攻略 - 京顺回收
  • Python 微信小程序的新能源电动汽车租赁管理系统
  • Python 微信小程序的医院挂号系统
  • Python 微信小程序的房屋租赁交易租房平台
  • 260212
  • Python flask基于微信小程序的理财产品投资系统
  • 【论文阅读】LoRA: Low-Rank Adaptation of Large Language Models深度解析:原理、实战与踩坑记录
  • Python flask基于微信小程序的旅游景点移动自助导游系统
  • 出MATLAB代码示例:垂直泊车路径规划及回旋曲线优化实现
  • 基于asp.net的学生选课退选信息管理系统设计与实现vue
  • Python 微信小程序的公益捐赠拍卖平台小程序
  • 基于ASP.NET的社区流动人口户籍迁入迁出管理系统的设计与实现vue
  • Python flask基于微信小程序的医保行政执法案件管理系统
  • Python 微信小程序的二手书交易平台
  • 基于 ASP.NET的教材管理信息系统 可视化vue
  • Python 微信小程序的公益扶贫捐赠系统
  • RedLock:分布式锁的设计争议与实战踩坑
  • Real-World Use Cases - How Organizations Use Excel to JSON - 详解
  • 永辉超市购物卡变现小窍门:高价回收平台推荐 - 团团收购物卡回收
  • Java小白的互联网大厂面试实战:从Spring到微服务
  • 如何快速回收永辉超市购物卡并安全变现?最全攻略指南! - 团团收购物卡回收
  • comsol电缆温度场仿真,电缆载流量仿真 单芯电力电缆/海底电缆载流量COMSOL仿真
  • 微信小应用网络请求 wx.request 详解
  • 定义D2Q9模型的权重和速度向量