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

如何通过Android Studio Logcat定位Cordova Chromecast插件崩溃源文件

解读堆栈跟踪并定位Cordova Chromecast插件崩溃问题

崩溃核心原因

从Logcat堆栈跟踪可直接锁定问题:

java.lang.IllegalArgumentException: : Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.

你的应用目标SDK为Android 12(API 31)及以上,而创建PendingIntent时必须指定FLAG_IMMUTABLE或FLAG_MUTABLE标志,当前代码未满足该要求,触发崩溃。

调用链溯源

堆栈的调用路径明确指向问题触发点:

  1. 异常从android.app.PendingIntent.checkFlags抛出,说明此处检测到PendingIntent未设置强制要求的标志
  2. 调用往上追溯到com.google.android.gms.internal.cast.zzah.zza方法,该方法调用PendingIntent.getBroadcast时未添加合规标志
  3. 该调用是在CastSession$zzb.onResult中触发的,也就是Chromecast的会话处理逻辑中出现了问题

定位可编辑文件的步骤

由于com.google.android.gms.internal.cast.zzah是Google Play Services Cast库的编译后字节码(显示Unknown Source说明无源码),无法直接编辑,你需要从以下方向定位可修改的文件:

  • 检查并升级Chromecast插件版本
    进入项目的plugins目录,找到Chromecast插件文件夹(通常命名为cordova-plugin-chromecast),查看package.json或plugin.xml确认版本。如果是旧版本,直接升级到最新版,新版本大概率已适配Android 12+的PendingIntent要求。

  • 修改插件的Android原生代码
    进入插件的src/android目录,搜索所有调用PendingIntent.getBroadcast的代码。如果找到相关代码,添加FLAG_IMMUTABLE(推荐)或FLAG_MUTABLE标志,示例修改:

    // 原代码
    PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    // 修改后
    PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
    
  • 强制升级Google Play Services Cast库版本
    如果插件依赖的play-services-cast版本过低,在项目的platforms/android/build.gradle中添加依赖强制升级:

    dependencies {
        implementation 'com.google.android.gms:play-services-cast:21.3.0'
    }
    

    新版本的play-services-cast已内置PendingIntent的正确标志设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 16:32:50