我已经看到了一些边缘情况和奇怪的开发者接口。
比如“摇动设备”,这对平板电脑来说真的不实用。
还有解决 Android Studio 的问题,模拟按钮按下。
是否有一种一致的方法可以做到这一点?我们不能使用内部API在应用程序中拥有一个调试按钮,以启动navigator.popUpDevMenu()
之类的菜单吗?
如果没有,那么如何摇动平板电脑以使它正常工作。这旨在解决如何在真实设备上配置HMR。React Native确实改善了开发体验,但我认为这种特定的事情会稍微减慢它的速度。
我已经看到了一些边缘情况和奇怪的开发者接口。
比如“摇动设备”,这对平板电脑来说真的不实用。
还有解决 Android Studio 的问题,模拟按钮按下。
是否有一种一致的方法可以做到这一点?我们不能使用内部API在应用程序中拥有一个调试按钮,以启动navigator.popUpDevMenu()
之类的菜单吗?
如果没有,那么如何摇动平板电脑以使它正常工作。这旨在解决如何在真实设备上配置HMR。React Native确实改善了开发体验,但我认为这种特定的事情会稍微减慢它的速度。
adb shell input keyevent 82
react-native run-android
,或者在运行react-native run-android
后设备断开连接,则需要重新启用开发服务器端口。您可以运行此命令,然后再次尝试之前的命令:adb reverse tcp:8081 tcp:8081
。
编辑: 此解决方案仅适用于Android设备,并且是上述问题中提出的一种hack方法。因此,它有待改进。但是,在此之前,它被选为有效答案。imoprt { NativeModules } from 'react-native';
...
onMenuButtonClick(){
NativeModules.DevMenu.show();
}
NativeModules.DevSettings
提供了一些可用的 API。 - LitileXueZhaimport DevMenuOnTouch from 'react-native-dev-menu-on-touch';
// or: import { DevMenuOnTouch } from 'react-native-dev-menu-on-touch'
class YourRootApp extends Component {
render() {
return (
<DevMenuOnTouch>
<YourApp />
</DevMenuOnTouch>
);
}
}
当你需要在真实设备上进行调试,并且旁边坐着同僚时,这将非常有用。
在Windows上,只需单击Metro Bundler并按下'D'键打开开发人员菜单,按'R'重新加载。
去“设置” > “已安装的应用” > “[您的应用名称]” > “权限管理”,并启用“显示弹出窗口”。
再次摇动。开发者菜单应该会像预期的那样弹出。
来源:https://matthewphiong.com/debugging-react-native-app-on-a-xiaomi-phone
有时在Android上摇晃手机会很烦人。通过以下更改,您可以通过按下音量减/加键打开开发人员菜单。
请在android/../MainActivity.java
中插入以下代码:
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN && this.getReactInstanceManager() != null) {
this.getReactInstanceManager().showDevOptionsDialog();
return true;
}
return super.onKeyUp(keyCode, event);
}
使用React Native Navigation V3,以下代码可在MainActivity.java
中运行。
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN && this.getReactGateway().getReactNativeHost().getReactInstanceManager() != null) {
this.getReactGateway().getReactNativeHost().getReactInstanceManager().showDevOptionsDialog();
return true;
}
return super.onKeyUp(keyCode, event);
}
react-native run-android
部署上述代码。已在RN 0.59+上测试。参考:https://facebook.github.io/react-native/docs/integration-with-existing-apps。编辑:还需在文件中包含其他导入项以及KeyEvent
导入。 import android.view.KeyEvent;
。adb shell input keyevent 82
在较新的 Android 版本上(不确定是哪个版本)无法正常工作,因此这是 Android 的最佳解决方案。虽然不喜欢仅为开发目的添加代码,但这并不太糟糕,似乎是唯一可靠的解决方案。应该选择此答案。 - Blue Botimport com.facebook.react.buildconfig
。
adb shell input keyevent 82
没有任何反应 :( - ZedTuX