React Native安卓启动报错:BridgeDevSupportManager类未找到或无法创建
React Native Android启动崩溃:BridgeDevSupportManager类找不到问题解决
问题描述
我正在构建一个2020年创建的React Native应用,iOS设备上运行正常,但Android设备安装启动时崩溃,报错信息如下:
java.lang.RuntimeException: Unable to create application com.app.MainApplication: java.lang.RuntimeException: Requested enabled DevSupportManager, but BridgeDevSupportManager class was not found or could not be created at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7053) at android.app.ActivityThread.access$1800(ActivityThread.java:254) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2184) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:233) at android.os.Looper.loop(Looper.java:344) at android.app.ActivityThread.main(ActivityThread.java:8212) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1034)
补充信息
React版本:
"react": "16.14", "react-native": "0.62.0"
Android配置:
buildToolsVersion = "33.0.2" minSdkVersion = 21 compileSdkVersion = 33 targetSdkVersion = 33 androidXCore = "1.5.0" kotlin_version = '1.6.10'
解决方案
1. 确认开发者支持的启用逻辑
在MainApplication.java中,检查getUseDeveloperSupport()方法的返回值:
- 生产构建必须返回
false,否则会因调试代码被移除而找不到BridgeDevSupportManager - 开发环境返回
BuildConfig.DEBUG即可,确保只在调试模式启用开发者支持
示例代码:
@Override public boolean getUseDeveloperSupport() { return BuildConfig.DEBUG; }
2. 降低Android SDK版本适配RN 0.62.0
RN 0.62.0官方推荐的compileSdkVersion为29,当前使用的33版本过高,存在API兼容性问题。修改android/build.gradle中的配置:
buildToolsVersion = "29.0.3" compileSdkVersion = 29 targetSdkVersion = 29
修改后执行清理构建命令:
cd android && ./gradlew clean && cd ..
3. 修复依赖完整性
删除现有依赖并重新安装,确保RN相关依赖未损坏:
rm -rf node_modules && npm install cd android && ./gradlew clean && cd ..
4. 检查MainApplication初始化代码
确保MainApplication正确继承ReactApplication,且createReactNativeHost()方法实现正确:
@Override protected ReactNativeHost createReactNativeHost() { return new ReactNativeHost(this) { @Override public boolean getUseDeveloperSupport() { return BuildConfig.DEBUG; } @Override protected List<ReactPackage> getPackages() { List<ReactPackage> packages = new PackageList(this).getPackages(); // 添加自定义包请在此处处理 return packages; } @Override protected String getJSMainModuleName() { return "index"; } }; }
内容的提问来源于stack exchange,提问作者Olkunmustafa
相关产品推荐
相关产品推荐

