Android无法加载JS捆绑包。

15 浏览
0 Comments

Android无法加载JS捆绑包。

我想在我的Nexus5(Android 5.1.1)上运行AwesomeProject。

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

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

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

更新

要使用本地服务器运行,请在您的React Native项目根目录下运行以下命令

  1. react-native start > /dev/null 2>&1 &
  2. adb reverse tcp:8081 tcp:8081

请查看dsissitka的回答以获取更多详细信息。

要在没有服务器的情况下运行,请通过以下方式将jsfile捆绑到apk中:

  1. android/app/src/main下创建一个资产文件夹
  2. curl \"http://localhost:8081/index.android.bundle?platform=android\" -o \"android/app/src/main/assets/index.android.bundle\"

请查看kzzzf的回答以获取更多详细信息。

admin 更改状态以发布 2023年5月24日
0
0 Comments

以下是对于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。您可以在这里查看为什么会发生这种情况:

https://github.com/facebook/react-native/blob/42eb5464fd8a65ed84b799de5d4dc225349449be/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java#L116-L137

如果您的RN应用程序检测到您正在使用Genymotion或模拟器,则尝试从GENYMOTION_LOCALHOST(10.0.3.2)或EMULATOR_LOCALHOST(10.0.2.2)获取JavaScript。否则,它假定您正在使用设备,并尝试从DEVICE_LOCALHOST(localhost)获取JavaScript。
问题在于dev服务器运行在您工作站的localhost上,而不是设备的localhost,因此为了使其工作,您需要做以下两件事之一:

0
0 Comments

将JS文件捆绑到你的apk中,同时让你的服务器运行(react-native start),下载捆绑文件到你应用的assets目录:

curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"

在接下来的发布版本(0.12)中,我们将修复react-native bundle命令,让其适用于android项目。

0