无法从Windows上的资产index.android.bundle加载脚本

Gob*_*oba 333 android react-native react-native-android

我正试图在我的设备上第一次运行我的第一个React Native项目(Android 4.2.2).

我得到:

无法从资产index.android.bundle加载脚本

我使用的命令:

  1. cd (project directory)
  2. react-native start
  3. react-native run-android

小智 914

我在遵循React Native 教程(在Linux上开发并定位Android)时遇到了同样的问题.

问题帮助我解决了以下步骤中的问题.

  1. (在项目目录中) mkdir android/app/src/main/assets
  2. react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
  3. react-native run-android

您可以通过将它们放在以下scripts部分中来自动执行上述步骤package.json:

"android-linux": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && react-native run-android"
Run Code Online (Sandbox Code Playgroud)

然后,您可以npm run android-linux每次都从命令行执行.

  • 如果我们想修改文件`index.android.js`怎么办?每次在终端我们都要插入命令`react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android .bundle --assets-dest android/app/src/main/res` (14认同)
  • React native较新版本不包含index.android.js,因此请在命令中使用App.js.:) 谢谢 (12认同)
  • 在我的情况下@ChinthakaDinadasa,它是`index.js`,而不是'App.js` (11认同)
  • 这家伙需要一尊雕像!我的意思是它不仅适用于Linux,而且适用于Windows 10 (11认同)
  • 每当我从终端重新运行它时,它都会卡在"加载依赖图..."上,这需要花费太多时间.仅供参考我使用的是ubuntu 14.04 (8认同)
  • 它说命令包无法识别.该怎么办? (3认同)
  • @idleberg你的React-Native版本是什么?,这个答案对我来说不适用于`RN 0.50.1`,在最新的RN版本中你只有`index.js`而不是`index.android.js`.对于IOS来说,它工作得很好. (2认同)
  • 我投了反对票,因为这实际上并不能解决问题,因为每次你进行轻微的更改时,你都必须重新捆绑应用程序,并且它不允许你利用 React Native 的许多功能,包括热重新加载 (2认同)
  • 所以任何人都有一个实际的解决方案来使这项工作无需每次都重做这个命令,并使用Hot Reload? (2认同)
  • 在Windows上,对我来说有用的是将'F:\ AndroidSDK\tools`和`F:\ AndroidSDK\platform-tools`添加到系统路径,因为我使用了非标准的SDK文件夹安装. (2认同)
  • 工作正常,我是新的反应本机不能理解为什么它发生.请解释,哪个是最适合初学者学习的网站,在此先感谢. (2认同)
  • 热重载菜单未显示在模拟器中。也把--dev true (2认同)

小智 121

如果您在物理设备上运行应用程序并收到此错误

unable to load script from assets index.android.bundle
Run Code Online (Sandbox Code Playgroud)

尝试运行命令:

adb reverse tcp:8081 tcp:8081
Run Code Online (Sandbox Code Playgroud)

它适用于我......

  • 为我工作.对于那些在Windows终端路径上没有android平台工具的人来说,adb可执行文件位于`C:\ Users\YourUser\AppData\Local\Android\sdk\platform-tools \` (7认同)
  • 我认为这应该是正确的答案,另一个似乎是一个黑客. (2认同)

neu*_*nap 78

我花了好几个小时试图解决这个问题.我的问题不是特定于Windows,而是特定于Android.

访问开发服务器在本地和模拟器的浏览器中工作.唯一不起作用的是访问应用程序中的开发服务器.

从Android 9.0(API级别28)开始,默认情况下禁用明文支持.

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:usesCleartextTraffic="true"
        ...>
        ...
    </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅:https: //stackoverflow.com/a/50834600/1713216

  • 谢谢.将`targetSdkVersion`升级为'28`后,这是我的问题. (8认同)

Dar*_*nia 59

使用npm版本4.3.0 react-native-cli版本2.01 react-native版本0.49.5

在项目目录中

  • mkdir android/app/src/main/assets
  • react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
  • react-native run-android

文件名已从index.android.js更改为index.js

  • 有点可悲的是,FB发布了一个新版本,而不是修复这个错误 - 这显然会影响到很多人 - 他们打破了公认的解决方案! (3认同)
  • @IgorGanapolsky JS文件是应用程序的入口点.从RN 0.49开始,只有一个文件`index.js`而不是`index.android.js`或`index.ios.js` (3认同)
  • 对于Linux:`sudo react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res` (2认同)

