【问题标题】:NullPointer on toLowerCase but I don't use that method anywheretoLowerCase 上的 NullPointer 但我不在任何地方使用该方法
【发布时间】:2017-08-17 23:54:11
【问题描述】:

我在 Firebase 崩溃报告中收到以下崩溃转储:

Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase(java.util.Locale)' on a null object reference
bnp.run (bnp.java:56)
java.lang.Thread.run (Thread.java:818)

问题是我在项目的任何地方都没有使用 String.toLowerCase() 方法。在 Android Studio 中,我对该方法进行了 Edit->Find In Path 并没有得到任何结果,但是,如果我在库中搜索,它确实出现了 100 多次。但我在任何地方都找不到“bnp.java”。

感谢您的帮助!

编辑:之前的崩溃报告没有受到 proguard 的影响,并显示它可能是由于 google-play-services 或 Firebase 造成的。我只在我的应用中使用 gms:play-services-places 和 gms:play-services-auth 以及许多 Firebase 依赖项。

Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase(java.util.Locale)' on a null object reference
bnp.run (:com.google.android.gms.DynamiteModulesC:56)
java.lang.Thread.run (Thread.java:818)

【问题讨论】:

  • 这是一个 google lib 崩溃 code.google.com/p/android/issues/detail?id=233549
  • 继续并将其发布在 aosp 问题跟踪器上。这些崩溃经常发生。小问题。
  • 这里有完全相同的问题。 +1 关于这个问题
  • @PeterKeefe,导致此错误的移动设备是什么?我注意到这个错误只发生在我的 Nexus 5X 设备中(根据崩溃报告)。
  • @Peter Keefe 我看到了同样的崩溃,到目前为止只有 Nexus 5X。请确认您的 proguard 修复是否有任何作用。

标签: android firebase nullpointerexception google-play-services


【解决方案1】:

我还不能发表评论,所以我会发布这个作为可能的解决方案,但这似乎是谷歌方面的一个错误。多人在完全相同的设备上与完全相同的区域报告此崩溃。因此,谷歌似乎在虚拟或自动化设备上运行您的应用程序,然后该设备崩溃。该设备似乎是 Nexus 5x,具有美国本土和 API 级别 23。

来源:https://code.google.com/p/android/issues/detail?id=233549

【讨论】:

  • 您说的很有道理,我实际上不确定它是否是虚拟设备,这是我基于设备完全相同(包括充电) 每次。我将更新我的答案以反映这一点。
  • @TeunVos,很有可能。我的应用仅部署在我的国家/地区,但我发现崩溃源自 Nexus 5x 上的美国。
  • 我今天收到这个错误,Nexus 5X API 23,有什么消息或解决方案吗?
  • 我很确定这只是 Google 自动化测试,因为我进行了分阶段发布,除了那几个之外,我没有看到任何新的崩溃报告。
  • 在我们的例子中,100% 的设备都有这个例外,这也增加了它是自动化测试设备的假设的有效性。他们的一些测试设备还会在未来的日期启动应用程序,在接下来的 20-30 天内每天启动一次
【解决方案2】:

当我的代码尝试使用无效的 URL 创建与某些 amqp 服务的连接时,我收到了这个错误。一旦我将它修改为正确的值,异常就消失了。所以检查你的代码。

【讨论】:

    【解决方案3】:

    我的应用遇到了类似的问题。

    在 Stock android 设备 (Mi A1) 中启动时,应用程序崩溃并显示“不断停止弹出”。 Fabric 中的 Crashlytics 将其报告为

    Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase(java.util.Locale)' on a null object reference
       at bfx.run(:com.google.android.gms.dynamite_dynamitemodulesc@13452060@13.4.52 (040708-202483333):80)
       at java.lang.Thread.run(Thread.java:818)
    

    但是,当我在 Google Play 控制台中查看发布管理的发布前报告时,它显示该应用因完全不同的原因而在 Pixel 和 Pixel 2 上崩溃。显示的问题是

    FATAL EXCEPTION: main Process: in.quickall.quickall, PID: 8345
    java.lang.RuntimeException: Unable to start activity ComponentInfo{in.quickall.quickall/in.quickall.quickall.Main.MainActivity}: android.content.res.Resources$NotFoundException: Drawable in.quickall.quickall:drawable/splash_screen with resource ID #0x7f0700c0
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
    

    问题是从 APK 版本开始的,我实现了代码(如下所示)来消除启动时的白屏。

    <style name="SplashTheme" parent="AppTheme">
        <item name="android:windowBackground">@drawable/splash_screen</item>
    </style>
    

    我删除了这段代码,现在发布前报告显示它在 Pixel 设备中运行良好。

    现在应用可以正常启动,但启动时必须有白屏。

    【讨论】:

      猜你喜欢
      • 2021-04-17
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多