1

I'm developing an Android mobile App in Java, using Firebase Crash Report and Crashlytics and I get a very weird error that seems to come from a lib and I have no idea how to investigate it more in details.

I tried to change my Gradle file by upgrading and downgrading the version of the libs but the error is still reported by Firebase CrashReporting and Crashlytics. It is reported as NullPointerException but no more details...

I checked on Stackoverflow but any solution that I've found worked in my case... Could you have a look and tell me if anyone knows how to solve it ?

Here are the details :

  • the crash reported looks like this : crash reporting
  • the only information I get is this :


 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
bpc.run

 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
bpc.run
keyboard_arrow_down
Plantage : TubeSockReader-1 #1
keyboard_arrow_up
bpc.run (:com.google.android.gms.DynamiteModulesC:56)
java.lang.Thread.run (Thread.java:818)
TubeSockReader-1 #2
keyboard_arrow_up
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor$ (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.park (LockSupport.java:158)
java.util.concurrent.FutureTask.awaitDone (FutureTask.java:421)
java.util.concurrent.FutureTask.get (FutureTask.java:163)
com.crashlytics.android.core.CrashlyticsBackgroundWorker.submitAndWait (CrashlyticsBackgroundWorker.java:43)
com.crashlytics.android.core.CrashlyticsController.handleUncaughtException (CrashlyticsController.java:311)
com.crashlytics.android.core.CrashlyticsController$6.onUncaughtException (CrashlyticsController.java:295)
com.crashlytics.android.core.CrashlyticsUncaughtExceptionHandler.uncaughtException (CrashlyticsUncaughtExceptionHandler.java:30)
com.google.firebase.crash.FirebaseCrash$zzc.uncaughtException (Unknown Source)
java.lang.ThreadGroup.uncaughtException (ThreadGroup.java:693)
java.lang.ThreadGroup.uncaughtException (ThreadGroup.java:690)
pool-5-thread-1 #3
keyboard_arrow_up
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor$ (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.park (LockSupport.java:158)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2013)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1078)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1071)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1038)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1098)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:588)
java.lang.Thread.run (Thread.java:818)
HeapTaskDaemon #4
keyboard_arrow_up
dalvik.system.VMRuntime.runHeapTasks (VMRuntime.java)
java.lang.Daemons$HeapTaskDaemon.run (Daemons.java:355)
java.lang.Thread.run (Thread.java:818)
FinalizerWatchdogDaemon #5
keyboard_arrow_up
java.lang.Thread.sleep (Thread.java)
java.lang.Thread.sleep (Thread.java:1031)
java.lang.Thread.sleep (Thread.java:985)
java.lang.Daemons$FinalizerWatchdogDaemon.sleepFor (Daemons.java:273)
java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization (Daemons.java:284)
java.lang.Daemons$FinalizerWatchdogDaemon.run (Daemons.java:232)
java.lang.Thread.run (Thread.java:818)
pool-11-thread-1 #6
keyboard_arrow_up
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor$ (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.park (LockSupport.java:158)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2013)
java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:410)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1038)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1098)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:588)
java.lang.Thread.run (Thread.java:818)
main #7
keyboard_arrow_up
android.content.res.AssetManager.openNonAssetNative (AssetManager.java)
android.content.res.AssetManager.openNonAsset (AssetManager.java:405)
android.content.res.Resources.loadDrawableForCookie (Resources.java:2633)
android.content.res.Resources.loadDrawable (Resources.java:2540)
android.content.res.TypedArray.getDrawable (TypedArray.java:870)
android.widget.ImageView.<init> (ImageView.java:152)
android.widget.ImageView.<init> (ImageView.java:140)
android.widget.ImageView.<init> (ImageView.java:136)
java.lang.reflect.Constructor.newInstance (Constructor.java)
android.view.LayoutInflater.createView (LayoutInflater.java:619)
com.android.internal.policy.PhoneLayoutInflater.onCreateView (PhoneLayoutInflater.java:58)
android.view.LayoutInflater.onCreateView (LayoutInflater.java:694)
android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:762)
android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:704)
android.view.LayoutInflater.rInflate (LayoutInflater.java:835)
android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:798)
android.view.LayoutInflater.rInflate (LayoutInflater.java:838)
android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:798)
android.view.LayoutInflater.rInflate (LayoutInflater.java:838)
android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:798)
android.view.LayoutInflater.rInflate (LayoutInflater.java:838)
android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:798)
android.view.LayoutInflater.inflate (LayoutInflater.java:515)
android.view.LayoutInflater.inflate (LayoutInflater.java:423)
android.view.LayoutInflater.inflate (LayoutInflater.java:374)
com.android.internal.policy.PhoneWindow.setContentView (PhoneWindow.java:393)
android.app.Activity.setContentView (Activity.java:2172)
com.dap.view.onboarding.OnboardingActivity.onCreate (OnboardingActivity.java:103)
android.app.Activity.performCreate (Activity.java:6251)
android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1107)
android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2369)
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2476)
android.app.ActivityThread.-wrap11 (ActivityThread.java)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1344)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:148)
android.app.ActivityThread.main (ActivityThread.java:5421)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:726)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)
OkHttp ConnectionPool #8
java.lang.Object.wait
keyboard_arrow_down
FinalizerDaemon #9
android.content.res.AssetManager$AssetInputStream.close
keyboard_arrow_down
pool-3-thread-1 #10
java.lang.Object.wait
keyboard_arrow_down
pool-9-thread-1 #11
java.lang.Object.wait
keyboard_arrow_down
Crashlytics Report Uploader #12
java.lang.Thread.sleep
keyboard_arrow_down
Queue #13
java.lang.Object.wait
keyboard_arrow_down
ReferenceQueueDaemon #14
java.lang.Object.wait
keyboard_arrow_down
Answers Events Handler1 #15
java.lang.Object.wait
keyboard_arrow_down
Measurement Worker #16
android.content.res.AssetManager.list
keyboard_arrow_down
pool-12-thread-1 #17
java.lang.Object.wait
keyboard_arrow_down
Queue #18
java.lang.Object.wait
keyboard_arrow_down
AsyncTask #1 #19
java.lang.Object.wait
keyboard_arrow_down
GoogleApiHandler #20
android.os.MessageQueue.nativePollOnce
keyboard_arrow_down
Crashlytics Exception Handler1 #21
dalvik.system.VMStack.getThreadStackTrace
keyboard_arrow_down
AsyncTask #2 #22
java.lang.Object.wait
keyboard_arrow_down
pool-13-thread-1 #23
com.android.org.conscrypt.NativeCrypto.SSL_read
keyboard_arrow_down
FirebaseDatabaseWorker #24
java.lang.Object.wait
keyboard_arrow_down
pool-8-thread-1 #25
java.lang.Object.wait
keyboard_arrow_down

