“Null object reference” exceptions on Android 14 in a QT app

When I switched to QT 6.7.2 and set QT_ANDROID_TARGET_SDK_VERSION "34" (that is Android 14) my QT app started to crash with the following stack traces:

On google Pixel 5 64-bit only 1080x2340 Android 14 (SDK 34) arm64-v8a:

Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
  at android.os.Parcel.createExceptionOrNull (Parcel.java:3189)
  at android.os.Parcel.createException (Parcel.java:3167)
  at android.os.Parcel.readException (Parcel.java:3150)
  at android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:202)
  at android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:154)
  at android.content.ContentProviderProxy.call (ContentProviderNative.java:764)
  at android.content.ContentResolver.call (ContentResolver.java:2466)
  at android.content.ContentResolver.call (ContentResolver.java:2446)
  at ekfr.a (:com.google.android.gms@242013038@24.20.13 (190400-633713831):29)
  at com.google.android.gms.wallet.intentoperation.setupwizard.PaymentsSetupWizardAccountChangeIntentOperation.onHandleIntent (:com.google.android.gms@242013038@24.20.13 (190400-633713831):252)
  at com.google.android.chimera.IntentOperation.onHandleIntent (:com.google.android.gms@242013038@24.20.13 (190400-633713831):2)
  at ajdw.onHandleIntent (:com.google.android.gms@242013038@24.20.13 (190400-633713831):8)
  at pbh.run (:com.google.android.gms@242013038@24.20.13 (190400-633713831):70)
  at pbg.run (:com.google.android.gms@242013038@24.20.13 (190400-633713831):152)
  at elbx.run (:com.google.android.gms@242013038@24.20.13 (190400-633713831):21)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:644)
  at java.lang.Thread.run (Thread.java:1012)

On google Pixel 8 1080x2400 Android 14 (SDK 34) 8,192 MB arm64-v8a:

Exception java.lang.RuntimeException: Unable to start activity ComponentInfo{net.geographx.LinesGame/net.geographx.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.ViewParent org.qtproject.qt.android.QtRootLayout.getParent()' on a null object reference
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3782)
  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3922)
  at android.app.ActivityThread.handleRelaunchActivityInner (ActivityThread.java:5946)
  at android.app.ActivityThread.handleRelaunchActivity (ActivityThread.java:5842)
  at android.app.servertransaction.ActivityRelaunchItem.execute (ActivityRelaunchItem.java:76)
  at android.app.servertransaction.ActivityTransactionItem.execute (ActivityTransactionItem.java:45)
  at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:139)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:96)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2443)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loopOnce (Looper.java:205)
  at android.os.Looper.loop (Looper.java:294)
  at android.app.ActivityThread.main (ActivityThread.java:8177)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:552)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:971)
Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.ViewParent org.qtproject.qt.android.QtRootLayout.getParent()' on a null object reference
  at org.qtproject.qt.android.QtActivityDelegate.updateActivityAfterRestart (QtActivityDelegate.java:83)
  at org.qtproject.qt.android.QtActivityBase.handleActivityRestart (QtActivityBase.java:68)
  at org.qtproject.qt.android.QtActivityBase.onCreate (QtActivityBase.java:99)
  at org.qtproject.qt.android.bindings.QtActivity.onCreate (QtActivity.java:16)
  at net.geographx.MainActivity.onCreate (MainActivity.java:25)
  at android.app.Activity.performCreate (Activity.java:8595)
  at android.app.Activity.performCreate (Activity.java:8573)
  at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1456)
  at androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate (MonitoringInstrumentation.java:2)
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3764)

On google Pixel 5 64-bit only1080x2340Android 13 (SDK 33)-arm64-v8auk_UA:

Exception java.lang.RuntimeException: An error occurred while executing doInBackground()
  at android.os.AsyncTask$4.done (AsyncTask.java:415)
  at java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:381)
  at java.util.concurrent.FutureTask.setException (FutureTask.java:250)
  at java.util.concurrent.FutureTask.run (FutureTask.java:269)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1137)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:637)
  at java.lang.Thread.run (Thread.java:1012)
Caused by java.lang.IllegalArgumentException: Given work is not active: JobWorkItem{id=3 intent=Intent { act=com.google.android.settings.intelligence.modules.routines.impl.action.REREGISTER_LOCATION_ROUTINES } dcount=1}
  at android.app.job.JobParameters.completeWork (JobParameters.java:503)
  at tp.doInBackground (PG:10)
  at android.os.AsyncTask$3.call (AsyncTask.java:394)
  at java.util.concurrent.FutureTask.run (FutureTask.java:264)

