Is there a way to open dev menu or reload app without shaking the app?
Android Wireless over wifi so no usb cable Windows 10
Hot reload or Live reload is not good enough and my arm hurts :)
Is there a way to open dev menu or reload app without shaking the app?
Android Wireless over wifi so no usb cable Windows 10
Hot reload or Live reload is not good enough and my arm hurts :)
for android : in your package.json add following lines in scripts
"reload":"adb shell input keyevent 82 && adb shell input keyevent 66 && adb shell input keyevent 66",
"devmenu":"adb shell input keyevent 82",
"debug":"adb shell input keyevent 82 && adb shell input keyevent 61 && adb shell input keyevent 66 && adb shell input keyevent 66"
now you can run npm run devmenu
to open shake menu in android,
and reload
to reload the app, and debug
to connect to remote debugger.
for ios : you can make a button for it somewhere in app, and let this thing only be shown when app is in dev mode.
import {NativeModules,Platform} from "react-native"
renderDevMenuTouchable = () => {
if(__DEV__ && Platform.OS == "ios" ){
return (
<TouchableOpacity
style={styles.touchableDebug}
onPress={()=>{
NativeModules.DevMenu.reload();
}}
onLongPress={()=>{
NativeModules.DevMenu.show();
}}
>
<View style={{backgroundColor:"red",width:23,height:25}}/>
</TouchableOpacity>
)
}
else {
return null;
}
}
As @bennygenel hints, from that page you can see there is a command on Android through adb
adb shell input keyevent 82
to open menu on wireless devices
You can configure long pressing the Android system Recent
button to Open/close menu
This would open the dev menu in a react native app.
You can send a reload call to the device with: adb shell input keyboard text "rr"
For iOS I like to wrap my app in a component like this which allows a 3 finger touch to trigger the dev menu:
import { NativeModules } from 'react-native';
// wraps the app in a function to allow three finger dev menu access
const DevMenuTrigger = ({ children }) => {
const { DevMenu } = NativeModules;
const panResponder = PanResponder.create({
onStartShouldSetPanResponder: (evt, gestureState) => {
if (gestureState.numberActiveTouches === 3) {
DevMenu.show();
}
},
});
return <View style={{ flex: 1 }} {...panResponder.panHandlers}>{children}</View>;
};
const DevApp = () => (<DevMenuTrigger><App /></DevMenuTrigger>);
// export default App;
export default DevApp;
For me only using adb shell input keyevent 82
worked
for convenience you can add it to your scripts
inside the package.json
file
something link this:
"android-menu": "adb shell input keyevent 82"
also apparently there is an issue with KK devices - solved here
It's also possible to open Debug menu by volume keys in Android. Check the below link.
Not applicable for adb shell input keyevent 82
.
When you start the service, a prompt will be printed in the terminal.
"start": "react-native start",
Press d
Welcome to Metro!
Fast - Scalable - Integrated
To reload the app press "r"
To open developer menu press "d"
Another way to achieve this is by:
typing "d" in the terminal where you're running the Metro server (basically the terminal where you've typed in "yarn/ npm start"