roubachof / Sharpnado.MaterialFrame

A modern MAUI (and XF) Frame component supporting blur, acrylic, dark mode. Implemented with RealtimeBlurView on Android (custom blurview) and UIVisualEffectView on iOS.
MIT License
505 stars 29 forks source link

Java.Lang.IncompatibleClassChangeError: no non-static method "Landroid/graphics/drawable/LayerDrawable;.setLayerInsetTop(II)V #6

Closed brminnick closed 4 years ago

brminnick commented 4 years ago

Platform:

Source Code is GitTrends v1.1.1: https://github.com/brminnick/GitTrends/releases/tag/v1.1.1

Describe the bug The following exception is thrown when calling Sharpnado.MaterialFrame.Droid.AndroidMaterialFrameRenderer.SetAcrylicTheme: non-static method "Landroid/graphics/drawable/LayerDrawable;.setLayerInsetTop(II)V

To Reproduce Unknown.

This crash has only happened once in the Google Play Store release of GitTrends v1.1.1 and I have been unable to reproduce it.

Exceptions (if applicable)

Package: com.minnick.gittrends
Version Code: 23
Version Name: 1.1.1
Android: 5.0.2
Android Build: LRX22G
Manufacturer: samsung
Model: SM-A310F
Start Date: 2020-05-17T01:36:13.428Z
Date: 2020-05-17T01:36:19.2Z

