Ich möchte manuell ein Neuladen meiner React Native-App erzwingen, ohne das Gerät physisch zu schütteln. (Ich bekomme einen Karpaltunnel.)
Ich weiß, dass Live Reload/Hot Reload verfügbar ist. Ich suche nach einer On-Demand-Befehlszeilenlösung.
Über die cmd-Zeile können Sie einen Befehl an das Android-Gerät senden.
adb Shell input text "RR"
Dieser Befehl weist das Android-Gerät an, zweimal das Zeichen "R" einzugeben. Dies ist der Befehl React Native zum Neuladen auf Android.
Der Befehl adb Shell
bietet viele nützliche Funktionen, von denen viele hier beschrieben werden:
So öffnen Sie das Entwicklermenü:
adb Shell input keyevent 82
Ich benutze den folgenden Befehl. Die App wird nicht neu geladen, aber das Entwicklermenü auf dem Gerät wird angezeigt. Ich kann dann die Option "Reload" drücken:
adb Shell input keyevent KEYCODE_MENU
Ich entwickle mit einem echten Gerät (nicht dem Emulator) und das Senden des "double-R" durch adb funktioniert nicht (es zeigt nur die Tastatur und gibt 2 Rs ein).
Einfach hier posten, falls Sie diesen Trick nicht kennen
Langes Drücken der Menütaste in Ihrem Android-Gerät. Dann bekommst du dieses Menü
tippe auf die Reload-Option und du kannst loslegen
Fügen Sie dem package.json das folgende Skript hinzu:
"Android-shake": "adb Shell input keyevent 82"
Dann können Sie anrufen
yarn Android-shake
Wenn Sie nach ios suchen, dann checken Sie meine Antwort auf diesen link
Erstellung eines Autohotkey-Skripts zum erneuten Laden und Öffnen des Menüs mit Tastenkombinationen.
^+r:: run, %comspec% /c adb Shell input text "RR",,hide
^+e:: run, %comspec% /c adb Shell input keyevent 82,,hide
ctrl + shift + r zum erneuten Laden von ctrl + shift + e zum Öffnen des Dev-Menüs
Wenn Sie auf einem Mac arbeiten und Hammerspoon verwenden, können Sie das folgende Codebit in Ihre ~/.hammerspoon/init.lua
-Datei einfügen:
hyper = {'ctrl', 'alt', 'cmd'}
placid = {'ctrl', 'cmd'}
-- React native reload JS on connected device
hs.hotkey.bind(placid, 'R', function()
os.execute('/Users/peter/Library/Android/sdk/platform-tools/adb Shell input text "RR"')
end)
-- React native show dev menu on connected device
hs.hotkey.bind(hyper, 'R', function()
os.execute('/Users/peter/Library/Android/sdk/platform-tools/adb Shell input keyevent 82')
end)
der Befehl os.execute
lädt Ihre ENV nicht (dies würde die Ausführung von Befehlen sehr verlangsamen). Stellen Sie daher sicher, dass Sie which adb
in Ihrem Terminal ausführen, um herauszufinden, wie der genaue Pfad zu adb
lautet. ist. (in meinem Fall war es /Users/peter/Library/Android/sdk/platform-tools/adb
).
Jetzt können Sie Ihre App mit ctrl+cmd+R
neu laden und das Dev-Menü mit ctrl+option+cmd+R
von jedem Ort aus anzeigen, ohne sich mit cmd-tab aus Ihrem Lieblingseditor zu beschäftigen!
Ein Trick wäre, diesen Befehl im ~/.bashrc-Profil hinzuzufügen, falls Sie Unix verwenden.
nano ~/.bashrc
ein.alias rnreload='adb Shell input text "RR"'
source ~/.bashrc
aus, um es zu aktivieren.rnreload
in ein Terminal ein.Das nächste Mal, wenn Sie Ihren Computer betreten, sollte dies bereits geschehen.
Es besteht auch die Möglichkeit, einen weiteren Alias hinzuzufügen: alias rnshake='adb Shell input keyevent 82'
, der Android "schüttelt". Sie können damit auf andere Befehle wie Hot Reloading, Debugger, Inspector usw. zugreifen.
Bei einem Gerät müssen Sie Ihr Gerät nur schütteln, sobald ein Menü angezeigt wird. Klicken Sie auf Neu laden