capacitor-biometric-auth
capacitor-biometric-auth copied to clipboard
BiometricAuth.verify fails in Android
When the Device Runs BiometricAuth.verify throws an Exception and the app crashes.
Tested on Device Motorola G5 Plus Android 8.1:
Android Studio Debug Error:
E/Capacitor: Serious error executing plugin java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at com.getcapacitor.PluginHandle.invoke(PluginHandle.java:99) at com.getcapacitor.Bridge$1.run(Bridge.java:521) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:164) at android.os.HandlerThread.run(HandlerThread.java:65) Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/hardware/biometrics/BiometricPrompt$Builder; at com.ahm.capacitor.biometric.BiometricAuth.displayBiometricPrompt(BiometricAuth.java:51) at com.ahm.capacitor.biometric.BiometricAuth.verify(BiometricAuth.java:44) at java.lang.reflect.Method.invoke(Native Method) at com.getcapacitor.PluginHandle.invoke(PluginHandle.java:99) at com.getcapacitor.Bridge$1.run(Bridge.java:521) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:164) at android.os.HandlerThread.run(HandlerThread.java:65) Caused by: java.lang.ClassNotFoundException: Didn't find class "android.hardware.biometrics.BiometricPrompt$Builder" on path: DexPathList[[zip file "/data/app/com.authtest.test-Voezn6eKdFjD322ANuCwjA==/base.apk"],nativeLibraryDirectories=[/data/app/com.authtest.test-Voezn6eKdFjD322ANuCwjA==/lib/arm, /system/lib, /system/vendor/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at com.ahm.capacitor.biometric.BiometricAuth.displayBiometricPrompt(BiometricAuth.java:51) at com.ahm.capacitor.biometric.BiometricAuth.verify(BiometricAuth.java:44) at java.lang.reflect.Method.invoke(Native Method) at com.getcapacitor.PluginHandle.invoke(PluginHandle.java:99) at com.getcapacitor.Bridge$1.run(Bridge.java:521) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:164) at android.os.HandlerThread.run(HandlerThread.java:65) E/AndroidRuntime: FATAL EXCEPTION: CapacitorPlugins Process: com.authtest.test, PID: 4858 java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at com.getcapacitor.Bridge$1.run(Bridge.java:530) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:164) at android.os.HandlerThread.run(HandlerThread.java:65) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at com.getcapacitor.PluginHandle.invoke(PluginHandle.java:99) at com.getcapacitor.Bridge$1.run(Bridge.java:521) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:164) at android.os.HandlerThread.run(HandlerThread.java:65) Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/hardware/biometrics/BiometricPrompt$Builder; at com.ahm.capacitor.biometric.BiometricAuth.displayBiometricPrompt(BiometricAuth.java:51) at com.ahm.capacitor.biometric.BiometricAuth.verify(BiometricAuth.java:44) at java.lang.reflect.Method.invoke(Native Method) at com.getcapacitor.PluginHandle.invoke(PluginHandle.java:99) at com.getcapacitor.Bridge$1.run(Bridge.java:521) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:164) at android.os.HandlerThread.run(HandlerThread.java:65) Caused by: java.lang.ClassNotFoundException: Didn't find class "android.hardware.biometrics.BiometricPrompt$Builder" on path: DexPathList[[zip file "/data/app/com.authtest.test-Voezn6eKdFjD322ANuCwjA==/base.apk"],nativeLibraryDirectories=[/data/app/com.authtest.test-Voezn6eKdFjD322ANuCwjA==/lib/arm, /system/lib, /system/vendor/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at com.ahm.capacitor.biometric.BiometricAuth.displayBiometricPrompt(BiometricAuth.java:51) at com.ahm.capacitor.biometric.BiometricAuth.verify(BiometricAuth.java:44) at java.lang.reflect.Method.invoke(Native Method) at com.getcapacitor.PluginHandle.invoke(PluginHandle.java:99) at com.getcapacitor.Bridge$1.run(Bridge.java:521) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:164) at android.os.HandlerThread.run(HandlerThread.java:65)
Yes, I also encountered this problem. Did you solve it? Thank you
I did not find a way, I changed the plugin to cordova-plugin-fingerprint-aio, this guys made this cordova plugin compatible with capacitor.