首页 文章

SkiaSharp无效的强制转换异常

提问于
浏览
3

LoadApplication(new App()); 中收到 InvalidCastException . 我在PCL和Android中添加了SkiaSharp和SkiaSharp.Views.Forms . 它还自动将SkiaSharp.Views包添加到Android项目中 .

我删除了所有复杂的代码,并将此部分保留在我的XAML文件中

<ContentView 
    xmlns="http://xamarin.com/schemas/2014/forms" 
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:skia="clr-namespace:SkiaSharp.Views.Forms;assembly=SkiaSharp.Views.Forms"     
    x:Class="SkiaSharpRemote.MediaControlView">
    <ContentView.Content>
        <!--<skia:SKCanvasView
            x:Name="canvas"
            VerticalOptions="Fill"
            HorizontalOptions="Fill"
            PaintSurface="Canvas_PaintSurface">
        </skia:SKCanvasView>-->
    </ContentView.Content>
</ContentView>

在我注释掉 skCanvasView 行之后加载了应用程序 . 如果我取消注释它,则抛出以下异常 .

at(wrapper castclass)System.Object:__ castclass_with_cache(object,intptr,intptr)位于C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin中的Xamarin.Forms.Registrar1 [TRegistrable] .GetHandler(System.Type类型)[0x0001b] . Forms.Core \ Registrar.cs:24 at Xamarin.Forms.Registrar1 [TRegistrable] .GetHandler [TOut](System.Type type)[0x00000]在C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Core \ Registrar . cs:29位于C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ Platform.cs:288 at的Xamarin.Forms.Platform.Android.Platform.CreateRenderer(Xamarin.Forms.VisualElement element)[0x00006] Xamarin.Forms.Platform.Android.VisualElementPackager.AddChild(Xamarin.Forms.VisualElement视图,Xamarin.Forms.Platform.Android.IVisualElementRenderer oldRenderer,Xamarin.Forms.Platform.Android.RendererPool pool,System.Boolean sameChildren)[0x00023] in C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ VisualElementPackager.cs:74 at Xamarin.Forms.Platform.Android.VisualElement Packager.SetElement(Xamarin.Forms.VisualElement oldElement,Xamarin.Forms.VisualElement newElement)[0x00104]在Xamarin.Forms.Platform的C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ VisualElementPackager.cs:207中.Android.VisualElementPackager.Load()[0x00000]在C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ VisualElementPackager.cs:58 at Xamarin.Forms.Platform.Android.VisualElementRenderer1 [TElement] .SetPackager( Xamarin.Forms.Platform.Android.VisualElementPackager packager)[0x00007]在C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ VisualElementRenderer.cs:337 at Xamarin.Forms.Platform.Android.VisualElementRenderer1 [TElement] C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ VisualElementRenderer.cs:196中的.SetElement(TElement元素)[0x00111],位于Xamarin.Forms.Platform.Android.VisualElementRenderer1 [TElement] .Xamarin.Forms . Platform.Android.IVisualElementRenderer.SetElement(Xamarin.Forms.VisualEle在T:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ VisualElementRenderer.cs:129中的Xamarin.Forms.Platform.Android.Platform.CreateRenderer(Xamarin.Forms.VisualElement元素)中的[0x00027] 0x001f]在C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ Platform.cs:289 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)[0x00023]在C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ VisualElementPackager.cs:74在Xamarin .Forms.Platform.Android.VisualElementPackager.SetElement(Xamarin.Forms.VisualElement oldElement,Xamarin.Forms.VisualElement newElement)[0x00104]在C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ VisualElementPackager.cs: 207在Xamarin.Forms.Platform.Android.VisualElementPackager.Load()[0x000 00:在C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ VisualElementPackager.cs:58 at Xamarin.Forms.Platform.Android.VisualElementRenderer1 [TElement] .SetPackager(Xamarin.Forms.Platform.Android.VisualElementPackager打包器)[0x00007]在C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ VisualElementRenderer.cs:337 at Xamarin.Forms.Platform.Android.VisualElementRenderer1 [TElement] .SetElement(TElement element)[0x00111]在C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ VisualElementRenderer.cs:196 at Xamarin.Forms.Platform.Android.VisualElementRenderer1 [TElement] .Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement(Xamarin .Forms.VisualElement元素)[0x00027]在C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ VisualElementRenderer.cs:129在Xamarin.Forms.Platform.Android.Platform.CreateRenderer(Xamarin.Forms.VisualElement)元素)[0x0001f]在C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.For中ms.Platform.Android \ Platform.cs:289 at Xamarin.Forms.Platform.Android.VisualElementPackager.AddChild(Xamarin.Forms.VisualElement view,Xamarin.Forms.Platform.Android.IVisualElementRenderer oldRenderer,Xamarin.Forms.Platform.Android . RendererPool池,System.Boolean sameChildren)[0x00023]在C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ VisualElementPackager.cs:74在Xamarin.Forms.Platform.Android.VisualElementPackager.SetElement(Xamarin.Forms) .VisualElement oldElement,Xamarin.Forms.VisualElement newElement)[0x00104] inC:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ VisualElementPackager.cs:207,位于C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin中的Xamarin.Forms.Platform.Android.VisualElementPackager.Load()[0x00000] .Forms.Platform.Android \ VisualElementPackager.cs:58位于C:\ BuildAgent2 \ work \的Xamarin.Forms.Platform.Android.VisualElementRenderer1 [TElement] .SetPackager(Xamarin.Forms.Platform.Android.VisualElementPackager packager)[0x00007]在C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms中的Xamarin.Forms.Platform.Android.VisualElementRenderer1 [TElement] .SetElement(TElement element)[0x00111]中的ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ VisualElementRenderer.cs:337 .Platform.Android \ VisualElementRenderer.cs:196 at Camarin.Forms.Platform.Android.VisualElementRenderer`1 [TElement] .Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement(Xamarin.Forms.VisualElement element)[0x00027] in C :\ BuildAgent2 \工作\ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ VisualElementRende rer.cs:129在C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ Platform.cs中的Xamarin.Forms.Platform.Android.Platform.CreateRenderer(Xamarin.Forms.VisualElement元素)[0x0001f]: 289 at C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ AppCompat中的Xamarin.Forms.Platform.Android.AppCompat.Platform.AddChild(Xamarin.Forms.Page页面,System.Boolean布局)[0x00015] \ Platform.cs:250,位于C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ AppCompat中的Xamarin.Forms.Platform.Android.AppCompat.Platform.SetPage(Xamarin.Forms.Page newRoot)[0x00089] \ Platform.cs:239 at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.InternalSetPage(Xamarin.Forms.Page page)[0x0009b] in C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ AppCompat \ FormsAppCompatActivity .cs:374位于C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ AppCompa中的Xamarin.Forms.Platform.Android.FormsAppCompatActivity.SetMainPage()[0x00000] t \ FormsAppCompatActivity.cs:444位于C:\ BuildAgent2 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Platform.Android \ AppCompat \中的Xamarin.Forms.Platform.Android.FormsAppCompatActivity.LoadApplication(Xamarin.Forms.Application应用程序)[0x00183]在Android的/Users/simonlam/Desktop/Samples/Xamarin/SkiaRemote/SkiaSharpRemote/Droid/MainActivity.cs:25中的SkiaSharpRemote.Droid.MainActivity.OnCreate(Android.OS.Bundle包)[0x0002e]中的FormsAppCompatActivity.cs:135 . Support.V4.App.FragmentActivity.n_OnCreate_Landroid_os_Bundle_(System.IntPtr jnienv,System.IntPtr native__this,System.IntPtr native_savedInstanceState)[0x00011] in <27c17fe440cf491ba8255bcefade6e02>:0 at(wrapper dynamic-method)System.Object:a050e315-9322-4894 -b9ce-8db88ad775ab(intptr,intptr,intptr)

错误并没有告诉我太多,我只看到这是某种铸造错误 .

我有另一个项目也使用了skiasharp . 我基本上遵循相同的路线,但对于这个项目它没有用 .

1 回答

  • 5

    请执行下列操作:

    • 将SkiaSharp.Views.Forms NuGet添加到所有项目中! (PCL / Shared,Android和iOS项目 . )

    • 然后清理并重建您的解决方案 .

    这将解决您的问题 .

相关问题