【问题标题】:Reload a React Native app on an Android device manually via command line通过命令行手动在 Android 设备上重新加载 React Native 应用程序
【发布时间】:2017-10-25 13:01:02
【问题描述】:

我想根据需要手动强制重新加载我的 React Native 应用程序,而无需实际晃动设备。 (我得到腕管。)

我知道 Live Reload / Hot Reload 可用。我正在寻找按需命令行解决方案。

【问题讨论】:

    标签: react-native react-native-android


    【解决方案1】:

    如果您在 Mac 上使用 Hammerspoon,您可以将以下代码放入您的 ~/.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(这样做会使运行命令变得非常慢),因此请确保在您的终端中运行 which adb 以找出 adb 的确切路径。 (在我的例子中是/Users/peter/Library/Android/sdk/platform-tools/adb)。

    现在您可以在任何地方使用ctrl+cmd+R 重新加载您的应用程序并使用ctrl+option+cmd+R 显示开发菜单,甚至无需在您最喜欢的编辑器中使用 cmd-tab!

    【讨论】:

      【解决方案2】:

      如果您使用的是 unix,一个技巧是将此命令添加到 ~/.bashrc 配置文件中。

      1. 使用您喜欢的编辑器(例如:Ubuntu 上的 nano)并输入 nano ~/.bashrc
      2. 在文件末尾写入alias rnreload='adb shell input text "RR"'
      3. 保存并运行source ~/.bashrc 以激活它。
      4. 现在,只要您需要,只需在终端上输入rnreload

      下次你进入你的电脑应该已经完成​​了。

      此外,还可以添加其他别名:alias rnshake='adb shell input keyevent 82',它会“震动”android。您可以使用它来访问其他命令,例如 Hot Reloading、Debugger、Inspector 等。

      【讨论】:

        【解决方案3】:

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

            "android-shake": "adb shell input keyevent 82"
        

        然后你就可以打电话了

        yarn android-shake
        

        如果您正在寻找 ios,请查看我在此 link 上的回答

        【讨论】:

          【解决方案4】:

          对于设备,您只需摇动设备即可出现菜单,因此请点击重新加载

          【讨论】:

          • 问题中提到:“无需物理晃动设备”
          【解决方案5】:

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

             ^+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 打开开发菜单

          【讨论】:

            【解决方案6】:

            把它贴在这里,以防你不知道这个技巧

            在您的 Android 设备中长按菜单按钮。然后你会得到这个菜单

            点击重新加载选项,一切顺利

            【讨论】:

            • 我的安卓手机没有菜单按钮。我的设备有替代品吗?
            • "如何在不晃动设备的情况下重新加载?" @OsmanGaniKhanMasum:“摇晃你的设备。”
            • 您可以从设置中启用“硬重新加载”。这很容易。
            • 不错。在我的 Fire TV 遥控器上,我什至不需要长按,只需按一下即可。
            【解决方案7】:

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

            adb shell input text "RR"
            

            此命令告诉 Android 设备键入字符“R”两次,这是在 Android 上重新加载的 React Native 命令。

            adb shell 命令具有许多有用的功能,其中许多功能在此处进行了描述:

            ADB Shell Input Events

            打开开发者菜单:

            adb shell input keyevent 82
            

            【讨论】:

            • 对于第一个命令有问题的任何人(例如无法聚焦的文本输入),替代方法是adb shell "input keyevent 82 && input keyevent 66 && input keyevent 66"。它在开发者菜单中手动点击“重新加载”
            • 如果您同时运行 2 个设备并且它不允许您运行任何您可以简单执行的 adb 命令:adb -s <device nane> shell input text "RR"
            【解决方案8】:

            我使用以下命令。它不会重新加载应用程序,但会在设备上显示开发者菜单,因此我可以按下“重新加载”选项:

            adb shell input keyevent KEYCODE_MENU

            我使用真实设备(不是模拟器)进行开发,通过 adb 发送“双 R”不起作用(它只显示键盘并键入 2 个 R)。

            【讨论】:

            • 这很有趣,因为我也是在真实设备上开发的,并且“双 R”确实会重新加载应用程序。如果键盘已经打开,它将打印“RR”,但如果键盘关闭,它将重新加载。也许我的回答过于笼统,不适用于所有设备?
            • @brettlaforge 我是本地新手,但我可能猜想某些应用程序可能对按键很贪心,而不仅仅是不同的设备。您的答案在 Android 上对我有用,所以谢谢!
            猜你喜欢
            • 1970-01-01
            • 2016-01-24
            • 1970-01-01
            • 2016-11-24
            • 2013-03-30
            • 1970-01-01
            • 2013-07-07
            • 1970-01-01
            相关资源
            最近更新 更多