Android无法加载JS捆绑包。
Android无法加载JS捆绑包。
我想在我的Nexus5(Android 5.1.1)上运行AwesomeProject。
我能够构建项目并将其安装到设备上。但是,当我运行它时,我会得到一个红色屏幕,上面写着:
无法下载JS bundle。您是否忘记启动开发服务器或连接设备?
在React Native iOS中,我可以选择离线加载jsbundle。如何在Android上做同样的事情?(或者至少,我在哪里可以配置服务器地址?)
更新
要使用本地服务器运行,请在您的React Native项目根目录下运行以下命令
react-native start > /dev/null 2>&1 &
adb reverse tcp:8081 tcp:8081
请查看dsissitka的回答以获取更多详细信息。
要在没有服务器的情况下运行,请通过以下方式将jsfile捆绑到apk中:
- 在
android/app/src/main
下创建一个资产文件夹 curl \"http://localhost:8081/index.android.bundle?platform=android\" -o \"android/app/src/main/assets/index.android.bundle\"
请查看kzzzf的回答以获取更多详细信息。
admin 更改状态以发布 2023年5月24日
以下是对于Ubuntu 14.04,它让我的应用能够正常工作:
cd (App Dir) react-native start > /dev/null 2>&1 & adb reverse tcp:8081 tcp:8081
更新:请参见
更新2:@scgough,我们得到了这个错误,因为React Native(RN)无法从我们工作站上运行的dev服务器中获取JavaScript。您可以在这里查看为什么会发生这种情况:
如果您的RN应用程序检测到您正在使用Genymotion或模拟器,则尝试从GENYMOTION_LOCALHOST(10.0.3.2)或EMULATOR_LOCALHOST(10.0.2.2)获取JavaScript。否则,它假定您正在使用设备,并尝试从DEVICE_LOCALHOST(localhost)获取JavaScript。
问题在于dev服务器运行在您工作站的localhost上,而不是设备的localhost,因此为了使其工作,您需要做以下两件事之一:
- 将(设备的localhost):8081 / tcp的流量转发到(工作站localhost):8081 / tcp。这就是adb命令所做的。
- 告诉您的RN应用程序可以在哪里找到dev服务器。