You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native Android发布版启动崩溃:提示Metro未运行

Android Release包启动闪退(提示Metro未运行)问题排查

问题背景

已生成密钥并配置Android签名与构建类型如下:

android {
...
signingConfigs {
    release {
        if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
            storeFile file(MYAPP_UPLOAD_STORE_FILE)
            storePassword MYAPP_UPLOAD_STORE_PASSWORD
            keyAlias MYAPP_UPLOAD_KEY_ALIAS
            keyPassword MYAPP_UPLOAD_KEY_PASSWORD
        }
    }
}

buildTypes {
    release {
        signingConfig signingConfigs.release
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
    }
}

执行命令cd android && ./gradlew bundleRelease生成发布包,上传Google Play安装后启动闪退,日志显示Metro未运行;使用npx react-native run-android --variant=release运行也出现相同错误,iOS端无此问题。

可能的解决方案

1. 确认离线Bundle是否正确打包到安装包中

Release模式下应用应使用离线bundle,不依赖Metro服务,闪退提示Metro未运行通常是因为安装包未包含预打包的bundle文件。

  • 手动生成离线bundle并重新构建:
    执行以下命令生成bundle和资源文件:
    npx 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/
    
    然后重新执行构建命令:
    cd android && ./gradlew clean bundleRelease
    
  • 检查android/app/build.gradle中是否配置了自动生成bundle的逻辑,确保release构建会自动包含bundle。

2. 检查ProGuard配置是否破坏了React Native核心代码

如果开启了minifyEnabled,ProGuard可能误删React Native必要类,导致bundle无法加载。在proguard-rules.pro中添加以下规则:

# React Native核心类保护
-keep class com.facebook.react.** { *; }
-keep class com.facebook.soloader.** { *; }
-keep class com.facebook.jni.** { *; }

# 避免不必要的警告
-dontwarn com.facebook.react.**
-dontwarn com.facebook.soloader.**

添加后重新构建release包。

3. 检查Release构建的debuggable配置

确保buildTypes.release中debuggable设置为false(默认值为false,若手动修改过可能导致问题),避免应用尝试连接Metro:

buildTypes {
    release {
        debuggable false
        signingConfig signingConfigs.release
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
    }
}

4. 查看完整崩溃日志

除了"Metro未运行"的提示,通过adb logcat *:E命令获取完整错误日志,排查是否存在MissingResourceException或ClassNotFoundException等更具体的异常,精准定位问题。


内容的提问来源于stack exchange,提问作者Diefair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 16:35:21