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


当前回答

好吧,我想我知道问题出在哪里了。这和我当时扮演的守望者有关。

在一个新的shell中,运行brew update 然后:酿解守夜人 然后:酿造安装守望者

现在,您可以从项目文件夹中运行react-native start

我让这个shell打开,创建一个新的shell窗口并从我的项目文件夹中运行:react-native run-android。世界一切都好。

ps.我最初玩的是3.2版的守望者。这将我升级到3.7。

pp。我是新手,所以这可能不是最快的解决方法,但对我来说很有效。

*在设备上运行/调试的更多信息

你可能会发现,如果你将应用部署到Android设备上,而不是模拟器上,你会看到一个红色的死机屏幕,错误提示无法加载JS Bundle。您需要为您的设备设置调试服务器为您的计算机运行react…名称或IP地址。

按设备菜单按钮 选择Dev Settings 为设备选择调试服务器主机或更改包位置 输入你的机器的IP和重载JS加上反应端口,例如192.168.1.10:8081

更多信息:http://facebook.github.io/react-native/docs/running-on-device-android.html

其他回答

从项目目录中运行

react-native start

输出如下:

$ react-native start
 ┌────────────────────────────────────────────────────────────────────────────┐ 
 │  Running packager on port 8081.                                            │ 
 │                                                                            │ 
 │  Keep this packager running while developing on any JS projects. Feel      │ 
 │  free to close this tab and run your own packager instance if you          │ 
 │  prefer.                                                                   │ 
 │                                                                            │ 
 │  https://github.com/facebook/react-native                                  │ 
 │                                                                            │ 
 └────────────────────────────────────────────────────────────────────────────┘ 
Looking for JS files in
   /home/user/AwesomeProject 


React packager ready.

[11:30:10 PM] <START> Building Dependency Graph
[11:30:10 PM] <START> Crawling File System
[11:30:16 PM] <END>   Crawling File System (5869ms)
[11:30:16 PM] <START> Building in-memory fs for JavaScript
[11:30:17 PM] <END>   Building in-memory fs for JavaScript (852ms)
[11:30:17 PM] <START> Building in-memory fs for Assets
[11:30:17 PM] <END>   Building in-memory fs for Assets (838ms)
[11:30:17 PM] <START> Building Haste Map
[11:30:18 PM] <START> Building (deprecated) Asset Map
[11:30:18 PM] <END>   Building (deprecated) Asset Map (220ms)
[11:30:18 PM] <END>   Building Haste Map (759ms)
[11:30:18 PM] <END>   Building Dependency Graph (8319ms)

我发现这很奇怪,但我有一个解决办法。 我注意到每隔一段时间我的项目文件夹变成只读,我不能从VS.中保存它,所以我读了一个建议,将NPM从本地用户PATH转移到系统范围的PATH全局变量,它就像一个咒语。

显然adb反向是在Android 5.0中引入的 在“adb reverse”上出现两次“错误:关闭”

我想我们必须继续kzzzf的答案

从react-native目录运行npm start对我来说很有效。

以下是在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。