1、问题描述
创建一个 React Native 项目后,用 Android Studio 运行 android 项目,结果跑出异常:
unable to load script from assets ‘index.android bundle’ ,make sure your bundle is packaged correctly or youu’re runing a packager server
2、解决方法
1、在android/app/src/main目录下新建一个assets文件夹
- 可在 Android Studio 中建立
- 可在终端中执行以下命令建立:
mkdir android/app/src/main/assets
2、在项目的根目录下,执行如下命令:
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
执行此命令后,在终端中抛出异常:
没有找到 index.adnroid.js 文件。
原因:
React Native 0.43 以上版本的目录结构已经变了,0.43以上已经将 index.adnroid.js 和 index.ios.js 合并为 index.js
React Native 0.43 版本以下项目目录结构:
React Native 0.43 版本以上项目目录结构:
所以:
React Native 0.43 版本以下,执行命令:
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 0.43 版本以上,执行命令:
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
执行成功后,会在 android/app/src/main/assets 目录下产生 index.android.bundle 文件
在 Android Studio 上再次运行,即可成功
3、总结
index.android.bundle 是用来调用原生控件的 js 脚本,每次改变了 index.android.js 或 index.js 时,都需要上面的代码片段,来及时更新 index.android.bundle,然后打包才可以把新的 index.android.js 或 index.js 应用上,所以当没有 index.android.bundle 文件时,Android Studio 上是无法运行 android 项目的。