0

我注意到一份关于生产的奇怪崩溃报告。我试图查找它,但我没有在源代码中找到任何东西。对我来说,这些设备的供应商似乎只是在他们的 SDK 中修改了一些东西。

但它发生在支持库中。那么这怎么会发生呢?

堆栈跟踪:

Fatal Exception: java.lang.NoSuchMethodError: No interface method build()Landroid/app/Notification; in class Landroid/support/v4/app/NotificationBuilderWithBuilderAccessor; or its super classes (declaration of 'android.support.v4.app.NotificationBuilderWithBuilderAccessor' appears in /data/app/com.myapp-1/base.apk)
   at android.support.v4.app.NotificationCompat$BuilderExtender.build(NotificationCompat.java:469)
   at android.support.v4.app.NotificationCompat$NotificationCompatImplApi21.build(NotificationCompat.java:768)
   at android.support.v4.app.NotificationCompat$Builder.build(NotificationCompat.java:1559)
   at com.myapp.NotificationListener$MyNotification.updateText(MyNotification.java:106)

发生的代码:

Builder mBuiler = new NotificationCompat.Builder(mContext);

...

private Notification updateText(String title, String message) {
        return mBuidler
                .setContentTitle(title)
                .setContentText(message)
                .setStyle(new BigTextStyle(mBuidler)
                        .bigText(message))
                .build();
}

主要在以下设备上复制:

  • 三星 SM-G925F
  • 三星 SM-G935F
  • 三星 GT-I9300
  • 一些联想设备
  • Solarin 手机(不管它是什么)

操作系统:

  • 安卓 6 - 95%
  • 安卓 4 - 3%
  • 安卓 5 - 2%

我有数以百万计的用户,但只有少数人遇到了这次崩溃。

4

2 回答 2

2

如果您更新您的 androidSDK但仍使用support-v4属于旧版本的文件,则会发生此错误。您可以检查您的build.gradle(如果您使用的是 android studio)以查看是否根据您最新的 SDK 更新设置了app-compact库或库。support-v4此外,您的 Gradle 依赖项文件之一可能使用的是旧版本的support-v4.

如果您正在使用eclipse或包含其他环境support-v4.jar,只需将其替换为您的 SDK 文件夹中的最新环境即可。

于 2016-12-20T13:20:04.653 回答
-1

请使用以下代码:

NotificationCompat.Builder mBuidler = new NotificationCompat.Builder(this);

您的退货方式:

private NotificationCompat.Builder updateText(String title, String message) {
    return mBuidler
            .setContentTitle(title)
            .setContentText(message)
            .setStyle(new NotificationCompat.BigTextStyle().bigText(message))
            .build();
}
于 2016-12-20T12:57:58.330 回答