@@ -5,91 +5,32 @@ title: 其他调试方法
55
66import Tabs from '@theme/Tabs '; import TabItem from '@theme/TabItem '; import constants from '@site/core /TabsConstants';
77
8- 此页面介绍了除 [ 打开调试器 ] ( ./debugging#opening-the-debugger ) 中描述的方法之外的其他 JavaScript 调试方法。如果你正在使用新创建的 React Native 或 Expo 应用,我们建议从那里开始 。
8+ 此页面介绍了传统的 JavaScript 调试方法。如果你正在使用新创建的 React Native 或 Expo 应用,我们建议使用 [ React Native DevTools ] ( ./react-native-devtools ) 。
99
1010## Safari 开发者工具(直接调试 JSC)
1111
1212当你的应用使用 [ JavaScriptCore] ( https://trac.webkit.org/wiki/JavaScriptCore ) (JSC)作为运行时环境时,可以使用 Safari 来调试应用的 iOS 版本。
1313
14141 . ** 仅适用于物理设备** :打开"设置"应用,导航到 Safari > 高级,确保"Web 检查器"已打开。
15- 2 . 在 Mac 上,打开 Safari 并启用"开发"菜单。可以在 Safari > 设置... 下找到,然后选择"高级"选项卡,再勾选"显示开发者功能 "。
15+ 2 . 在 Mac 上,打开 Safari 并启用"开发"菜单。可以在 Safari > 设置... 下找到,然后选择"高级"选项卡,再勾选"显示面向 Web 开发者的功能 "。
16163 . 在"开发"菜单下找到你的设备,并从子菜单中选择"JSContext"项。这将打开 Safari 的 Web 检查器,其中包括类似于 Chrome 开发者工具的控制台和源代码面板。
1717
1818![ Opening Safari Web Inspector] ( /docs/assets/debugging-safari-developer-tools.jpg )
1919
2020::: tip
21- 虽然默认情况下可能没有启用 Source Map,但是你可以参考这篇指南或者视频, 了解如何启用它们, 并在源代码的正确位置设置断点。
21+ 虽然默认情况下可能没有启用 Source Map,但你可以参考 [ 这篇指南 ] ( https://blog.nparashuram.com/2019/10/debugging-react-native-ios-apps-with.html ) 或者 [ 视频 ] ( https://www.youtube.com/watch?v=GrGqIIz51k4 ) , 了解如何启用它们, 并在源代码的正确位置设置断点。
2222:::
2323
2424::: tip
25- 每次应用重新加载时, 都会创建一个新的 JSContext。勾选"Automatically Show Web Inspectors for JSContexts"可以省去你手动选择最新 JSContext 的麻烦。
25+ 每次应用重新加载时, 都会创建一个新的 JSContext。勾选"Automatically Show Web Inspectors for JSContexts"可以省去你手动选择最新 JSContext 的麻烦。
2626:::
2727
28- ## 远程 JavaScript 调试(已弃用 )
28+ ## 远程 JavaScript 调试(已移除 )
2929
30- ::: warning
31- 在 React Native 0.73 版本中,远程 JavaScript 调试功能已被弃用,未来版本将彻底移除。
32- :::
33-
34- 远程 JavaScript 调试可以将外部网页浏览器(Chrome)连接到你的应用,并在网页中运行你的 JavaScript 代码。这使得你可以像调试普通网页应用一样,使用 Chrome 的调试器来调试 React Native 应用。不过需要注意的是,浏览器环境与应用环境可能存在很大差异,并非所有的 React Native 模块都能在这种调试方式下正常工作。
35-
36- ### 设置
37-
38- 从 React Native 0.73 开始,必须使用 ` NativeDevSettings ` 模块** 手动启用** 远程 JavaScript 调试功能。
39-
40- ``` js
41- import NativeDevSettings from ' react-native/Libraries/NativeModules/specs/NativeDevSettings' ;
42-
43- function MyApp () {
44- // 将此操作分配给只在开发模式下显示的按钮或 useEffect 调用。
45- const connectToRemoteDebugger = () => {
46- NativeDevSettings .setIsDebuggingRemotely (true );
47- };
48- }
49- ```
50-
51- 当调用` NativeDevSettings.setIsDebuggingRemotely(true) ` 时,系统会打开新的标签页[ http://localhost:8081/debugger-ui ] ( http://localhost:8081/debugger-ui ) 。
30+ :::warning 重要
31+ 远程 JavaScript 调试功能已在 React Native 0.79 版本中移除。请查看原始的[ 弃用公告] ( https://github.com/react-native-community/discussions-and-proposals/discussions/734 ) 。
5232
53- 从该页面,你可以通过以下方式打开 Chrome 开发者工具:
54-
55- - View > Developer > Developer Tools
56- - <kbd >⌥ Option</kbd > + <kbd >Cmd ⌘</kbd > + <kbd >I</kbd > (macOS) / <kbd >Ctrl</kbd > + <kbd >Shift</kbd > + <kbd >I</kbd > (Windows 和 Linux 系统)。
57-
58- 你可以在控制台和源代码面板中查看 React Native 代码。
59-
60- ![ The remote debugger window in Chrome] ( /docs/assets/debugging-chrome-remote-debugger.jpg )
61-
62- :::info 信息
63- 在 Chrome 远程 JavaScript 调试器下,React DevTools 的网页版本将无法与 React Native 一起使用。请参阅 [ React DevTools] ( ./react-devtools ) 指南,了解如何使用独立版本的 React DevTools。
33+ 如果你使用的是较旧版本的 React Native,请查阅[ 对应版本的文档] ( /versions ) 。
6434:::
6535
66- :::note 注意
67- 在 Android 上,如果调试器与设备之间的时间发生偏移,可能会导致动画和事件行为异常。可以通过运行 ` adb shell "date ` date +%m%d%H%M%Y.%S%3N` " ` 命令来修复这个问题。如果使用物理设备,则需要 root 权限。
68- :::
69-
70- ### 在实体设备上调试
71-
72- ::: info
73- 如果您使用的是 Expo CLI,则已为您配置好了。
74- :::
75-
76- <Tabs groupId =" platform " defaultValue ={constants.defaultPlatform} values ={constants.platforms} className =" pill-tabs " >
77- <TabItem value =" ios " >
78-
79- 在 iOS 设备上,打开文件[ ` RCTWebSocketExecutor.mm ` ] ( https://github.com/facebook/react-native/blob/master/packages/react-native/React/CoreModules/RCTWebSocketExecutor.mm ) ,将"localhost"替换为你电脑的 IP 地址。
80-
81- </TabItem >
82- <TabItem value =" android " >
83-
84- 对于通过 USB 连接的 Android 5.0+设备,您可以使用[ ` adb ` 命令行工具] ( http://developer.android.com/tools/help/adb.html ) 在设备和电脑之间建立端口映射:
85-
86- ``` sh
87- adb reverse tcp:8081 tcp:8081
88- ```
89-
90- </TabItem >
91- </Tabs >
92-
93- :::note 注意
94- 如果您遇到任何问题,可能是某个 Chrome 扩展程序与调试器有了意外的互动。请尝试禁用所有扩展程序,然后一个个重新启用,直到找到有问题的扩展程序。
95- :::
36+ ![ The remote debugger window in Chrome] ( /docs/assets/debugging-chrome-remote-debugger.jpg )
0 commit comments