WhatsApp fails to start

A family member asked for help because on his Android phone the WhatsApp application did not start. Starting it led to an immediate crash message, even after rebooting the phone and clearing all cache data in the app settings.

I enabled developer mode, then USB debugging and ran adb logcat to see what's going on:

W PackageManager: Failure retrieving xml 0x7f140004 in package com.whatsapp
W PackageManager: android.content.res.Resources$NotFoundException: Resource ID #0x7f140004
W PackageManager: 	at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:227)
W PackageManager: 	at android.content.res.Resources.loadXmlResourceParser(Resources.java:2149)
W PackageManager: 	at android.content.res.Resources.getXml(Resources.java:1207)
W PackageManager: 	at android.app.ApplicationPackageManager.getXml(ApplicationPackageManager.java:2206)
W PackageManager: 	at android.content.pm.PackageItemInfo.loadXmlMetaData(PackageItemInfo.java:393)
W PackageManager: 	at androidx.core.content.FileProvider.b(:3443)
W PackageManager: 	at androidx.core.content.FileProvider.a(:3427)
W PackageManager: 	at androidx.core.content.FileProvider.attachInfo(:3436)
W PackageManager: 	at android.app.ActivityThread.installProvider(ActivityThread.java:6618)
W PackageManager: 	at android.app.ActivityThread.installContentProviders(ActivityThread.java:6173)
W PackageManager: 	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6079)
W PackageManager: 	at android.app.ActivityThread.-wrap1(Unknown Source:0)
W PackageManager: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1791)
W PackageManager: 	at android.os.Handler.dispatchMessage(Handler.java:106)
W PackageManager: 	at android.os.Looper.loop(Looper.java:164)
W PackageManager: 	at android.app.ActivityThread.main(ActivityThread.java:7000)
W PackageManager: 	at java.lang.reflect.Method.invoke(Native Method)
W PackageManager: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
W PackageManager: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
D AndroidRuntime: Shutting down VM
E AndroidRuntime: FATAL EXCEPTION: main
E AndroidRuntime: Process: com.whatsapp, PID: 11644
E AndroidRuntime: java.lang.RuntimeException: Unable to get provider androidx.core.content.FileProvider: java.lang.IllegalArgumentException: Missing android.support.FILE_PROVIDER_PATHS meta-data
E AndroidRuntime: 	at android.app.ActivityThread.installProvider(ActivityThread.java:6621)
E AndroidRuntime: 	at android.app.ActivityThread.installContentProviders(ActivityThread.java:6173)
E AndroidRuntime: 	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6079)
E AndroidRuntime: 	at android.app.ActivityThread.-wrap1(Unknown Source:0)
E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1791)
E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:106)
E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:164)
E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7000)
E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
E AndroidRuntime: Caused by: java.lang.IllegalArgumentException: Missing android.support.FILE_PROVIDER_PATHS meta-data
E AndroidRuntime: 	at androidx.core.content.FileProvider.b(:3480)
E AndroidRuntime: 	at androidx.core.content.FileProvider.a(:3427)
E AndroidRuntime: 	at androidx.core.content.FileProvider.attachInfo(:3436)
E AndroidRuntime: 	at android.app.ActivityThread.installProvider(ActivityThread.java:6618)
E AndroidRuntime: 	... 10 more

So the app was damaged somehow and could not start.

Re-installation

The only way to fix this was to re-install the app, which is impossible in Android - you have to remove the app first, and the install it again.

The problem with this is that removing the app also removes the app's data, something that I wanted to prevent.

It turns out that reinstalling an app while keeping the user's data is possible by using the shell:

$ adb shell
$ pm uninstall -k com.whatsapp

-k means "keep", and after installing the app from the play store again, all data were still there.

Please try to not use WhatsApp. It belongs to Facebook, and because you are not paying for it, you (your data) are the product being sold.

Written by Christian Weiske.

Comments? Please send an e-mail.