arielhernandezmusa / capacitor-biometric-auth

34 stars 22 forks source link

BiometricAuth.verify fails in Android #16

Open lcpelaez opened 4 years ago

lcpelaez commented 4 years ago

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) 

ZhongYueHui commented 3 years ago

Yes, I also encountered this problem. Did you solve it? Thank you

lcpelaez commented 3 years ago

I did not find a way, I changed the plugin to cordova-plugin-fingerprint-aio, this guys made this cordova plugin compatible with capacitor.