Closed Springham closed 3 years ago
Hi @Springham,
I'm the friendly issue checker. Thanks for using the issue template :star2: I appreciate it very much. I'm sure, the maintainers of this repository will answer, soon.
Hmm this seems to be related to #67 and #84. I can't really reproduce this. Looks like something goes wrong in the packaging process :(
We're currently on 1.4.5. Upgrading to 1.4.6-beta2 is fine but when we upgrade to 1.4.6-beta3 we get this exception. The only thing I can see is that the package started targeting android 6.0. I wonder if that could cause this?
which commit do you refer to?
I was referring to commit: ac5fb49. There are only 2 commits that could have affected android as far as I can see, this one and cb186a9. One of these commits causes a crash in my solution for some reason.
Ok investigating a bit more, it works when I include a view called FingerprintDialog.axml in my resources and make it the same layout as the default one (https://github.com/smstuebe/xamarin-fingerprint/blob/e121c22b2e802644fea6aac391e83ef99fe1481b/src/Plugin.Fingerprint.Android/Resources/layout/FingerprintDialog.axml). For some reason there is an issue with the resources.
I've noticed in my build the following: /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(1419,2): warning XA0106: Skipping TravelApp.Droid.Resource.Drawable.fingerprint_white. Please check that your Nuget Package versions are compatible. /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(1419,2): warning XA0106: Skipping TravelApp.Droid.Resource.Id.fingerprint_btnCancel. Please check that your Nuget Package versions are compatible. /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(1419,2): warning XA0106: Skipping TravelApp.Droid.Resource.Id.fingerprint_btnFallback. Please check that your Nuget Package versions are compatible. /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(1419,2): warning XA0106: Skipping TravelApp.Droid.Resource.Id.fingerprint_imgFingerprint. Please check that your Nuget Package versions are compatible. /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(1419,2): warning XA0106: Skipping TravelApp.Droid.Resource.Id.fingerprint_txtHelp. Please check that your Nuget Package versions are compatible. /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(1419,2): warning XA0106: Skipping TravelApp.Droid.Resource.Id.fingerprint_txtReason. Please check that your Nuget Package versions are compatible. /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(1419,2): warning XA0106: Skipping TravelApp.Droid.Resource.Layout.FingerprintDialog. Please check that your Nuget Package versions are compatible.
Which I'm assuming is causing the problem. Not sure why this has suddenly started being an issue. Have you seen this issue before?
Nope, I'm wrong (something was cached). Only when I inherit from the FingerprintDialogFragment and override OnCreateView does it stop the crash. Strange stuff.
exactly... It feels not deterministic :( Sometimes I can reproduce it, sometimes not :/
I've had to rollback to 1.4.5 as we have a release coming up :(
If I upgrade from 1.4.6-beta2 to 1.4.6-beta3. Clear bin/obj. Fingerprint crashes. If I downgrade back to 1.4.6-beta2. Clear bin/obj. Fingerprint works as expected.
Something seems to have changed in that 1.4.6-beta3 release but I have no idea what!
I'm going to try upgrading again once we've gone to net standard and MvvmCross 6.x
Upgraded VS 2017 Pro to netstandard 2.0.3. Installed 1.4.7. Getting the same Null exception as you guys when calling CrossFingerprint.Current.AuthenticateAsync();
{System.NullReferenceException: Object reference not set to an instance of an object.
at ....LoginPage+
iOS is working.
Tried downgrading to 1.4.5 with no success. Any thoughts? When I upgrade netstandard, I upgraded a lot of packages. Not sure I want to back out the netstandard upgrade.
Tried to upgrade to 1.4.6 but it fails on Android. My solution works on 1.4.6-beta2 but nothing above. I had a look at the commits but couldn't see anything that had been introduced that would affect this. Reproduced on the two devices tried.
The exceptions look to me like the fingerprint dialog is attempting and failing to get my app icon but I could be wrong.
Steps to reproduce
Expected behavior
It shouldn't crash
Actual behavior
It crashes
Crashlog
With adaptive icon:
Android.Views.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class adaptive-icon ---> Android.Views.InflateException: Binary XML file line #1: Error inflating class adaptive-icon ---> Java.Lang.ClassNotFoundException: Didn't find class "android.view.adaptive-icon" on path: DexPathList[[zip file "/data/app/com.hrgworldwide.travelapp-9t1oSumR8d6eDS5fXozjrg==/base.apk"],nativeLibraryDirectories=[/data/app/com.hrgworldwide.travelapp-9t1oSumR8d6eDS5fXozjrg==/lib/arm64, /data/app/com.hrgworldwide.travelapp-9t1oSumR8d6eDS5fXozjrg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]] at java.lang.ClassNotFoundException: Didn't find class "android.view.adaptive-icon" on path: DexPathList[[zip file "/data/app/com.hrgworldwide.travelapp-9t1oSumR8d6eDS5fXozjrg==/base.apk"],nativeLibraryDirectories=[/data/app/com.hrgworldwide.travelapp-9t1oSumR8d6eDS5fXozjrg==/lib/arm64, /data/app/com.hrgworldwide.travelapp-9t1oSumR8d6eDS5fXozjrg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]] at at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93) at at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at at android.view.LayoutInflater.createView(LayoutInflater.java:606) at at android.view.LayoutInflater.onCreateView(LayoutInflater.java:703) at at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:68) at at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720) at at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788) at at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) at at android.view.LayoutInflater.inflate(LayoutInflater.java:492) at at android.view.LayoutInflater.inflate(LayoutInflater.java:423) at at android.view.LayoutInflater.inflate(LayoutInflater.java:374) at at md500032558e65d65a9fc0bf95666812307.FingerprintDialogFragment.n_onCreateView(Native Method) at at md500032558e65d65a9fc0bf95666812307.FingerprintDialogFragment.onCreateView(FingerprintDialogFragment.java:76) at at android.app.Fragment.performCreateView(Fragment.java:2611) at at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1276) at at android.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2421) at at android.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200) at at android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2154) at at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2055) at at android.app.FragmentManagerImpl$1.run(FragmentManager.java:718) at at android.os.Handler.handleCallback(Handler.java:789) at at android.os.Handler.dispatchMessage(Handler.java:98) at at android.os.Looper.loop(Looper.java:164) at at android.app.ActivityThread.main(ActivityThread.java:6938) at at java.lang.reflect.Method.invoke(Native Method) at at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) at at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) --- End of inner exception stack trace --- at android.view.InflateException: Binary XML file line #1: Error inflating class adaptive-icon at Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.adaptive-icon" on path: DexPathList[[zip file "/data/app/com.hrgworldwide.travelapp-9t1oSumR8d6eDS5fXozjrg==/base.apk"],nativeLibraryDirectories=[/data/app/com.hrgworldwide.travelapp-9t1oSumR8d6eDS5fXozjrg==/lib/arm64, /data/app/com.hrgworldwide.travelapp-9t1oSumR8d6eDS5fXozjrg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]] at at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93) at at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at at android.view.LayoutInflater.createView(LayoutInflater.java:606) at at android.view.LayoutInflater.onCreateView(LayoutInflater.java:703) at at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:68) at at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720) at at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788) at at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) at at android.view.LayoutInflater.inflate(LayoutInflater.java:492) at at android.view.LayoutInflater.inflate(LayoutInflater.java:423) at at android.view.LayoutInflater.inflate(LayoutInflater.java:374) at at md500032558e65d65a9fc0bf95666812307.FingerprintDialogFragment.n_onCreateView(Native Method) at at md500032558e65d65a9fc0bf95666812307.FingerprintDialogFragment.onCreateView(FingerprintDialogFragment.java:76) at at android.app.Fragment.performCreateView(Fragment.java:2611) at at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1276) at at android.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2421) at at android.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200) at at android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2154) at at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2055) at at android.app.FragmentManagerImpl$1.run(FragmentManager.java:718) at at android.os.Handler.handleCallback(Handler.java:789) at at android.os.Handler.dispatchMessage(Handler.java:98) at at android.os.Looper.loop(Looper.java:164) at at android.app.ActivityThread.main(ActivityThread.java:6938) at at java.lang.reflect.Method.invoke(Native Method) at at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) at at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) --- End of inner exception stack trace --- at android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class adaptive-icon at Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class adaptive-icon at Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.adaptive-icon" on path: DexPathList[[zip file "/data/app/com.hrgworldwide.travelapp-9t1oSumR8d6eDS5fXozjrg==/base.apk"],nativeLibraryDirectories=[/data/app/com.hrgworldwide.travelapp-9t1oSumR8d6eDS5fXozjrg==/lib/arm64, /data/app/com.hrgworldwide.travelapp-9t1oSumR8d6eDS5fXozjrg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]] at at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93) at at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at at android.view.LayoutInflater.createView(LayoutInflater.java:606) at at android.view.LayoutInflater.onCreateView(LayoutInflater.java:703) at at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:68) at at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720) at at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788) at at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) at at android.view.LayoutInflater.inflate(LayoutInflater.java:492) at at android.view.LayoutInflater.inflate(LayoutInflater.java:423) at at android.view.LayoutInflater.inflate(LayoutInflater.java:374) at at md500032558e65d65a9fc0bf95666812307.FingerprintDialogFragment.n_onCreateView(Native Method) at at md500032558e65d65a9fc0bf95666812307.FingerprintDialogFragment.onCreateView(FingerprintDialogFragment.java:76) at at android.app.Fragment.performCreateView(Fragment.java:2611) at at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1276) at at android.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2421) at at android.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200) at at android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2154) at at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2055) at at android.app.FragmentManagerImpl$1.run(FragmentManager.java:718) at at android.os.Handler.handleCallback(Handler.java:789) at at android.os.Handler.dispatchMessage(Handler.java:98) at at android.os.Looper.loop(Looper.java:164) at at android.app.ActivityThread.main(ActivityThread.java:6938) at at java.lang.reflect.Method.invoke(Native Method) at at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) at at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Without adaptive icon:
Android.Content.Res.Resources+NotFoundException: File res/mipmap-xxhdpi-v4/ic_launcher.png from xml type layout resource ID #0x7f030000 ---> Java.IO.FileNotFoundException: Corrupt XML binary file at java.io.FileNotFoundException: Corrupt XML binary file at at android.content.res.AssetManager.openXmlAssetNative(Native Method) at at android.content.res.AssetManager.openXmlBlockAsset(AssetManager.java:560) at at android.content.res.ResourcesImpl.loadXmlResourceParser(ResourcesImpl.java:1134) at at android.content.res.Resources.loadXmlResourceParser(Resources.java:2150) at at android.content.res.Resources.getLayout(Resources.java:1157) at at android.view.LayoutInflater.inflate(LayoutInflater.java:421) at at android.view.LayoutInflater.inflate(LayoutInflater.java:374) at at md500032558e65d65a9fc0bf95666812307.FingerprintDialogFragment.n_onCreateView(Native Method) at at md500032558e65d65a9fc0bf95666812307.FingerprintDialogFragment.onCreateView(FingerprintDialogFragment.java:76) at at android.app.Fragment.performCreateView(Fragment.java:2611) at at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1276) at at android.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2421) at at android.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200) at at android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2154) at at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2055) at at android.app.FragmentManagerImpl$1.run(FragmentManager.java:718) at at android.os.Handler.handleCallback(Handler.java:789) at at android.os.Handler.dispatchMessage(Handler.java:98) at at android.os.Looper.loop(Looper.java:164) at at android.app.ActivityThread.main(ActivityThread.java:6938) at at java.lang.reflect.Method.invoke(Native Method) at at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) at at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) --- End of inner exception stack trace --- at android.content.res.Resources$NotFoundException: File res/mipmap-xxhdpi-v4/ic_launcher.png from xml type layout resource ID #0x7f030000 at at android.content.res.ResourcesImpl.loadXmlResourceParser(ResourcesImpl.java:1149) at at android.content.res.Resources.loadXmlResourceParser(Resources.java:2150) at at android.content.res.Resources.getLayout(Resources.java:1157) at at android.view.LayoutInflater.inflate(LayoutInflater.java:421) at at android.view.LayoutInflater.inflate(LayoutInflater.java:374) at at md500032558e65d65a9fc0bf95666812307.FingerprintDialogFragment.n_onCreateView(Native Method) at at md500032558e65d65a9fc0bf95666812307.FingerprintDialogFragment.onCreateView(FingerprintDialogFragment.java:76) at at android.app.Fragment.performCreateView(Fragment.java:2611) at at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1276) at at android.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2421) at at android.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200) at at android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2154) at at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2055) at at android.app.FragmentManagerImpl$1.run(FragmentManager.java:718) at at android.os.Handler.handleCallback(Handler.java:789) at at android.os.Handler.dispatchMessage(Handler.java:98) at at android.os.Looper.loop(Looper.java:164) at at android.app.ActivityThread.main(ActivityThread.java:6938) at at java.lang.reflect.Method.invoke(Native Method) at at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) at at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) at Caused by: java.io.FileNotFoundException: Corrupt XML binary file at at android.content.res.AssetManager.openXmlAssetNative(Native Method) at at android.content.res.AssetManager.openXmlBlockAsset(AssetManager.java:560) at at android.content.res.ResourcesImpl.loadXmlResourceParser(ResourcesImpl.java:1134) at ... 20 more
Configuration
Version of the Plugin: 1.4.6-beta3 and above
Platform: Android 8.1, Android 7.0
Device: Samsung S8, Samsung S6