Mil*_*lon 40

我遇到了与真正的Android设备相同的问题.

解决方案:根据Niltoid的回答

  1. 找到您当地的IP
  2. 打开应用并摇动您的Android设备
  3. Go开发设置和> Debug Server ...
  4. 粘贴您的IP和端口; XXXX:8088"(其中X是您的本地IP)

对于Mac用户:打开您的网络首选项,在这里您将获得本地IP.


Led*_*ine 21

如果您使用的是Windows,请按以下方式运行命令,或者如果收到错误"无法找到条目文件index.android.js"

  1. mkdir android\app\src\main\assets
  2. react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

  3. react-native run-android


小智 18

您可以按照官方页面上提到的说明来解决此问题.此问题发生在真实设备上,因为JS软件包位于您的开发系统上,并且您的真实设备中的应用程序不知道它的位置.

  • 您的链接不再起作用,您应该在将来引用关键的有用部分,以便在源死后保持信息存活. (7认同)

小智 15

在mac中有同样的问题,花了2天后我终于能够得到工作了.

从那以后Emulator cellular data was turned off,我得到了unable to load script from assets index.android.bundle make sure your bundle is running.

确保您Emulator cellular data is turned on通过此包服务器能够捆绑index.android.js.希望它对处于开发阶段的人有所帮助.


Ste*_*sse 13

我已经有几个月的同样问题了.我最初使用@Jerry的解决方案,但这是一个错误的解决方案,因为它没有完全解决问题.相反,它所做的是将每个构建作为生产构建,这意味着您在应用程序中进行的任何轻微更改都意味着重建整个应用程序是必要的.

虽然这是一个时间解决方案,但从长远来看它可以工作,因为你不再能够利用React Native的热门重新加载等惊人的开发工具.

显示了一个合适的解决方案:

在您的MainApplication.java文件中,替换以下内容:

@Override
public boolean getUseDeveloperSupport() {
    return BuildConfig.DEBUG;
}
Run Code Online (Sandbox Code Playgroud)

