我试图在我的Nexus5 (android 5.1.1)上运行AwesomeProject。

我能够构建项目并将其安装到设备上。但当我运行它时,我看到一个红色屏幕,上面写着

无法下载JS包。您是否忘记启动开发服务器或连接设备?

在react原生iOS中,我可以选择离线加载jsbundle。我如何在Android上做同样的事情?(或者至少,我可以在哪里配置服务器地址?)

更新

要使用本地服务器运行,请在react-native项目根目录下运行以下命令

React-native start > /dev/null 2>&1 & Adb reverse tcp:8081 tcp:8081

请看disssitka的回答,了解更多细节。

要在没有服务器的情况下运行,可以运行以下命令将jsfile捆绑到apk中:

在android/app/src/main下创建一个assets文件夹 旋度“http://localhost: 8081 / index.android.bundle吗?平台=android" -o "android/app/src/main/assets/index.android.bundle"

详情请看kzzzf的回答。


当前回答

在设备上运行

我找到了另一个答案。

adb reverse:仅适用于Android 5.0+ (API 21)。 另一种方法:通过摇动设备打开开发人员菜单,进入开发设置,进入设备调试服务器主机,输入您的机器的IP地址和本地开发服务器的端口

其他回答

这是我的解决方案

以上的方法都不能解决我的问题,只能按照下面的步骤来做。 添加network-security-config.xml文件

    <domain-config cleartextTrafficPermitted="true">
          <domain includeSubdomains="true">10.0.2.2</domain>
    </domain-config>
    ...

然后更新AndroidManifest.xml文件

<application
+   android:networkSecurityConfig="@xml/network_security_config"
    ...

最初的问题是关于在物理设备中重新加载应用程序。

当你在物理设备上调试应用程序时(比如通过adb),你可以通过点击设备左上方的“action”按钮重新加载JS包。这将打开选项菜单(重新加载,远程调试JS…)

希望这能有所帮助。

删除你手机上的App !我尝试了几个步骤,但最终还是成功了。

If you tried to run your app before but failed, delete it from your android device. Run $ react-native run-android Open the React Rage Shake Menu from within your app on your android device, go to Dev Settings and then to Debug server host & port for device. There enter your server IP (IP of your computer) and host 8081, e.g. 192.168.50.35:8081. On a mac you can find the IP of your computer at System Preferences -> Network -> Advanced... -> TCP/IP -> IPv4 Address. Open the Rage Shake Menu again and click Reload JS.

在同一终端上启动两个终端,第一个终端运行react-native Start,第二个终端运行react-native run-android,简单地解决了这个问题。祝你好运

在停止react-native run-android进程后,我在Linux上得到了这个。似乎节点服务器仍在运行,所以下次你运行它时,它不会正常运行,你的应用程序无法连接。

这里的修复是杀死运行在Xterm中的节点进程,你可以通过ctrl- ctrl该窗口(更容易)杀死它,或者你可以使用lsof -n -i4TCP:8081然后杀死-9 PID找到它。

然后再次运行react-native run-android。