React-Native:调试时应用卡住,除非点击屏幕
React-Native: App stuck when debugging unless screen is clicked
我的 Android 应用程序由两个屏幕组成:“登录”和“仪表板”。
登录工作正常,但仪表板是个麻烦制造者。
第一个问题:
在登录屏幕上,我可以打开调试菜单,一切正常。当我切换到仪表板屏幕时,我无法再打开菜单。如果我在登录屏幕中启用检查器,然后转到仪表板屏幕,检查器就会消失。
第二题:
当我 运行 没有附加调试器的应用程序时,我在仪表板中看不到任何数据,但登录照常工作。
当我附加调试器时,应用程序经常“卡住”。
通过在“卡住”时单击屏幕(带有附加的调试器),应用程序向前迈进了一步 - 当我足够频繁地单击屏幕时,我最终得到了我期望的所有数据!
没有设置断点,我根本不需要使用调试器,只需附加它即可。
iOS 对应的似乎工作得很好。
这里可能有什么问题?
更新:
我正在使用 React-Native 0.31.0
澄清一下:我的问题不在于调试器本身。我的问题是,没有调试器我得不到任何数据,但在附加调试器时我得到了所有数据(仅在 Android 上!)。
我相信我已经弄清楚了问题的核心所在。
在调试 React-Native App 时,您的 Chrome 代码为“运行”,它支持更多 javascript。 (我发现很难找到合适的词来形容这个...)
来自React-Native documentation :
On iOS simulators and devices, Android emulators and devices React
Native uses JavaScriptCore which is the JavaScript engine that powers
Safari. On iOS JSC doesn't use JIT due to the absence of writable
executable memory in iOS apps.
When using Chrome debugging, it runs all the JavaScript code within
Chrome itself and communicates with native code via WebSocket. So you
are using V8
在我的例子中,一些函数使用了 for of
循环或 array.some
语法。
我不确定,目前支持什么,所以你(遇到过这个问题的人)可能想要更新你的 react-native 版本。
我的 Android 应用程序由两个屏幕组成:“登录”和“仪表板”。 登录工作正常,但仪表板是个麻烦制造者。
第一个问题:
在登录屏幕上,我可以打开调试菜单,一切正常。当我切换到仪表板屏幕时,我无法再打开菜单。如果我在登录屏幕中启用检查器,然后转到仪表板屏幕,检查器就会消失。
第二题:
当我 运行 没有附加调试器的应用程序时,我在仪表板中看不到任何数据,但登录照常工作。
当我附加调试器时,应用程序经常“卡住”。 通过在“卡住”时单击屏幕(带有附加的调试器),应用程序向前迈进了一步 - 当我足够频繁地单击屏幕时,我最终得到了我期望的所有数据! 没有设置断点,我根本不需要使用调试器,只需附加它即可。
iOS 对应的似乎工作得很好。
这里可能有什么问题?
更新:
我正在使用 React-Native 0.31.0
澄清一下:我的问题不在于调试器本身。我的问题是,没有调试器我得不到任何数据,但在附加调试器时我得到了所有数据(仅在 Android 上!)。
我相信我已经弄清楚了问题的核心所在。
在调试 React-Native App 时,您的 Chrome 代码为“运行”,它支持更多 javascript。 (我发现很难找到合适的词来形容这个...)
来自React-Native documentation :
On iOS simulators and devices, Android emulators and devices React Native uses JavaScriptCore which is the JavaScript engine that powers Safari. On iOS JSC doesn't use JIT due to the absence of writable
executable memory in iOS apps. When using Chrome debugging, it runs all the JavaScript code within Chrome itself and communicates with native code via WebSocket. So you are using V8
在我的例子中,一些函数使用了 for of
循环或 array.some
语法。
我不确定,目前支持什么,所以你(遇到过这个问题的人)可能想要更新你的 react-native 版本。