如何在 React-Native 中禁用远程 JS 调试

Posted

技术标签:

【中文标题】如何在 React-Native 中禁用远程 JS 调试【英文标题】:How to disable Remote JS Debugging in React-Native 【发布时间】:2017-04-04 19:09:05 【问题描述】:

我意识到禁用调试的正常方法是转到开发人员菜单。 问题是,自从我为我正在测试的应用程序(React Native 和 android 模拟器)打开调试功能后,当应用程序加载时,控制台上没有任何信息并且无法访问 Dev 菜单以关闭时,我一直得到一个白屏调试。

所以我被困住了。既然 JS 调试看起来是特定于应用程序的,我假设在模拟器中还有其他一些地方,或者我可以将其关闭。

请指教? 谢谢

【问题讨论】:

我刚刚发现这是为了从命令行 adb shell 输入 keyevent 82 打开开发菜单。问题是我仍然一无所获......就像应用程序只是挂起一样 【参考方案1】:

将此添加到您应用的入口点

import  NativeModules  from 'react-native';
NativeModules.DevSettings.setIsDebuggingRemotely(false);

这是一个记录不充分的低级函数,它将强制远程调试处于一种状态。一旦你摆脱困境,我建议你删除这行,因为它可能会导致你的应用程序进入循环和/或在某些奇怪的情况下吞下错误。

【讨论】:

【参考方案2】:

没有什么对我有用。从 android studio 冷启动模拟器为我修复了它。

【讨论】:

这并不能真正回答问题。如果您有其他问题,可以点击 进行提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review【参考方案3】:

对于那些在 Mac 上使用 ios 模拟器但由于某些错误卡在错误屏幕上而无法执行 ⌘D 的用户,您可以使用 ^⌘z 在模拟器上模拟震动。这将强制在您的模拟器上打开 expo 的货架选项,您可以禁用调试器,重新进入您的应用程序并修复您必须修复的任何内容,然后再次卡在调试器中。

【讨论】:

这应该是 MacOS 用户接受的答案。【参考方案4】:

无需重新安装expo客户端的最简单方法是:

    长按您的应用程序图标并选择应用程序信息(或通过设置 > 应用程序) 转到存储和缓存 清除存储和缓存 从 Expo 服务器再次打开应用

【讨论】:

【参考方案5】:

进入你的安卓设置并清除应用数据并缓存并重新加载应用远程调试将被关闭。

【讨论】:

【参考方案6】:

最好的方法,如果你使用模拟器的话。

    退出世博 找到位于您的模拟器中的 expo 应用程序并进入 expo 设置。 您将看到清除缓存和存储的选项。 清除它们,然后重新开始展览。 应重新关闭远程调试。

【讨论】:

【参考方案7】:

在模拟器上按 ctrl+m 并停止调试

【讨论】:

对我来说这行不通。它什么也不做。调试器仍在运行。【参考方案8】:

使用 Expo 应用时遇到了同样的问题。应用程序无法启动,无法访问开发者菜单,调试远程 js 不断使应用程序崩溃。对我来说最简单、最快捷的解决方案是清除 Expo 中的应用数据

【讨论】:

【参考方案9】:

最简单的答案就是 Clear Data 的 expo 应用程序,它在清除数据后将标志保存在调试模式的共享首选项中,然后在调用 npm start 命令后再次在开发模式下打开 - 完美地为我工作

【讨论】:

【参考方案10】:

对不起,这来晚了,但它会在未来帮助其他人。如果您遇到此问题,只需在您的移动设备或模拟器上卸载 expo 客户端应用程序,然后重新安装 expo 应用程序即可解决此问题。

【讨论】:

【参考方案11】:

在 Mac 上:然后为 ios 运行 react-native,转到

模拟器->硬件->擦除所有内容和设置

然后去Vscode,

无需调试即可运行

这使得热重载对我有用。

【讨论】:

【参考方案12】:

运行代码,我希望这段代码能正常工作:

cd android && ./gradlew clean && cd .. && react-native run-android

【讨论】:

这可能需要指定运行它的对象。 yarn cd android......【参考方案13】:

您在 MS 上使用:ctrl + m,MAC OS:cmd + m

iPhone/android:摇晃你的设备然后寻找“禁用远程调试 JS”并点击它。

【讨论】:

运行下面的代码,我希望这段代码能正常工作:cd android && gradlew clean && cd .. && react-native run-android share edit【参考方案14】:

当您的应用在 iOS 模拟器中运行时,您还可以使用 ⌘D 键盘快捷键,或者在 Mac OS 上的 Android 模拟器中运行时使用 ⌘M,在 Windows 和 Linux 上使用 Ctrl+M。

【讨论】:

【参考方案15】:

我不得不这样做:

cd android; gradle uninstallDebug; cd ../; react-native run-android

【讨论】:

【参考方案16】:

如果您在 MS 上使用:ctrl + m,MAC OS:cmd + m,iPhone/android: 摇晃您的设备,然后寻找 "禁用Remote Debug JS”并点击它。

【讨论】:

cmd + d 然后禁用远程调试器【参考方案17】:

唯一对我有用的东西(在 Mac 上)是转到顶部的菜单栏并单击“模拟器”,然后单击“重置内容和设置...”。不过,它确实重置了所有内容和设置。

【讨论】:

这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review @OmG:这对你不起作用吗?当我这样做时,它确实重置了调试,从而禁用了它。我没有找到任何其他方式来访问任何可以让我执行请求的选项。如果有什么我可以澄清的,请告诉我。 这对我有用,而其他解决方案却没有,谢谢。 我认为不是重置内容... 在同一个菜单中,您可以选择 SHAKE,这将在模拟器中显示 ActionSheet(调试菜单)。从那里你可以禁用调试【参考方案18】:

我刚刚遇到了类似的问题 - 远程调试器初始化不断使我的应用程序崩溃,我无法通过应用内 GUI 禁用远程调试。

从设备(或模拟器)卸载应用后,当我再次启动应用时,远程调试被禁用。

我假设远程调试标志保存在应用的共享首选项中(卸载后会被删除)。

【讨论】:

这应该是被接受的答案。我不明白为什么其他类似的答案被否决了。 Ctrl/Cmd + M 不起作用,因为应用程序卡住了,OP 说它(我遇到了同样的问题)...当您(意外)打开远程调试时,它存储在应用程序中。重置整个模拟器是不必要的,只需卸载应用程序并重新构建它。我没有找到更快的解决方案。

以上是关于如何在 React-Native 中禁用远程 JS 调试的主要内容,如果未能解决你的问题,请参考以下文章

如何将 firefox 设置为 React-Native 的默认远程 JS 调试器?

如何远程加载 react-native(Android) 包

如何使用 React-Native 在 iOS 中禁用屏幕截图

如何在 WebView [React-Native] 中禁用用户文本选择

如何在 react-native 中禁用默认启动画面?

如何在WebView中禁用用户文本选择[React-Native]