and here is my gradle file :

apply plugin: 'com.android.application'

apply plugin: 'io.fabric'

android {
    compileSdkVersion 25
    buildToolsVersion '26.0.1'
    defaultConfig {
        applicationId "com.dap"
        minSdkVersion 19
        targetSdkVersion 25
        versionCode 73
        versionName "1.8.12"
        renderscriptTargetApi 19
        renderscriptSupportModeEnabled true
        testInstrumentationRunner 
 "com.android.test.runner.MultiDexTestRunner"
    multiDexEnabled true
}
buildTypes {

    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

    }
    productFlavors {
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}
repositories {
    mavenCentral()
    maven { url 'https://maven.fabric.io/public' }
}
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.google.android.gms:play-services:11.8.0'
    compile 'com.facebook.android:facebook-android-sdk:4.+'
    compile 'com.firebase:geofire-android:2.1.0'

    compile('com.crashlytics.sdk.android:crashlytics:2.7.1@aar') {
        transitive = true;
    }

    compile 'com.google.firebase:firebase-core:11.8.0'
    compile 'com.google.firebase:firebase-messaging:11.8.0'
    compile 'com.google.firebase:firebase-storage:11.8.0'
    compile 'com.google.firebase:firebase-auth:11.8.0'
    compile 'com.google.firebase:firebase-database:11.8.0'
    compile 'com.google.android.gms:play-services-location:11.8.0'
    compile 'com.baoyz.swipemenulistview:library:1.3.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4'
    compile 'com.android.support:appcompat-v7:26.1.0'
    compile 'com.android.support:support-fragment:25.2.0'
    compile 'com.android.support:support-vector-drawable:25.2.0'
    compile 'com.android.support:animated-vector-drawable:25.2.0'
    compile 'com.android.support:recyclerview-v7:25.2.0'
    compile 'com.android.support:percent:25.2.0'
    compile 'com.android.support:multidex:1.0.0'
    compile 'me.himanshusoni.chatmessageview:chat-message-view:1.0.3'
    compile 'com.makeramen:roundedimageview:2.3.0'
    compile 'com.github.bumptech.glide:glide:3.5.2'
    compile 'com.github.warkiz.widget:indicatorseekbar:1.1.2'
    testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
            details.useVersion '25.3.0'
            }
        }
    }
}
Giorgos Myrianthous
  • 36,235
  • 20
  • 134
  • 156
Ken Aki
  • 11
  • 2
  • *show us the code* – Ayush Gupta Jan 31 '18 at 15:23
  • @AyushGupta There is no indication about which part of the code make it crash and trigger this exception as you can see in the report joined to this PR. :/ This is why it is so complicated to handle... – Ken Aki Jan 31 '18 at 16:53
  • where have you logged `keyboard_arrow_down` – Ayush Gupta Jan 31 '18 at 17:18
  • where are you running this? on what device I mean – Ayush Gupta Jan 31 '18 at 17:19
  • As we can see in the report joined to this question, this error only occurs with Nexus 5X only... it happened to few of our users but I have no idea what part of my code triggers this exception... The only way to fix it is I think to find someone who had the same problem and who solved it... Thanks anyway for your help Ayush :) – Ken Aki Jan 31 '18 at 20:59
  • Actually, this may be an issue with an underlying Google libraries. See https://stackoverflow.com/questions/43009734/nullpointer-on-tolowercase-but-i-dont-use-that-method-anywhere – Ayush Gupta Feb 01 '18 at 03:14

0 Answers0