3

我最近更新了我的应用程序以针对 API 31,并注意到 Google Play 控制台中报告了一个新的崩溃,这对我来说毫无意义。

在 SO 和其他地方有许多答案导致的崩溃exception.class.missing._Unknown_: Strongly consider using FLAG_IMMUTABLE...,但是从我读到的内容来看,这个崩溃应该只与使用有关PendingIntent

崩溃报告是有道理的,因为我只在 Android 12 (API 31) 上看到了崩溃报告,因为这是引入显式 IMMUTABLE 或 MUTABLE 要求的地方,但我搜索了整个项目,但找不到任何使用PendingIntent.

崩溃的时间似乎与我发送的 FCM 推送通知相关,该通知再次与来自的崩溃相关PendingIntent,但如果我在源代码中找不到它,那么我该如何明确设置FLAG_IMMUTABLE

我的项目依赖项如下:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.appcompat:appcompat:1.4.0-beta01'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'com.google.code.gson:gson:2.8.6'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.1'

    // billing for in-app purchases
    implementation 'com.android.billingclient:billing:3.0.2' 

    // For in-app review flow
    implementation 'com.google.android.play:core:1.10.2'

    // Import the Firebase BoM
    implementation platform('com.google.firebase:firebase-bom:26.1.1')
    implementation 'com.google.firebase:firebase-messaging'

}
4

1 回答 1

1

这是 Admob 的一个已知问题,如https://developers.google.com/admob/android/quick-start所述

从 play-services-ads 中提取的 androidx.work:work-runtime:2.1.0 在使用 PendingIntent 而没有 FLAG_IMMUTABLE 或 FLAG_MUTABLE 时存在错误,并且在针对 S+ 的应用程序中会失败。

在 app/build-gradle 文件中也提到了解决方案:

dependencies {
      implementation 'com.google.android.gms:play-services-ads:20.4.0'
    
      // For apps targeting Android 12, add WorkManager dependency.
      constraints {
        implementation('androidx.work:work-runtime:2.7.0') {
            because '''androidx.work:work-runtime:2.1.0 pulled from play-services-ads
                       has a bug using PendingIntent without FLAG_IMMUTABLE or
                       FLAG_MUTABLE and will fail in apps targeting S+.'''
        }
      }
    }
于 2021-11-10T06:27:14.330 回答