8.7 版本发布—WinterCG 兼容性第一部分
了解更多

有多种方法可以调试应用程序中的问题,从使用console.logs的最简单形式开始。对于更复杂的问题,您可能需要使用实际的调试器,例如 Chrome DevTools、XCode 开发者工具和仪器或 Android Studio 开发者工具。

控制台

检查状态的最快方法是将值记录到控制台。NativeScript 支持控制台方法,例如loginfowarnerrortracedirtimetimeEnd

time(label: string) 方法启动一个新的计时器,并且对于测量某些操作花费的时间非常有用。要停止计时器,请使用相同的标签调用timeEnd,执行时间将打印到控制台。

ts
console.log('General message')
console.info('Informational message')
console.warn('Warning')
console.error('Error')

// also prints a stack trace to the current line
console.trace('Trace message')

// prints all members of someVariable
console.dir(someVariable)

// starts a timer
console.time('myLabel')
await someLongTask()
// ends a timer and prints elapsed time
console.timeEnd('myLabel')

其他资源

使用 Chrome DevTools 进行调试

要启动 Chrome 调试会话,请在调试模式下运行您的应用程序

cli
ns debug android|ios

ns debug 命令会在连接的设备或模拟器上构建并部署应用程序,如果您有多个设备可用,则需要从列表中选择一个,或者从ns devices传递--device <id>

应用程序启动后,一个 URL 会打印到控制台

cli
Setting up debugger proxy...
Press Ctrl + C to terminate, or disconnect.

Opened localhost 41000
To start debugging, open the following URL in Chrome:
devtools://devtools/bundled/inspector.html?ws=localhost:41000

在 Google Chrome 中访问打印的 URL(devtools://devtools/bundled/inspector.html?ws=localhost:41000)以连接到调试器会话。

您可以使用以下任何选项自定义ns debug 命令

  • --debug-brk - 在第一行 JavaScript 代码处停止执行,直到调试器前端连接或 30 秒超时。
  • --start - 将调试工具附加到已部署并正在运行的应用程序。
  • --emulator - 指定您希望在模拟器中调试应用程序。
  • --timeout - NativeScript CLI 等待调试器启动的秒数。默认为 90 秒。
  • --no-watch - 代码更改不会实时同步。
  • --clean - 强制重新构建原生应用程序。

如果您不熟悉 JavaScript 调试,我们建议您阅读Chrome 开发者提供的以下资源,以熟悉基本知识

支持的 Chrome DevTools 功能

DevTools 功能AndroidiOS
调试器
控制台
资源(源文件)
网络
元素(DOM)✅(仅查看)✅(仅查看)
元素(样式)🟠 仅计算🟠 仅计算
内存分析
时间线和 CPU 分析

使用 VS Code 进行调试

VS Code 使用与 Chrome DevTools 相同的协议,为了在 VS Code 中启动调试会话,您需要安装VS Code 的 NativeScript 扩展

注意

NativeScript 的 VS Code 扩展目前已过时,可能无法工作。我们计划尽快改进该项目并使其与所有最新功能保持同步。

使用 XCode 进行调试

如果您需要调试原生堆栈的部分而不是应用程序的 JavaScript 部分,则也可以使用 XCode 调试器以及所有 XCode Instruments 来查找应用程序中的问题,例如内存泄漏、挂起、CPU 密集型任务等。

首先,准备 iOS 应用程序

cli
ns prepare ios

这将编译您的应用程序源代码,创建platforms/ios文件夹(如果尚不存在)。您可以传递通常传递给ns run的任何标志。

接下来,在 XCode 中打开platforms/ios/<project-name>.xcworkspace,可以通过 XCode 浏览菜单或从命令行打开。

cli
open platforms/ios/<project-name>.xcworkspace

选择目标设备或模拟器,然后通过“播放”按钮运行应用程序。导航到 XCode 项目中的原生代码,并放置断点,当应用程序命中这些断点时,它将暂停执行,您将能够逐步执行原生代码。

如果发生崩溃,XCode 调试器将停止执行并打印线程转储以及应用程序崩溃的位置。在许多情况下,堆栈将指向符号标识符,例如0x1088f3960,这通常意味着有问题的代码的源代码不可用(可能是外部预编译库)。如果崩溃发生在 NativeScript 运行时本身,您可以附加运行时源代码以查看确切的崩溃行,还可以放置断点并使用您的应用程序逐步执行运行时代码。详细指南可以在NativeScript iOS 运行时自述文件中找到。

由于 NativeScript 利用标准的 XCode 项目结构,因此您可以执行通常对纯 iOS 应用程序执行的所有操作

  • 调试视图层次结构
  • 内存转储/图表
  • XCode Instruments:泄漏、CPU 分析、挂起等
  • … 等等

其他资源

使用 Android Studio 进行调试

如果您需要调试原生堆栈的部分而不是应用程序的 JavaScript 部分,则可以使用 Android Studio 来查找应用程序中的问题。

首先,准备 Android 应用程序

cli
ns prepare android

这将编译您的应用程序源代码,创建platforms/android文件夹(如果尚不存在)。您可以传递通常传递给ns run的任何标志。

接下来,通过 Android Studio 浏览菜单在 Android Studio 中打开platforms/android文件夹。

提示

如果您设置了studio命令行启动器,则可以使用以下命令从命令行快速打开 NativeScript 项目

cli
studio platforms/android

由于 NativeScript 遵循标准的 Gradle/Android 应用程序结构,因此您可以执行通常对纯 Android 应用程序执行的所有操作

  • 调试视图层次结构
  • 内存转储/图表
  • CPU 分析
  • … 等等

其他资源

上一页
运行
下一页
插件