2

收到一个InvalidCastExceptionin LoadApplication(new App());。我在 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行后加载的应用程序。如果我取消注释,则会引发以下异常。

在 Xamarin.Forms.Registrar 的(包装器 castclass)System.Object:__castclass_with_cache (object,intptr,intptr)1[TRegistrable].GetHandler (System.Type type) [0x0001b] in C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Core\Registrar.cs:24 at Xamarin.Forms.Registrar1[TRegistrable].GetHandler[TOut](System.Type 类型)[0x00000] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Core\Registrar.cs:29 在 Xamarin.Forms.Platform.Android.Platform。 CreateRenderer (Xamarin.Forms.VisualElement element) [0x00006] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\Platform.cs:288 在 Xamarin.Forms.Platform.Android.VisualElementPackager.AddChild (Xamarin. Forms.VisualElement 视图,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] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:207 在 Xamarin.Forms.Platform.Android.VisualElementPackager.Load () [0x00000] 在 C:\ BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:58 在 Xamarin.Forms.Platform.Android.VisualElementRenderer1[TElement].SetPackager (Xamarin.Forms.Platform.Android.VisualElementPackager packager) [0x00007] in 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 在 Xamarin.Forms.Platform.Android.VisualElementRenderer 1[TElement].Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00027] in C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:129 at Xamarin.Forms.Platform.Android.Platform.CreateRenderer (Xamarin.Forms.VisualElement element) [0x0001f] in 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] in C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:74 at Xamarin.Forms.Platform.Android.VisualElementPackager.SetElement (Xamarin.Forms.VisualElement oldElement, Xamarin.Forms.VisualElement newElement) [0x00104] in C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:207 at Xamarin.Forms.Platform.Android.VisualElementPackager.Load () [0x00000] in 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 在 Xamarin.Forms.Platform.Android.VisualElementRenderer1[TElement].SetElement (TElement element) [0x00111] in 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.Forms.Platform.Android\Platform.cs:289 在 Xamarin.Forms .Platform.Android.VisualElementPackager.AddChild(Xamarin.Forms.VisualElement 视图,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] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:207 在 Xamarin.Forms.Platform.Android .VisualElementPackager.Load () [0x00000] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementPackager.cs:58 在 Xamarin.Forms.Platform.Android.VisualElementRendererAndroid.VisualElementRendererAndroid.VisualElementRenderer1[TElement].SetPackager (Xamarin.Forms.Platform.Android.VisualElementPackager packager) [0x00007] in C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:337 at Xamarin.Forms.Platform.Android.VisualElementRenderer1[TElement].SetElement(TElement 元素)[0x00111] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:196 在 Xamarin.Forms.Platform.Android.VisualElementRenderer`1[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] 在 Xamarin.Forms.Platform 的 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\Platform.cs:289 中。 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform 中的 Android.AppCompat.Platform.AddChild(Xamarin.Forms.Page 页面,System.Boolean 布局)[0x00015]。Android\AppCompat\Platform.cs:250 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform 中的 Xamarin.Forms.Platform.Android.AppCompat.Platform.SetPage (Xamarin.Forms.Page newRoot) [0x00089]。 Android\AppCompat\Platform.cs:239 在 Xamarin.Forms.Platform.Android.FormsAppCompatActivity.InternalSetPage(Xamarin.Forms.Page 页面)[0x0009b] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\ AppCompat\FormsAppCompatActivity.cs:374 在 Xamarin.Forms.Platform.Android.FormsAppCompatActivity.SetMainPage () [0x00000] 在 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:444 C:\BuildAgent2\work\ca3766cfc22354a1\Xamarin.Forms.Platform 中的 Xamarin.Forms.Platform.Android.FormsAppCompatActivity.LoadApplication(Xamarin.Forms.Application 应用程序)[0x00183]。Android\AppCompat\FormsAppCompatActivity.cs:135 在 /Users/simonlam/Desktop/Samples/Xamarin/SkiaRemote/SkiaSharpRemote/Droid/MainActivity.cs 中的 SkiaSharpRemote.Droid.MainActivity.OnCreate (Android.OS.Bundle bundle) [0x0002e]: 25 在 Android.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)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-8db884775abint ( ,intptr)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-8db884775abint ( ,intptr)

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

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

4

1 回答 1

4

请执行下列操作:

  1. 将 SkiaSharp.Views.Forms NuGet 添加到所有项目!(PCL/Shared、Android 和 iOS 项目。)
  2. 然后清理并重建您的解决方案。

这将解决您的问题。

于 2017-05-26T09:27:40.283 回答