开发流程
调试
有多种方法可以调试应用程序中的问题,从使用console.logs
的最简单形式开始。对于更复杂的问题,您可能需要使用实际的调试器,例如 Chrome DevTools、XCode 开发者工具和仪器或 Android Studio 开发者工具。
控制台
检查状态的最快方法是将值记录到控制台。NativeScript 支持控制台方法,例如log
、info
、warn
、error
、trace
、dir
、time
和timeEnd
。
time(label: string)
方法启动一个新的计时器,并且对于测量某些操作花费的时间非常有用。要停止计时器,请使用相同的标签调用timeEnd
,执行时间将打印到控制台。
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 调试会话,请在调试模式下运行您的应用程序
ns debug android|ios
ns debug
命令会在连接的设备或模拟器上构建并部署应用程序,如果您有多个设备可用,则需要从列表中选择一个,或者从ns devices
传递--device <id>
。
应用程序启动后,一个 URL 会打印到控制台
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 功能 | Android | iOS |
---|---|---|
调试器 | ✅ | ✅ |
控制台 | ✅ | ✅ |
资源(源文件) | ✅ | ✅ |
网络 | ✅ | ✅ |
元素(DOM) | ✅(仅查看) | ✅(仅查看) |
元素(样式) | 🟠 仅计算 | 🟠 仅计算 |
内存分析 | ✅ | ✅ |
时间线和 CPU 分析 | ✅ | ✅ |
使用 VS Code 进行调试
VS Code 使用与 Chrome DevTools 相同的协议,为了在 VS Code 中启动调试会话,您需要安装VS Code 的 NativeScript 扩展。
注意
NativeScript 的 VS Code 扩展目前已过时,可能无法工作。我们计划尽快改进该项目并使其与所有最新功能保持同步。
使用 XCode 进行调试
如果您需要调试原生堆栈的部分而不是应用程序的 JavaScript 部分,则也可以使用 XCode 调试器以及所有 XCode Instruments 来查找应用程序中的问题,例如内存泄漏、挂起、CPU 密集型任务等。
首先,准备 iOS 应用程序
ns prepare ios
这将编译您的应用程序源代码,创建platforms/ios
文件夹(如果尚不存在)。您可以传递通常传递给ns run
的任何标志。
接下来,在 XCode 中打开platforms/ios/<project-name>.xcworkspace
,可以通过 XCode 浏览菜单或从命令行打开。
open platforms/ios/<project-name>.xcworkspace
选择目标设备或模拟器,然后通过“播放”按钮运行应用程序。导航到 XCode 项目中的原生代码,并放置断点,当应用程序命中这些断点时,它将暂停执行,您将能够逐步执行原生代码。
如果发生崩溃,XCode 调试器将停止执行并打印线程转储以及应用程序崩溃的位置。在许多情况下,堆栈将指向符号标识符,例如0x1088f3960
,这通常意味着有问题的代码的源代码不可用(可能是外部预编译库)。如果崩溃发生在 NativeScript 运行时本身,您可以附加运行时源代码以查看确切的崩溃行,还可以放置断点并使用您的应用程序逐步执行运行时代码。详细指南可以在NativeScript iOS 运行时自述文件中找到。
由于 NativeScript 利用标准的 XCode 项目结构,因此您可以执行通常对纯 iOS 应用程序执行的所有操作
- 调试视图层次结构
- 内存转储/图表
- XCode Instruments:泄漏、CPU 分析、挂起等
- … 等等
其他资源
使用 Android Studio 进行调试
如果您需要调试原生堆栈的部分而不是应用程序的 JavaScript 部分,则可以使用 Android Studio 来查找应用程序中的问题。
首先,准备 Android 应用程序
ns prepare android
这将编译您的应用程序源代码,创建platforms/android
文件夹(如果尚不存在)。您可以传递通常传递给ns run
的任何标志。
接下来,通过 Android Studio 浏览菜单在 Android Studio 中打开platforms/android
文件夹。
由于 NativeScript 遵循标准的 Gradle/Android 应用程序结构,因此您可以执行通常对纯 Android 应用程序执行的所有操作
- 调试视图层次结构
- 内存转储/图表
- CPU 分析
- … 等等
其他资源