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

适配Android 14(SDK34)后应用启动即崩溃问题求助

Android 14(SDK34)适配后应用启动崩溃问题解决

问题背景

适配Android 14(SDK34)后,应用构建成功但启动即崩溃,Bug Report核心报错如下:

Caused by: java.lang.RuntimeException: Requested enabled DevSupportManager, but BridgeDevSupportManager class was not found or could not be created
Caused by: java.lang.SecurityException: com.aptean.tms.pod: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
Caused by: java.lang.reflect.InvocationTargetException
Caused by: android.os.RemoteException: Remote stack trace

此前SDK配置:

kotlinVersion = "1.6.0"
buildToolsVersion = "30.0.2"
minSdkVersion = 21
compileSdkVersion = 31
targetSdkVersion = 30

已做修改:

kotlinVersion = "1.6.0"
buildToolsVersion = "34.0.0"
minSdkVersion = 23
compileSdkVersion = 34
targetSdkVersion = 34

项目依赖配置:

dependencies {
    classpath('com.android.tools.build:gradle:7.1.0-rc01')
    classpath 'com.google.gms:google-services:4.3.10'        
}

一、解决SecurityException(广播接收器属性缺失)

错误原因

Android 14(API34)强化了广播接收器的安全性要求:所有非系统专属的广播接收器,必须显式声明android:exported属性,无论Manifest静态注册还是代码动态注册的接收器,未声明都会触发该异常。

修复方案

  1. 静态注册的接收器(Manifest中)
    检查所有<receiver>标签,根据接收器用途添加android:exported属性:

    • 需接收外部应用/系统广播:设为android:exported="true"
    • 仅接收本应用内部广播:设为android:exported="false"
      示例:
    <receiver
        android:name=".MyInternalReceiver"
        android:exported="false">
        <intent-filter>
            <action android:name="com.example.APP_INTERNAL_ACTION" />
        </intent-filter>
    </receiver>
    
  2. 动态注册的接收器(代码中)
    API33+(Android 13及以上)要求调用registerReceiver()时传入导出标志,结合你的minSdkVersion=23,需做版本兼容判断:

    val receiver = MyDynamicReceiver()
    val intentFilter = IntentFilter("com.example.DYNAMIC_ACTION")
    
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        // Android 13+ 指定导出标志
        registerReceiver(receiver, intentFilter, Context.RECEIVER_NOT_EXPORTED)
    } else {
        // 低版本直接注册
        registerReceiver(receiver, intentFilter)
    }
    

二、解决RuntimeException(BridgeDevSupportManager找不到)

错误原因

该错误与React Native的DevSupport模块相关,核心是旧版gradle插件、kotlin版本或RN版本未适配Android 14环境,导致依赖类无法加载。

修复方案

  1. 升级gradle插件与kotlin版本
    旧版gradle插件(7.1.x)对SDK34支持不完善,建议升级到适配Android 14的稳定版,同步兼容kotlin版本:

    // 项目根目录build.gradle
    buildscript {
        ext {
            kotlinVersion = "1.8.22" // 与gradle 8.x兼容
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:8.1.4' // 适配SDK34的稳定版
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
            classpath 'com.google.gms:google-services:4.4.0' // 升级Google Services到最新稳定版
        }
    }
    

    同步修改gradle wrapper版本(gradle/wrapper/gradle-wrapper.properties):

    distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip
    
  2. 检查React Native版本兼容性
    若项目基于React Native,旧版本(如0.71及以下)未适配Android 14,需升级到RN 0.72及以上版本,确保DevSupport模块正常加载。

  3. 清理构建缓存
    执行以下命令清理缓存后重新构建:

    ./gradlew clean
    ./gradlew build --refresh-dependencies
    

额外注意事项

  • 排查第三方SDK:确保项目依赖的第三方库(推送、统计等)均已适配Android 14,避免因第三方库未声明android:exported导致连锁异常。
  • 区分环境测试:DevSupport模块仅在debug环境生效,若release环境仍报错,需检查release构建是否误开启调试模式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:28:19