我试图在我的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的回答。


当前回答

这是我的解决方案

以上的方法都不能解决我的问题,只能按照下面的步骤来做。 添加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"
    ...

其他回答

在尝试了这些答案的组合后,这是对我有用的。

我使用Genymotion作为模拟器。

1启动Genymotion模拟器。

2从终端

cd AwesomeProject
react-native run-android # it loads in genymotion and fails with bundle error
react-native start > /dev/null 2>&1 & # from dsissitka
adb reverse tcp:8081 tcp:8081 # from dsissitka

从模拟器重新加载。

它加载!

我现在可以开始显影了。

在新的React Native(当然是0.59)中,调试配置在android/app/src/debug/res/xml/react_native_config.xml中

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="false">localhost</domain>
    <domain includeSubdomains="false">10.0.2.2</domain>
    <domain includeSubdomains="false">10.0.3.2</domain>
  </domain-config>
</network-security-config>

以下是在android上运行应用的简单步骤:

1. 转到应用程序根目录。

2. 执行该命令。

React-native bundle——平台android——dev false——入口文件 index.android.js——bundle-output android / app / src / main /资产/ index.android。包——assets-dest android / app / src / main / res

所有文件都已复制。

3.创建签名APK。

打开android studio。

生成签名APK >[填写所需细节,在此步骤之前必须生成击键]

生成的APK应该没有任何错误。安装在您的设备上,这应该工作没有任何问题。

你也可以连接你的设备,直接点击android studio上的Run图标进行测试。


生成按键:

去C:\Program Files\Java\jdkx.x.x_x\bin 运行

Keytool -genkey -v -keystore d:\my_private_key。密钥别名 RSA -keysize 2048 -validity 10000

它可能会要求你填写一些细节。这样做,你就有了你的击键文件(my_private_key.keystore),可以用来签署你的apk。

一个简单的解决方案,适用于我Ubuntu 14.04。

react-native run-android

模拟器(已经启动)将返回:无法下载JS Bundle;重新启动JS服务器:

react-native start

在模拟器上点击重载JS。 这对我很管用。希望对大家有所帮助

在android上的应用程序中,我打开菜单(Genymotion中的命令+ M) -> Dev Settings ->设备的调试服务器主机和端口

设置为:localhost:8081

这对我很管用。