4 Responses to “Null object reference” exceptions on Android 14 in a QT app

  1. dmitriano says:

    https://github.com/MerginMaps/mobile/issues/3481
    we’re targeting Android 13 (API level 33) right now (also default for Qt 6.6.3)
    Google Play will likely require Android 14 from September 2024
    Qt 6.7 has Android 14 as the default target (but we probably don’t need to upgrade Qt)
    behavior changes when we switch: https://developer.android.com/about/versions/14/behavior-changes-14

  2. dmitriano says:

    Probably something was changes in qt-everywhere-src-6.7.2\qtdoc\examples\demos\hangman\purchasing\android

  3. dmitriano says:

    kdiff3 /mnt/c/dev/repos/examples/src/LinesGame/LinesGameQt/platform/android/src/org/qtproject/qt/android/purchasing/ /mnt/c/dev/repos/qt-everywhere-src-6.7.2/qtdoc/examples/demos/hangman/purchasing/android/src/org/qtproject/qt/android/purchasing/
    kdiff3 /mnt/c/dev/repos/examples/src/LinesGame/LinesGameQt/platform/android/src/org/qtproject/qt/android/purchasing/ /mnt/c/dev/repos/qt-everywhere-src-6.6.2/qtdoc/examples/demos/hangman/purchasing/android/src/org/qtproject/qt/android/purchasing/

    kdiff3 /mnt/c/dev/repos/examples/src/LinesGame/LinesGameQt/Purchasing/android/ /mnt/c/dev/repos/qt-everywhere-src-6.7.2/qtdoc/examples/demos/hangman/purchasing/android/
    kdiff3 /mnt/c/dev/repos/examples/src/LinesGame/LinesGameQt/Purchasing/android/ /mnt/c/dev/repos/qt-everywhere-src-6.6.2/qtdoc/examples/demos/hangman/purchasing/android/

    kdiff3 /mnt/c/dev/repos/examples/src/LinesGame/LinesGameQt/Purchasing/inapp /mnt/c/dev/repos/qt-everywhere-src-6.7.2/qtdoc/examples/demos/hangman/purchasing/inapp

  4. dmitriano says:

    On Emulators:
    03-16 21:41:58.788 8851 8896 W GooglePlayServicesUtil: Google Play services out of date for net.geographx.LinesGame. Requires 212800000 but found 201817023
    03-16 21:41:58.800 8851 8909 W GooglePlayServicesUtil: Google Play services out of date for net.geographx.LinesGame. Requires 212800000 but found 201817023
    03-16 21:41:58.801 8851 8909 W GoogleApiManager: The service for com.google.android.gms.internal.appset.zzd is not available: ConnectionResult{statusCode=SERVICE_VERSION_UPDATE_REQUIRED, resolution=null, message=null}
    03-16 21:41:59.773 6499 8770 W ConnectionTracker: Exception thrown while unbinding
    03-16 21:41:59.773 6499 8770 W ConnectionTracker: java.lang.IllegalArgumentException: Service not registered: lm@dd5cef2
    03-16 21:41:59.773 6499 8770 W ConnectionTracker: at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:1757)
    03-16 21:41:59.773 6499 8770 W ConnectionTracker: at android.app.ContextImpl.unbindService(ContextImpl.java:1874)
    03-16 21:41:59.773 6499 8770 W ConnectionTracker: at android.content.ContextWrapper.unbindService(ContextWrapper.java:792)
    03-16 21:41:59.773 6499 8770 W ConnectionTracker: at ce.b(:com.google.android.gms.dynamite_measurementdynamite@201817056@20.18.17 (040800-0):1)
    03-16 21:41:59.773 6499 8770 W ConnectionTracker: at ce.a(:com.google.android.gms.dynamite_measurementdynamite@201817056@20.18.17 (040800-0):5)
    03-16 21:41:59.773 6499 8770 W ConnectionTracker: at ln.A(:com.google.android.gms.dynamite_measurementdynamite@201817056@20.18.17 (040800-0):10)
    03-16 21:41:59.773 6499 8770 W ConnectionTracker: at ky.a(:com.google.android.gms.dynamite_measurementdynamite@201817056@20.18.17 (040800-0):3)
    03-16 21:41:59.773 6499 8770 W ConnectionTracker: at dy.run(:com.google.android.gms.dynamite_measurementdynamite@201817056@20.18.17 (040800-0):2)
    03-16 21:41:59.773 6499 8770 W ConnectionTracker: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
    03-16 21:41:59.773 6499 8770 W ConnectionTracker: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    03-16 21:41:59.773 6499 8770 W ConnectionTracker: at iw.run(:com.google.android.gms.dynamite_measurementdynamite@201817056@20.18.17 (040800-0):15)
    03-16 21:41:59.919 8772 8791 W System : A resource failed to call end.

    https://stackoverflow.com/questions/78701738/google-play-services-out-of-date-for-com-domain-myapp-requires-212800000-but-fo

Leave a Reply

Your email address will not be published. Required fields are marked *