在使用toLowerCase方法的地方出现了空指针异常,但我并没有在任何地方使用该方法

63

我在 Firebase Crash Reports 中收到以下崩溃转储:

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中,我执行了“编辑”->“路径中查找”该方法,但没有找到结果,但是如果在库中搜索,则会出现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)

7
这是一个Google库崩溃问题。详情请参考https://code.google.com/p/android/issues/detail?id=233549。 - TWL
2
这里也遇到了完全相同的问题。对此问题点赞。 - Travis Christian
2
@PeterKeefe,是哪个移动设备导致了这个错误?我注意到这个错误只在Nexus 5X设备上发生(根据崩溃报告)。 - Angel Koh
1
我相信这个错误只有在我启用了proguard之后才开始出现,所以我将在下一个更新中忽略proguard规则中的gms,并报告任何差异。不幸的是,我没有5x来测试,所以我无法重现这个错误,除非模拟器可以解决问题。 - Peter Keefe
3
@Peter Keefe,我也遇到同样的问题,只在Nexus 5X上出现。请确认你的proguard修复是否有任何作用。 - Peter
显示剩余14条评论
3个回答

53

我目前还不能发表评论,因此我将此作为可能的解决方案发布,但这似乎是谷歌方面的错误。有多个人报告说在完全相同的设备及其所在地区上出现了崩溃的情况。因此,看起来谷歌在虚拟或自动化设备上运行您的应用程序,然后该设备崩溃了。该设备似乎是具有本地us-US和API级别23的Nexus 5x。

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


1
你说得很有道理,我其实不确定它是否是一个虚拟设备,这只是我基于每次设备都完全相同(包括充电)的事实所做出的假设。我会更新我的答案以反映这一点。 - Teun Vos
1
@TeunVos,很有可能。我的应用程序只部署在我的国家,但我看到崩溃源自Nexus 5x的美国。 - Angel Koh
5
今天我遇到了这个错误,Nexus 5X API 23,有什么最新消息或解决方案吗? - ysfcyln
4
我相当确定这只是Google自动化测试,因为我进行了分阶段的发布,除了那几个报告外,我没有看到任何新的崩溃报告。 - casolorz
1
在我们的情况下,所有出现这种异常的设备都已经被Root了,这也进一步证实了这是一种自动化测试设备的假设。他们的一些测试设备还会在未来的日期启动应用程序,每天启动一次,持续大约20-30天左右。 - arberg
显示剩余11条评论

0

当我的代码尝试使用无效的URL创建到某个AMQP服务的连接时,我遇到了这个错误。一旦我将其修改为正确的值,异常就消失了。因此,请检查您的代码。


-1

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

在安装了原生Android系统的设备(如小米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>

我移除了这段代码,现在 Pre-launch 报告显示 Pixel 设备上运行良好。

现在应用程序可以正确启动,但必须在启动时显示白屏。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接