React-native run-android命令通过在android模拟器中留下消息来终止。信息如下:

无法加载脚本。确保你要么运行Metro服务器,要么运行你的捆绑包index.android。Bundle '被正确地打包以便发布。

我做错了什么?


当前回答

对我来说,这个问题始于升级react-native。为了添加64位支持,必须进行升级。

Before:
-------- 
Environment:
Node: 10.15.0
npm: 6.9.0
Watchman: 4.9.0
Xcode: Not Found
Android Studio: 3.4 AI-183.6156.11.34.5692245

Packages: (wanted => installed)
react: 16.0.0-alpha.12 => 16.0.0-alpha.12
react-native: ~0.55.2 => 0.55.4
react-native-cli: 2.0.1

After:
------
info 
React Native Environment Info:
Binaries:
Node: 10.15.0
npm: 6.9.0
Watchman: 4.9.0
SDKs:
Android SDK:
API Levels: 23, 26, 27, 28
Build Tools: 27.0.3, 28.0.3
System Images: android-28 | Google APIs Intel x86 Atom
IDEs:
Android Studio: 3.4 AI-183.6156.11.34.5692245
Xcode: /undefined - /usr/bin/xcodebuild
npmPackages:
react: ^16.8.6 => 16.9.0 
react-native: 0.59.9 => 0.59.9 
npmGlobalPackages:
create-react-native-app: 2.0.2
react-native-cli: 2.0.1

另外,我为升级做了一个重要的改变是在../android/build/build.gradle中

android {
    ...
    defaultConfig {
        ...
        targetSdkVersion 28
        ...
    }
    ...
}

当我试图将构建(.apk)上传到goole play控制台时,我不得不将targetSdkVersion从27更改为28。 我没有意识到这是导致我上述错误的根本原因。@tom和@tinmarfrutos的立即回答是完全有道理的。

我通过添加android:usesCleartextTraffic="true"到我的android/app/src/debug/AndroidManifest.xml解决了这个问题

其他回答

你还没有启动捆扎机呢。在项目的根目录下运行npm start或react-native start,然后再执行react-native Run -android。

我的解决方案如下:

启动Metro服务器

$ react-native start

开始安卓

$ react-native run-android

如果看到错误提示“端口8081已被使用”,那么您可以终止该进程并重新运行

$ react-native start

参见React Native故障诊断页面。

在数小时寻找答案之后。解决方案是将节点降级到版本12.4。

在我的例子中,我意识到这个错误只发生在节点版本12.6的react native 0.60版本中。

试试这个命令

~/Library/Android/sdk/platform-tools/adb -s emulator-5554 reverse tcp:8081 tcp:8081

在重命名我的android包ID后,我在React Native v0.69中遇到了这个问题。

将/android/app/src/debug/java/old_package_name重命名为 /android/app/src/debug/java/new_package_name,我不小心将AndroidManifest.xml的调试版本移动到新创建的路径中。

在把它移回/android/app/src/debug/后,yarn android又可以正常工作了,没有做任何其他的解决方案。有趣的是,这个错误导致了这个错误,所以如果它发生在其他人身上,检查确保你的文件在他们应该在的地方。