Android &引用;获取JS包“;极其缓慢

Android &引用;获取JS包“;极其缓慢,android,react-native,Android,React Native,一段时间以来,我一直在尝试在我的Windows机器上创建基本的本地Android应用程序。即使在部署最基本的“Welcome to React Native”应用程序时,我也会在模拟器打印“获取JS包”时经历非常长的等待时间。这些时间已经过了4分钟 我已经尝试了各种模拟器,启用了HAXM,启用了gradle,尝试了Intel_x64、Intel_x86、针对x64/x86的Google API,但速度仍然很慢 还有什么建议我可以试试吗 我通过不使用adb反转TCP端口8081解决了这个问题 更

一段时间以来,我一直在尝试在我的Windows机器上创建基本的本地Android应用程序。即使在部署最基本的“Welcome to React Native”应用程序时,我也会在模拟器打印“获取JS包”时经历非常长的等待时间。这些时间已经过了4分钟

我已经尝试了各种模拟器,启用了HAXM,启用了gradle,尝试了Intel_x64、Intel_x86、针对x64/x86的Google API,但速度仍然很慢

还有什么建议我可以试试吗

我通过不使用adb反转TCP端口8081解决了这个问题

更新2:我以为我通过使用我的公共IP/主机名解决了这个问题,但事实证明,
react native run android
每次执行时都会重新创建
adb reverse
。有关相关链接,请参见底部的更新1

原件:

最初为React Native设置计算机时,我运行了以下命令,让React应用程序与React打包程序通信:
adb reverse tcp:8081 tcp:8081
。我观察到,每次我运行
react native run android
,我的模拟器都会停留在“抓取JS包很长一段时间”上

要修复Windows上模拟器的问题,请执行以下操作:

  • 通过模拟设备震动,访问开发者菜单(应用程序内、模拟器内)。打开
    Additional Tools->Accelerator
    ,然后按窗口底部
    记录数据下的Play:shake

  • 单击
    Dev Settings
    (最后一个菜单项)

  • 单击设备的调试服务器主机和端口,并将该值设置为网络上我的电脑的公共IP/Name:port。(例如,
    devpc.mynet.local:8081
    192.168.1.99:8081

  • 关闭react应用程序

  • 运行
    adb reverse--remove all
    以撤消我以前的
    adb reverse tcp:8081…
    命令

  • 通过运行
    react native run android
    从我的电脑重新启动一切。注意,这一次,
    获取JS Bundle
    步骤几乎立即执行

  • 我刚刚为我自己的环境发现了这个变通方法。我没有在任何实际设备上尝试过。此外,我想知道是否有一种方法可以从代码中指定它,以便它在第一次正常工作(而不是必须通过在设备上运行应用程序并在那里的开发设置中设置它来指定我的计算机的公共IP/名称…)

    正式文件:

    更新1:下面是一些有关配置
    debug\u http\u主机
    设备首选项的相关阅读


    花了几天时间试图提高这个模拟器的速度,最终使一切都运行得非常快速和顺利

    您需要具有node的最新版本。如果它过时了,速度会非常慢

    现在,如果您发现自己必须关闭节点服务器并在每做一点更改后重新运行“react native run android”,那么您的“文件监视程序”就永远不会被安装。为了启动文件监视程序,您应该:(1)编辑您的awesomeapp\node\u modules\react native\packager\react packager\src\node haste\FileWatcher\index.js(2),并将MAX\u WAIT\u TIME更改为更大的值(如600000)。节点将只等待filewatcher启动一段时间,因此如果值太低,节点将跳过该值并继续获取捆绑包。随着file watcher的运行,您只需双击R即可重新加载对代码所做的微小更改


    现在,您需要能够查看所有console.log()。为了在Genymotion(我推荐的模拟器,甚至是免费的)中实现这一点,在应用程序运行时按ctrl-M,然后单击“远程调试JS”。这将在web浏览器中打开一个选项卡()。检查此页面以打开控制台

    在真正的设备上需要多长时间?@JeanRegisser在真正的设备上也需要4分钟以上的时间…更让人困惑的是,对于模拟器和设备来说,屏幕都不会刷新以反映代码更改。是否打开了远程调试?我在远程调试中经历了很长的加载时间,一旦关闭远程调试,这些时间就会消失。与iOS仿真器相比,使用Android仿真器时,这个问题要严重得多。关于未加载的内容,在他们的问题页面上似乎有很多关于这方面的内容。特别是这个是新的