9

I'm new in react-native. I have run react native project on Ubuntu by using 'react-native run-android' command. And I got the error on emulator "Unable to load script from assets 'index.android.bundle'.Make sure your bundle is packaged correctly or you are running a package server."

5

13 Answers 13

23

I also got this and I resolved this using following commands in your project directory:

$ mkdir android/app/src/main/assets

$ 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

$ react-native run-android
3
  • 2
    I tried with React Native version 3.x and changing index.android.js with index.js works.
    – Drake
    Commented Nov 28, 2017 at 9:00
  • which react-native version you talk about. you made it up yourself? Commented Aug 26, 2018 at 11:30
  • i have a same issue and this solution does not work for me. it seems that after i added babel-plugin-module-resolver to my project this happens. (if it helps i have react-native-navigation from wix company in my project)
    – Emad Bayat
    Commented Oct 10, 2018 at 12:40
16

Using npm version 4.3.0 react-native-cli version 2.01 react-native version 0.49.5

In project directory,

  • 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

The file name has changed from index.android.js to index.js

1
  • 1
    This really helped me with react native 0.70.6 was crashing in release mode. spent hours till find this.
    – A.A.
    Commented Jan 5, 2023 at 21:22
10

In my case (embedding React Native as a new Activity into an existing Android Code Base), the problem was Android Studio had auto-imported the wrong BuildConfig.

Wrong: import com.facebook.react.BuildConfig;

Right: import com.mywebdomain.myapp.BuildConfig;

This would apply to the wherever you are housing this block of code:

mReactRootView = new ReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
        .setApplication(getApplication())
        .setBundleAssetName("index.android.bundle")
        .setJSMainModulePath("index")
        .addPackage(new MainReactPackage())
        .setUseDeveloperSupport(BuildConfig.DEBUG)
        .setInitialLifecycleState(LifecycleState.RESUMED)
        .build();
2
  • 3
    Can I buy you a beer? Commented Apr 18, 2019 at 20:32
  • 1
    same here...been scratched my head since this morning and this was the issue... Commented Apr 9, 2022 at 11:26
2

This helped me resolve the problem in following steps.

  • If not than (in project directory) mkdir android/app/src/main/assets

  • 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

  • react-native run-android

2

For this error :

unable to load script from assets 'index.android.bundle'

1) Check for "assets" folder at :

mkdir android\app\src\main\assets

If the folder is not available, create a folder with name "assets" manually. and execute the Curl command in terminal.

2). Curl command:

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

It will create the "index.android.bundle" file in assets folder automatically and resolved the issue.

3) Then:

 react-native run-android
2

Ubuntu

first time, I created new app with react-native init project-name. I got the same error. so i do the following steps to resolve this in my case.

  1. Firstly run sudo chown user-name-of-pc /dev/kvm in my case.
  2. While debugging from your Android phone, select Use USB to Transfer photos (PTP).
  3. Create Folder assets in 'project-name/android/app/src/main'.
  4. make sure index.js be avaiable into your project root directory and then run below command from console after cd project-name directory.

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

or for index.android.js then

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. run command ./studio.sh in android-studio/bin directory. It will opens up Android Studio.
  2. run command react-native run-android.
1

It seems to be a problem in the newest version of React Native (0.46). Using the previous version seems to solve the problem react-native init name --version [email protected] and removes the error when running react-native run-android.

Edit: It is now fixed in version 0.46.1.

1

In my case the problem was in this row in the React Activity file:

mReactInstanceManager = ReactInstanceManager.builder()
...
   .setUseDeveloperSupport(BuildConfig.DEBUG)
...

BuildConfig.DEBUG must be set to true, while in my case it was false

0
1

For Windows user only:

  1. Copy the path of adb location and set into PATH in your system variable,
  2. Open project structure and delete node module folder.
  3. Edit your project package.JSON file change react-native version "react-native": "0.55.2", and babel "babel-preset-react-native": "4", after that run npm install
  4. Restart cmd and js server and run your react native project by react-native run-android
1

I was stuck in the same problem for hours and what solved my issue is this : Create "assets" folder in main directory of project as well as in "newreactproject\android\app\src\main". Then put this script in package.json "android-android": "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"
like:

"name": "newreactproject",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "android-android": "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",
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  }
0

I was getting this error too. But adb reverseworked for me

0

i'm using ubuntu 18.04 LTS ,react-native: 0.55.2. In my case here are few solutions for the problem .

  1. in the terminal before you run npm run android type npm start. you might see an error ERROR Metro Bundler can't listen on port 8081. this occurs because there might be a process which is already running

    Solution- type sudo lsof -i :8081

    you will see an output similar to this

    **COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

     node    5670 tasif   17u  IPv6  80997      0t0  TCP *:tproxy (LISTEN)**
    

    type kill -9 (PID number)then run npm android.

  2. if it still doesnt work type again npm start . you might see this error

    ERROR ENOSPC: no space left on device, watch'....../......./.....'

    solution :

    $ sudo sysctl fs.inotify.max_user_watches=524288

    $ sudo sysctl -p

    then type npm run android.

    please go to this link to see different solutions and more details https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers#the-technical-details

  3. delete the emulator and build it again. kill the recent terminal and then build emulator and start again.

-1

I discovered a solution suggested in the thread at https://github.com/facebook/react-native/issues/15388

It is to manually set the Debug server host & port for device setting for the app on the phone.

Step by Step to eject and run a CRNA on Android

In terminal:

  1. create-react-native-app myApp
  2. cd myApp
  3. yarn run eject (I used default options "regular React Native project")
  4. react-native run-android

(now the app should be compiled and installed on the phone)

On phone:

  1. Run the app (expect to see the red error screen! - click Dismiss button in bottom left)
  2. Shake the phone and pick Dev Settings
  3. Pick Debug server host & port for device and set to 192.168.x.x:8081 (make it your actual LAN IP of course)
  4. Restart app on phone and you should see green bar at the top "Loading from 192.168.x.x:8081..."
  5. You should also see some "Bundling index.js" action in the Metro Bundler (that opened when running react-native run-android)
  6. After the bundle is finished, the app should be running on your Android device!

Live Reload (when source files change) also works - just shake the phone and touch "Enable Live Reload"

You can run the project from Android Studio, but you need to first start the Metro Bundler with the command react-native start in the CRNA project root.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.