Xamarin Exception Stack:
Java.Lang.IncompatibleClassChangeError: no non-static method "Landroid/graphics/drawable/LayerDrawable;.setLayerInsetTop(II)V"
  at Java.Interop.JniEnvironment+InstanceMethods.GetMethodID (Java.Interop.JniObjectReference type, System.String name, System.String signature) [0x0005b] in <ebc8947b9797488ca73ac5ab1c5494f4>:0
  at Java.Interop.JniPeerMembers+JniInstanceMethods.GetMethodInfo (System.String encodedMember) <0x9ca2ff94 + 0x000e7> in <ebc8947b9797488ca73ac5ab1c5494f4>:0
  at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) <0x9ca30554 + 0x0007b> in <ebc8947b9797488ca73ac5ab1c5494f4>:0
  at Android.Graphics.Drawables.LayerDrawable.SetLayerInsetTop (System.Int32 index, System.Int32 t) [0x00035] in <f1c7aa3e82d943558646adc550a1285e>:0
  at Sharpnado.MaterialFrame.Droid.AndroidMaterialFrameRenderer.SetAcrylicTheme () [0x0007f] in <d381775d3eb248c3bed73948e5f5bf97>:0
  at Sharpnado.MaterialFrame.Droid.AndroidMaterialFrameRenderer.UpdateMaterialTheme () [0x00023] in <d381775d3eb248c3bed73948e5f5bf97>:0
  at Sharpnado.MaterialFrame.Droid.AndroidMaterialFrameRenderer.OnElementChanged (Xamarin.Forms.Platform.Android.ElementChangedEventArgs`1[TElement] e) [0x0003d] in <d381775d3eb248c3bed73948e5f5bf97>:0
  at Xamarin.Forms.Platform.Android.FastRenderers.FrameRenderer.set_Element (Xamarin.Forms.Frame value) [0x00025] in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.FastRenderers.FrameRenderer.Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00015] in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.Platform.CreateRenderer (Xamarin.Forms.VisualElement element, Android.Content.Context context) <0x9c72e1fc + 0x000cb> in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.VisualElementPackager.AddChild (Xamarin.Forms.VisualElement view, Xamarin.Forms.Platform.Android.IVisualElementRenderer oldRenderer, Xamarin.Forms.Platform.Android.RendererPool pool, System.Boolean sameChildren) <0x9c745730 + 0x00237> in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.VisualElementPackager.SetElement (Xamarin.Forms.VisualElement oldElement, Xamarin.Forms.VisualElement newElement) <0x9c745c90 + 0x003bb> in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].SetPackager (Xamarin.Forms.Platform.Android.VisualElementPackager packager) <0x9c7493dc + 0x00053> in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].SetElement (TElement element) <0x9c7479bc + 0x0030b> in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) <0x9c746c04 + 0x0007f> in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.Platform.CreateRenderer (Xamarin.Forms.VisualElement element, Android.Content.Context context) <0x9c72e1fc + 0x000cb> in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.ItemContentView.CreateRenderer (Xamarin.Forms.View view, Android.Content.Context context) [0x00000] in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.ItemContentView.RealizeContent (Xamarin.Forms.View view) [0x00008] in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.TemplatedItemViewHolder.Bind (System.Object itemBindingContext, Xamarin.Forms.ItemsView itemsView, System.Action`1[T] reportMeasure, System.Nullable`1[T] size) [0x0005e] in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.ItemsViewAdapter`2[TItemsView,TItemsViewSource].BindTemplatedItemViewHolder (Xamarin.Forms.Platform.Android.TemplatedItemViewHolder templatedItemViewHolder, System.Object context) <0x9c72639c + 0x0005b> in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.StructuredItemsViewAdapter`2[TItemsView,TItemsViewSource].BindTemplatedItemViewHolder (Xamarin.Forms.Platform.Android.TemplatedItemViewHolder templatedItemViewHolder, System.Object context) <0x9c72c834 + 0x0014b> in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.ItemsViewAdapter`2[TItemsView,TItemsViewSource].OnBindViewHolder (AndroidX.RecyclerView.Widget.RecyclerView+ViewHolder holder, System.Int32 position) <0x9c725c9c + 0x000c3> in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.StructuredItemsViewAdapter`2[TItemsView,TItemsViewSource].OnBindViewHolder (AndroidX.RecyclerView.Widget.RecyclerView+ViewHolder holder, System.Int32 position) <0x9c72c65c + 0x00107> in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.SelectableItemsViewAdapter`2[TItemsView,TItemsSource].OnBindViewHolder (AndroidX.RecyclerView.Widget.RecyclerView+ViewHolder holder, System.Int32 position) <0x9c72b044 + 0x00043> in <59920c354f92453caebc7f3487b2dd5c>:0
  at Xamarin.Forms.Platform.Android.GroupableItemsViewAdapter`2[TItemsView,TItemsViewSource].OnBindViewHolder (AndroidX.RecyclerView.Widget.RecyclerView+ViewHolder holder, System.Int32 position) <0x9c7252e8 + 0x0013f> in <59920c354f92453caebc7f3487b2dd5c>:0
  at AndroidX.RecyclerView.Widget.RecyclerView+Adapter.n_OnBindViewHolder_Landroidx_recyclerview_widget_RecyclerView_ViewHolder_I (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_holder, System.Int32 position) [0x0000f] in <2a2096a8d3b847cf9e02b4b433984cf6>:0
  at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.78(intptr,intptr,intptr,int)
  at java.lang.NoSuchMethodError: no non-static method "Landroid/graphics/drawable/LayerDrawable;.setLayerInsetTop(II)V"
  at crc643f46942d9dd1fff9.GroupableItemsViewAdapter_2.n_onBindViewHolder(Native Method)
  at crc643f46942d9dd1fff9.GroupableItemsViewAdapter_2.onBindViewHolder()
  at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder()
  at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder()
  at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline()
  at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline()
  at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition()
  at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition()
  at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next()
  at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk()
  at androidx.recyclerview.widget.LinearLayoutManager.fill()
  at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren()
  at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2()
  at androidx.recyclerview.widget.RecyclerView.dispatchLayout()
  at androidx.recyclerview.widget.RecyclerView.onLayout()
  at crc643f46942d9dd1fff9.ItemsViewRenderer_3.n_onLayout(Native Method)
  at crc643f46942d9dd1fff9.ItemsViewRenderer_3.onLayout()
  at android.view.View.layout(View.java)
  at android.view.ViewGroup.layout(ViewGroup.java:5333)
  at androidx.swiperefreshlayout.widget.SwipeRefreshLayout.onLayout()
  at crc643f46942d9dd1fff9.RefreshViewRenderer.n_onLayout(Native Method)
  at crc643f46942d9dd1fff9.RefreshViewRenderer.onLayout()
  at android.view.View.layout(View.java)
  at android.view.ViewGroup.layout(ViewGroup.java:5333)
  at crc643f46942d9dd1fff9.PageRenderer.n_onLayout(Native Method)
  at crc643f46942d9dd1fff9.PageRenderer.onLayout()
  at android.view.View.layout(View.java)
  at android.view.ViewGroup.layout(ViewGroup.java:5333)
  at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout()
  at crc64720bb2db43a66fe9.NavigationPageRenderer.n_onLayout(Native Method)
  at crc64720bb2db43a66fe9.NavigationPageRenderer.onLayout()
  at android.view.View.layout(View.java)
  at android.view.ViewGroup.layout(ViewGroup.java:5333)
  at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout()
  at crc643f46942d9dd1fff9.PlatformRenderer.n_onLayout(Native Method)
  at crc643f46942d9dd1fff9.PlatformRenderer.onLayout()
  at android.view.View.layout(View.java)
  at android.view.ViewGroup.layout(ViewGroup.java:5333)
  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1077)
  at android.view.View.layout(View.java)
  at android.view.ViewGroup.layout(ViewGroup.java:5333)
  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
  at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
  at android.view.View.layout(View.java)
  at android.view.ViewGroup.layout(ViewGroup.java:5333)
  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
  at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
  at android.view.View.layout(View.java)
  at android.view.ViewGroup.layout(ViewGroup.java:5333)
  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
  at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
  at android.view.View.layout(View.java)
  at android.view.ViewGroup.layout(ViewGroup.java:5333)
  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1702)
  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1556)
  at android.widget.LinearLayout.onLayout(LinearLayout.java:1465)
  at android.view.View.layout(View.java)
  at android.view.ViewGroup.layout(ViewGroup.java:5333)
  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1702)
  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1556)
  at android.widget.LinearLayout.onLayout(LinearLayout.java:1465)
  at android.view.View.layout(View.java)
  at android.view.ViewGroup.layout(ViewGroup.java:5333)
  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
  at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
  at android.view.View.layout(View.java)
  at android.view.ViewGroup.layout(ViewGroup.java:5333)
  at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2365)
  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2074)
  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1230)
  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6726)
  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
  at android.view.Choreographer.doCallbacks(Choreographer.java:590)
  at android.view.Choreographer.doFrame(Choreographer.java:560)
  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
  at android.os.Handler.handleCallback(Handler.java:739)
  at android.os.Handler.dispatchMessage(Handler.java:95)
  at android.os.Looper.loop(Looper.java:145)
  at android.app.ActivityThread.main(ActivityThread.java:6141)
  at java.lang.reflect.Method.invoke(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:372)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

Thread 1:
0   dalvik.system.VMStack.getThreadStackTrace(VMStack.java:-2)
1   java.lang.Thread.getStackTrace(Thread.java:580)
2   java.lang.Thread.getAllStackTraces(Thread.java:522)
3   com.microsoft.appcenter.crashes.Crashes.saveUncaughtException
4   com.microsoft.appcenter.crashes.WrapperSdkExceptionManager.saveWrapperException
5   crc643f46942d9dd1fff9.GroupableItemsViewAdapter_2.n_onBindViewHolder
6   crc643f46942d9dd1fff9.GroupableItemsViewAdapter_2.onBindViewHolder
7   androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder
8   androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder
9   androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline
10  androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline
11  androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition
12  androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition
13  androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next
14  androidx.recyclerview.widget.LinearLayoutManager.layoutChunk
15  androidx.recyclerview.widget.LinearLayoutManager.fill
16  androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren
17  androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2
18  androidx.recyclerview.widget.RecyclerView.dispatchLayout
19  androidx.recyclerview.widget.RecyclerView.onLayout
20  crc643f46942d9dd1fff9.ItemsViewRenderer_3.n_onLayout
21  crc643f46942d9dd1fff9.ItemsViewRenderer_3.onLayout
22  android.view.View.layout(View.java:-1)
23  android.view.ViewGroup.layout(ViewGroup.java:5333)
24  androidx.swiperefreshlayout.widget.SwipeRefreshLayout.onLayout
25  crc643f46942d9dd1fff9.RefreshViewRenderer.n_onLayout
26  crc643f46942d9dd1fff9.RefreshViewRenderer.onLayout
27  android.view.View.layout(View.java:-1)
28  android.view.ViewGroup.layout(ViewGroup.java:5333)
29  crc643f46942d9dd1fff9.PageRenderer.n_onLayout
30  crc643f46942d9dd1fff9.PageRenderer.onLayout
31  android.view.View.layout(View.java:-1)
32  android.view.ViewGroup.layout(ViewGroup.java:5333)
33  com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout
34  crc64720bb2db43a66fe9.NavigationPageRenderer.n_onLayout
35  crc64720bb2db43a66fe9.NavigationPageRenderer.onLayout
36  android.view.View.layout(View.java:-1)
37  android.view.ViewGroup.layout(ViewGroup.java:5333)
38  com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout
39  crc643f46942d9dd1fff9.PlatformRenderer.n_onLayout
40  crc643f46942d9dd1fff9.PlatformRenderer.onLayout
41  android.view.View.layout(View.java:-1)
42  android.view.ViewGroup.layout(ViewGroup.java:5333)
43  android.widget.RelativeLayout.onLayout(RelativeLayout.java:1077)
44  android.view.View.layout(View.java:-1)
45  android.view.ViewGroup.layout(ViewGroup.java:5333)
46  android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
47  android.widget.FrameLayout.onLayout(FrameLayout.java:508)
48  android.view.View.layout(View.java:-1)
49  android.view.ViewGroup.layout(ViewGroup.java:5333)
50  android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
51  android.widget.FrameLayout.onLayout(FrameLayout.java:508)
52  android.view.View.layout(View.java:-1)
53  android.view.ViewGroup.layout(ViewGroup.java:5333)
54  android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
55  android.widget.FrameLayout.onLayout(FrameLayout.java:508)
56  android.view.View.layout(View.java:-1)
57  android.view.ViewGroup.layout(ViewGroup.java:5333)
58  android.widget.LinearLayout.setChildFrame(LinearLayout.java:1702)
59  android.widget.LinearLayout.layoutVertical(LinearLayout.java:1556)
60  android.widget.LinearLayout.onLayout(LinearLayout.java:1465)
61  android.view.View.layout(View.java:-1)
62  android.view.ViewGroup.layout(ViewGroup.java:5333)
63  android.widget.LinearLayout.setChildFrame(LinearLayout.java:1702)
64  android.widget.LinearLayout.layoutVertical(LinearLayout.java:1556)
65  android.widget.LinearLayout.onLayout(LinearLayout.java:1465)
66  android.view.View.layout(View.java:-1)
67  android.view.ViewGroup.layout(ViewGroup.java:5333)
68  android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
69  android.widget.FrameLayout.onLayout(FrameLayout.java:508)
70  android.view.View.layout(View.java:-1)
71  android.view.ViewGroup.layout(ViewGroup.java:5333)
72  android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2365)
73  android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2074)
74  android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1230)
75  android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6726)
76  android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
77  android.view.Choreographer.doCallbacks(Choreographer.java:590)
78  android.view.Choreographer.doFrame(Choreographer.java:560)
79  android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
80  android.os.Handler.handleCallback(Handler.java:739)
81  android.os.Handler.dispatchMessage(Handler.java:95)
82  android.os.Looper.loop(Looper.java:145)
83  android.app.ActivityThread.main(ActivityThread.java:6141)
84  java.lang.reflect.Method.invoke(Method.java:-2)
85  java.lang.reflect.Method.invoke(Method.java:372)
86  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
87  com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

Thread 1224:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:152)
2   java.lang.Thread.run(Thread.java:818)

Thread 1225:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Object.wait(Object.java:422)
2   java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:101)
3   java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:72)
4   java.lang.Daemons$FinalizerDaemon.run(Daemons.java:192)
5   java.lang.Thread.run(Thread.java:818)

Thread 1226:
0   java.lang.Thread.sleep(Thread.java:-2)
1   java.lang.Thread.sleep(Thread.java:1031)
2   java.lang.Thread.sleep(Thread.java:985)
3   java.lang.Daemons$FinalizerWatchdogDaemon.sleepFor(Daemons.java:276)
4   java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization(Daemons.java:287)
5   java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:235)
6   java.lang.Thread.run(Thread.java:818)

Thread 1227:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Daemons$HeapTrimmerDaemon.run(Daemons.java:329)
2   java.lang.Thread.run(Thread.java:818)

Thread 1228:
0   dalvik.system.VMRuntime.waitForConcurrentGCRequest(VMRuntime.java:-2)
1   java.lang.Daemons$GCDaemon.run(Daemons.java:350)
2   java.lang.Thread.run(Thread.java:818)

Thread 1235:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Thread.parkFor(Thread.java:1220)
2   sun.misc.Unsafe.park(Unsafe.java:299)
3   java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
5   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
6   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
7   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
8   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
9   java.lang.Thread.run(Thread.java:818)

Thread 1236:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Thread.parkFor(Thread.java:1220)
2   sun.misc.Unsafe.park(Unsafe.java:299)
3   java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
5   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
6   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
7   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
8   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
9   java.lang.Thread.run(Thread.java:818)

Thread 1238:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Thread.parkFor(Thread.java:1220)
2   sun.misc.Unsafe.park(Unsafe.java:299)
3   java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
5   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
6   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
7   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
8   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
9   java.lang.Thread.run(Thread.java:818)

Thread 1243:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Thread.parkFor(Thread.java:1220)
2   sun.misc.Unsafe.park(Unsafe.java:299)
3   java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
5   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
6   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
7   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
8   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
9   java.lang.Thread.run(Thread.java:818)

Thread 1255:
0   android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1   android.os.MessageQueue.next(MessageQueue.java:143)
2   android.os.Looper.loop(Looper.java:130)
3   android.os.HandlerThread.run(HandlerThread.java:61)

Thread 1257:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Thread.parkFor(Thread.java:1220)
2   sun.misc.Unsafe.park(Unsafe.java:299)
3   java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
5   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
6   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
7   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
8   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
9   java.lang.Thread.run(Thread.java:818)

Thread 1258:
0   android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1   android.os.MessageQueue.next(MessageQueue.java:143)
2   android.os.Looper.loop(Looper.java:130)
3   android.os.HandlerThread.run(HandlerThread.java:61)

Thread 1262:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Thread.parkFor(Thread.java:1220)
2   sun.misc.Unsafe.park(Unsafe.java:299)
3   java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
5   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
6   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
7   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
8   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
9   java.lang.Thread.run(Thread.java:818)

Thread 1263:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Thread.parkFor(Thread.java:1220)
2   sun.misc.Unsafe.park(Unsafe.java:299)
3   java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
4   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2055)
5   java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:435)
6   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
7   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
8   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
9   java.lang.Thread.run(Thread.java:818)

Thread 1270:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Thread.parkFor(Thread.java:1220)
2   sun.misc.Unsafe.park(Unsafe.java:299)
3   java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
5   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
6   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
7   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
8   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
9   java.lang.Thread.run(Thread.java:818)

Thread 1271:
0   com.android.org.conscrypt.NativeCrypto.SSL_read(NativeCrypto.java:-2)
1   com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:728)
2   com.android.okio.Okio$2.read(Okio.java:116)
3   com.android.okio.RealBufferedSource.indexOf(RealBufferedSource.java:150)
4   com.android.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:97)
5   com.android.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:202)
6   com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:119)
7   com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:796)
8   com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:405)
9   com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:349)
10  com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:517)
11  com.android.okhttp.internal.http.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
12  com.android.okhttp.internal.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:25)
13  com.microsoft.appcenter.http.DefaultHttpClientCallTask.doHttpCall
14  com.microsoft.appcenter.http.DefaultHttpClientCallTask.doInBackground
15  com.microsoft.appcenter.http.DefaultHttpClientCallTask.doInBackground
16  android.os.AsyncTask$2.call(AsyncTask.java:288)
17  java.util.concurrent.FutureTask.run(FutureTask.java:237)
18  java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
19  java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
20  java.lang.Thread.run(Thread.java:818)
rahmanny commented 4 years ago

Hello. OS: Android 5.0.1, 5.0.2 XF 4.6.0.800 I get this error every time when I go to a page with a element: <rv:MaterialFrame IsVisible="true" MaterialTheme="Acrylic" CornerRadius="5" Margin="30,30,30,30" LightThemeBackgroundColor="#f1f1f1" /> It makes no difference, an emulator or device, a release or debug, whether the application is published in Google Play or not. If I change MaterialTheme to a Light or AcrylicBlur , the page opens without errors.

roubachof commented 4 years ago

It's an API issue with versions < 5.1. Will fix this this month after I release my next big XF component ;)

roubachof commented 4 years ago

So as crazy as it seems setLayerInsetTop is only available on Marshmallow and above (level 23).

But using LayerDrawable for creating the Acrylic effect is crazy efficient so I don't want to change the way it's implemented (for example using 2 views instead of one...'pouah' as we say in France).

Therefore this issue will be shamelessly fixed by just doesn't applying Acrylic effect when api < 23, last fragmentation numbers are telling me it's nearly 10% of android devices. But for the GitTrend app for example, it should be closer to 1% since tech guys tend to have way more recent models than average population :)

brminnick commented 4 years ago

@roubachof Interesting!

Instead of ignoring Acrylic on earlier versions of Android, I recommend throwing new NotSupportedException("Acrylic is only supported on Android API 23+") and updating the README to note that Acrylic is only supported on Android 23+.

My concern is that future developers will also install Sharpnado.MaterialFrame and implement Acrylic, unaware that their UI will look completely different on Lollipop than it does on Marshmallow (and up).

roubachof commented 4 years ago

Mmmh I don't think it would be a good idea. It would mean that users with devices < api 23 will crash. Also devices with os < marshmallow represent a tiny number of all the Android devices. But it is a good idea to say that Acrylic glow is only supported on api >= 23!

brminnick commented 4 years ago

The idea behind throwing a NotSupportedException is to provide an actionable error message that helps developers discover and fix the problem before their users do.

Rather than ignoring the developer's request for Acrylic on <API 23, we want to crash the app because it isn't supported. We don't want developers to waste time debugging and troubleshooting why the UI looks different on Lollipop.

roubachof commented 4 years ago

I'm not sure all developers would be ok with that. For my part I would prefer a degraded UI experience on devices < 23, but a still functioning app. Elevation on lollipop already looks ugly :) But I will also add a log error message.

roubachof commented 4 years ago

@brminnick BTW, you can really easily recreate Acrylic effect with my last project https://github.com/roubachof/Sharpnado.Shadows. With 2 shades,