React native 通过命令行在Android设备上手动重新加载React本机应用程序

React native 通过命令行在Android设备上手动重新加载React本机应用程序,react-native,react-native-android,React Native,React Native Android,我想按需手动强制重新加载我的React本机应用程序,而无需实际晃动设备。(我有腕管。) 我知道可以进行实时重新加载/热重新加载。我正在寻找一个按需命令行解决方案。使用cmd行,您可以向Android设备发送命令 adb shell input text "RR" 此命令告诉Android设备键入两次字符“R”,这是要在Android上重新加载的React本机命令 adb shell命令具有许多有用的功能,其中许多功能如下所述: 要打开“开发人员”菜单,请执行以下操作: adb shell i

我想按需手动强制重新加载我的React本机应用程序,而无需实际晃动设备。(我有腕管。)


我知道可以进行实时重新加载/热重新加载。我正在寻找一个按需命令行解决方案。

使用cmd行,您可以向Android设备发送命令

adb shell input text "RR"
此命令告诉Android设备键入两次字符“R”,这是要在Android上重新加载的React本机命令

adb shell
命令具有许多有用的功能,其中许多功能如下所述:

要打开“开发人员”菜单,请执行以下操作:

adb shell input keyevent 82

我使用以下命令。它不会重新加载应用程序,但会在设备上打开“开发”菜单,这样我就可以按下“重新加载”选项:

adb外壳输入键事件键代码\u菜单


我用一个真实的设备(不是模拟器)开发,通过adb发送“double-R”不起作用(它只显示键盘和键入2 Rs)。

如果你不知道这个技巧,就把它发布在这里

长按android设备中的菜单按钮。然后你会得到这份菜单


点击重新加载选项,您就可以开始了

制作了一个自动热键脚本来重新加载并用键盘快捷键打开菜单

   ^+r::  run, %comspec% /c adb shell input text "RR",,hide  
   ^+e::  run, %comspec% /c adb shell input keyevent 82,,hide
按ctrl+shift+r组合键重新加载
ctrl+shift+e打开开发菜单

将以下脚本添加到package.json中:

    "android-shake": "adb shell input keyevent 82"
那你就可以打电话了

yarn android-shake

如果您正在寻找ios,请在此设备上签出我的答案。您只需摇动设备,就会出现一个菜单,因此单击“重新加载”

一个技巧是在使用unix的情况下在~/.bashrc配置文件上添加此命令

  • 使用您最喜欢的编辑器(例如Ubuntu上的nano)并键入
    nano~/.bashrc
  • 在文件末尾写入
    alias rnreload='adb shell输入文本“RR'
  • 保存它并运行
    source~/.bashrc
    以激活它
  • 现在,无论何时需要,只要在终端上键入
    rnreload
  • 下次你进入电脑时,应该已经完成了


    此外,还可以添加另一个别名:
    alias rnshake='adb shell input keyevent 82'
    ,它“震动”android。您可以使用它访问其他命令,如热重新加载、调试器、检查器等。

    如果您在Mac上并使用,您可以在
    ~/.hammerspoon/init.lua
    文件中放入以下代码位:

    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)
    
    os.execute
    命令不会加载您的ENV(这样做会使运行命令的速度非常慢),因此请确保在终端中运行
    哪个adb
    ,以确定到
    adb
    的确切路径。(在我的例子中是
    /Users/peter/Library/Android/sdk/platformtools/adb


    现在,您可以使用
    ctrl+cmd+R
    重新加载应用程序,并使用
    ctrl+option+cmd+R
    从任何地方显示开发菜单,而无需费心将cmd选项卡从您喜爱的编辑器中移出

    这很有趣,因为我也在一台真正的设备上开发,“双R”确实会重新加载应用程序。如果键盘已经打开,它将打印“RR”,但如果键盘关闭,它将重新加载。也许我的回答太笼统了,不适用于所有设备?@brettlaforge我是native的新手,但我可能猜某些应用程序可能对按键很贪婪,而不仅仅是不同的设备。你的答案在Android上对我有用,谢谢!我的android手机没有菜单按钮。我的设备有其他选择吗?“如何在不摇晃设备的情况下重新加载?”@OsmanGaniKhanMasum:“只摇晃你的设备。”你可以从设置中启用“硬重新加载”。这很简单。对于任何对第一个命令有问题的人(例如无法对焦的文本输入),另一种选择是
    adb shell“input keyevent 82&&input keyevent 66&&input keyevent 66”
    。如果您同时运行两台设备,它会在开发者菜单中手动点击“重新加载”,并且它不允许您运行任何可以简单执行的
    adb
    命令:
    adb-s shell输入文本“RR”