@Override
public boolean getUseDeveloperSupport() {
    return true;
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,BuildConfig.DEBUG总是返回false并在assets目录中生成一个bundle文件.

通过手动将此设置为true,您将强制应用程序使用打包程序.这将无法在生产中使用,因此请务必将其更改为false或默认值.

别忘了跑

$ adb reverse tcp:8081 tcp:8081
Run Code Online (Sandbox Code Playgroud)


Thi*_*yen 9

操作系统:Windows

尝试上述两种方法后解决此问题的另一种方法
(因为我安装的SDK 不在DEFAULT LOCATION中,如C:\ users \"user_name"\ appdata\local\sdk)

如果您注意到该命令行已宣布:"'adb'未被识别为内部或外部命令......"

所以这就是我的结果:
示例:我在D:\ Android\sdk中安装了SDK
所以我将在系统变量中插入路径2更多行:

D:\Android\sdk\tools  
D:\Android\sdk\platform-tools  
Run Code Online (Sandbox Code Playgroud)

(如果您不知道如何编辑路径系统变量,请访问以下主题:https://android.stackexchange.com/questions/38321/what-do-i-type-in​​-path-variable-for-adb- server-to-start-from-cmd/38324)

然后我再次运行cmd: react-native run-android

它对我有用.


小智 9

1进入项目目录并检查该文件夹是否存在 android/app/src/main/assets

  1. 如果存在,那么删除这两个文件即index.android.bundleindex.android.bundle.meta
  2. 如果文件夹资产不存在,则在其中创建资产目录。

2.从您的根项目目录执行

cd android && ./gradlew clean
Run Code Online (Sandbox Code Playgroud)

3.最后,导航回到根目录并检查是否存在一个名为index.js

  • 如果只有一个文件,即index.js,则运行以下命令 react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

  • 如果有两个文件,即index.android.js和index.ios.js,则运行此文件 react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

    1. 现在运行 react-native run-android


Gur*_*ela 6

对于IOS:

在终端:

cd ios
Run Code Online (Sandbox Code Playgroud)

删除构建文件夹: rm -r build

再次运行: react-native run-ios

或者,您可以打开Finder,浏览到YOUR_PROJECT/IOS删除构建 文件夹.

然后又跑了: react-native run-ios

对于ANDROID:

在终端:

cd android/app
Run Code Online (Sandbox Code Playgroud)

删除构建文件夹: rm -r build

再次运行: react-native run-android

或者,您可以打开Finder,浏览到YOUR_PROJECT /安卓/应用程序,并删除建立 文件夹.

然后又跑了: react-native run-android

  • 适用于Android!干净又方便! (2认同)

Chh*_*tra 5

对于这个问题,我只需要运行以下命令即可解决:

react-native start
Run Code Online (Sandbox Code Playgroud)

然后

adb reverse tcp:8081 tcp:8081
Run Code Online (Sandbox Code Playgroud)

在命令行上。然后我可以运行:

react-native run-android
Run Code Online (Sandbox Code Playgroud)

因此,我不会浪费时间运行:

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
Run Code Online (Sandbox Code Playgroud)

每次。


小智 5

我在 Mac 上遇到 McAfee 阻止端口 8081 的问题,必须将其更改为 8082。

首先运行你的包服务器:

react-native start --port 8082
Run Code Online (Sandbox Code Playgroud)

打开另一个终端,照常启动 Android 应用程序:

react-native run-android
Run Code Online (Sandbox Code Playgroud)

完成后,现在重写 adb 隧道的 tcp 端口:

adb reverse tcp:8081 tcp:8082
Run Code Online (Sandbox Code Playgroud)

查看 adb tcp 隧道列表:

adb reverse --list
Run Code Online (Sandbox Code Playgroud)

您现在应该看到一条温馨的消息:

(reverse) tcp:8081 tcp:8082
Run Code Online (Sandbox Code Playgroud)

转到您的应用程序并重新加载,完成!

PS:不要更改应用程序开发设置中的任何内容,如果添加了“localhost:8082”,只需将其删除,将其留空即可。

编辑:对于所有 McAfee 受害者,如果您具有 root 访问权限,则有更简单的解决方案,只需暂时终止端口 8081 上的 McAfee 进程,根本不需要更改端口:

sudo launchctl remove com.mcafee.agent.macmn
Run Code Online (Sandbox Code Playgroud)


Mud*_*han 5

我也遇到了这个问题,因为当我在模拟器上运行项目时,它工作正常,但在真实设备上却出现了这个错误。所以我通过以下解决方案解决了这个问题

第一步:首先打开 cmd 并转到您的 SDK 管理器 Platform-tools 文件夹

cd C:Development\Android\Sdk\Platform-tools
Run Code Online (Sandbox Code Playgroud)

第二步:现在运行这个命令:

adb devices
Run Code Online (Sandbox Code Playgroud)

执行此命令后,请检查命令提示符中列出的设备

第三步:现在运行这个

adb reverse tcp:8081 tcp:8081
Run Code Online (Sandbox Code Playgroud)

现在您的设置已完成

第 4 步:转到您的项目目录并运行此命令

react-native run-android
Run Code Online (Sandbox Code Playgroud)


Har*_*rat 5

乌班图

第一次,我用react-native init project-name. 我遇到了同样的错误。所以我按照以下步骤来解决我的情况。

  1. 首先sudo chown user-name-of-pc /dev/kvm以我的情况运行。
  2. 从 Android 手机进行调试时,选择Use USB to Transfer photos (PTP)

  3. assets在项目名称/android/app/src/main 中创建文件夹

  4. 确保index.js可进入您的项目root 目录,然后在cd project-name目录后从控制台运行以下命令。

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

或者对于index.android.js 那么

react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

  1. ./studio.sh在目录中运行命令android-studio/bin。它将打开 Android Studio。

  2. 运行命令react-native run-android

在此输入图像描述


Wid*_*oud 5

确保 Metro Builder 正在运行以使您的物理设备和服务器同步

首先,运行此命令来运行 Metro builder

npm 启动

然后就可以在React Native中开始构建了

反应本机运行 Android

这次他们应该不会出错了。如果您希望代码在更改时实时重新加载。摇动您的设备,然后点击启用实时重新加载


小智 5

就我而言,我从MainApplication.java中删除了下面的行。(以前我是错误地添加的。):-

导入com.facebook.react.BuildConfig;

在清理项目并点击命令后

react-native运行Android


归档时间:

查看次数:

290537 次

最近记录:

6 年,2 月 前