5 分钟快速上手 JSDebugger:CocoaPods 集成与第一个调试脚本全流程

发布时间:2026/8/18 16:36:45
5 分钟快速上手 JSDebugger:CocoaPods 集成与第一个调试脚本全流程 5 分钟快速上手 JSDebuggerCocoaPods 集成与第一个调试脚本全流程【免费下载链接】JSDebuggerJavaScript-Based Debugger For Inspecting Running State Of Your Application项目地址: https://gitcode.com/gh_mirrors/js/JSDebuggerJSDebugger是一款基于 JavaScript 的 iOS 运行时调试工具让你无需重新编译 App就能直接调用任意 Objective-C 方法、读写属性、遍历堆上对象实时查看和修改应用的运行状态。对于 iOS 开发者来说它是排查线上疑难问题、动态验证逻辑的终极利器。本篇文章将带你用 5 分钟完成 CocoaPods 集成并跑通第一个调试脚本。JSDebugger 到底是什么简单说JSDebugger 在 App 内部内置了一个 JavaScript 引擎基于 JavaScriptCore并把你的 Objective-C 类、对象、方法、属性、结构体、指针等统统暴露给了 JS 环境。你只要写几行 JavaScript就能像操作普通 JS 对象一样操作原生对象调用任意类方法和实例方法无需手动定义 JSExport 协议读取和修改实例属性含自定义 Setter使用choose()插件查找堆上任意类的所有实例支持可变参数、C 指针、结构体、关联对象Associate Object配合文件监听器实现改完即生效的 Playground 热调试这让 JSDebugger 成为 iOS 动态调试和运行时检查的高效方案尤其适合快速验证 UI 状态、检查网络数据层对象内容等场景。第一步通过 CocoaPods 集成 JSDebuggerJSDebugger 支持 CocoaPods 集成最快配置方法如下。在你的项目根目录创建或编辑Podfile加入如下内容参考项目中的 Podfileplatform :ios, 9.0 target 你的Target名 do pod JSDebugger, :path JSDebugger所在路径 end然后执行安装命令pod install安装完成后打开生成的.xcworkspace在需要使用的地方引入头文件#import JSDebugger/JSDebugger.hJSDebugger 对外公开的核心头文件只有两个JDEngine.h调试引擎和 JDLocalFileObserver.h本地文件监听API 非常精简。第二步启动调试引擎在 App 启动时初始化并启动 JSDebugger 引擎即可。比如在AppDelegate或你的ViewController中[[JDEngine engine] start];启动之后引擎就绪随时可以执行 JS 脚本。第三步运行你的第一个调试脚本JSDebugger 提供了两种执行脚本的方式evaluateScript:—— 直接传入 JS 字符串evaluateScriptAtPath:—— 从文件路径加载并执行 JS 文件在 Demo 工程中见 ViewController.mviewDidAppear里会加载打包进 App 的 demo.js[[JDEngine engine] evaluateScriptAtPath:[[NSBundle mainBundle] pathForResource:demo ofType:js]];而 demo.js 的内容就是你的第一个调试脚本它演示了 JSDebugger 的核心能力。调用 Objective-C 方法在 JS 中调用 OC 方法时方法名需要做一点转换所有冒号换成下划线selector 的各段拼接成单个字符串。例如var view UIView.alloc().init(); view.setBackgroundColor_(UIColor.redColor());创建UIView实例并直接调用setBackgroundColor:底层自动完成了 Objective-C 方法到 JS 的桥接。可变参数调用JSDebugger 支持以 NIL 结尾的可变参数var array NSArray.arrayWithObjects_(1, 2, 3);也可以调用你自己定义的可变参数方法Demo 中的 ViewController.m 演示了 test:...的实现ViewController.test_(1, 2, 3, 5, 7);属性读写注意 Getter 的用法属性赋值用点语法读取则必须使用方法形式这是新手最容易踩的坑view.backgroundColor UIColor.redColor(); // Setter正确 var color view.backgroundColor(); // Getter必须带括号正确 var bounds view.bounds(); // 方法形式正确 view.backgroundColor; // 错误Getter 不支持点语法使用 choose() 查找堆上对象choose()是 JSDebugger 内置插件实现见 JDChoose.mm可以精确按类名搜索堆上所有实例并返回数组var vc choose(ViewController)[0]; vc.printName_(Hello JSDebugger);比如你可以在运行时找到当前屏幕上某个ViewController直接读取它的view、修改背景色实时看到效果。结构体当作普通 JS 对象JSDebugger 把结构体当作普通 JS 对象处理读写都很直观var frame vc.view().frame(); frame.origin.x 100; vc.view().frame frame; label.frame {origin:{x:0, y:10}, size:{width:200, height:100}};C 指针与关联对象Demo 脚本还演示了 C 指针传参与关联对象读写对应 TestAssociateObjectvar intP vc.allocAddressWithInt(); vc.testIntPointer_(intP); var aso TestAssociateObject.alloc().init(); vc.associateObject aso; aso.associateInt 5;第四步开启 Playground 热调试模式这是 JSDebugger 最爽的功能监听 Mac 上的 JS 文件改动保存后立即生效无需重新编译运行 App。使用 JDLocalFileObserver.h 监听文件property (nonatomic, strong) JDLocalFileObserver *fileWatcher;NSString *jsFilePath 你的test.js路径; self.fileWatcher [[JDLocalFileObserver alloc] initWithFilePath:jsFilePath changeBlock:^{ dispatch_async(dispatch_get_main_queue(), ^{ [[JDEngine engine] evaluateScriptAtPath:jsFilePath]; }); }]; [self.fileWatcher start];之后每次修改test.js并保存Command SJSDebugger 就会自动重新加载并执行脚本调试体验接近实时。提醒不需要监听时记得调用[self.fileWatcher stop]停止监听。常见问题速查Q1为什么方法调用报错检查方法名是否已把冒号全部替换为下划线并拼接成单字符串例如didFinishLaunchingWithOptions:要写成didFinishLaunchingWithOptions_。Q2为什么读取属性得到 undefinedJSDebugger 的 Getter 必须使用方法调用形式view.backgroundColor()不要用点语法。Q3想修改工程中的 UI 状态怎么办用choose(类名)[0]拿到实例然后通过 Setter 或方法直接修改实时生效。总结通过 CocoaPods 集成 JSDebugger 只需三步写 Podfile 安装、[[JDEngine engine] start]启动、加载 JS 脚本。配合 Playground 文件监听你就能在运行中的 App 里自由调用 Objective-C 方法、读写属性、搜索对象真正做到随时检查、动态修改。还等什么打开你的工程5 分钟跑通第一个调试脚本吧【免费下载链接】JSDebuggerJavaScript-Based Debugger For Inspecting Running State Of Your Application项目地址: https://gitcode.com/gh_mirrors/js/JSDebugger创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考