xamarin/Xamarin.Forms

[Bug] Conflict with SkiaSharp Library

Aperta

#5901 aperta il 12 apr 2019

 (6 commenti) (2 reazioni) (0 assegnatari)C# (1926 fork)batch import
e/4 :clock4:help wantedinactivet/bug :bug:up-for-grabs

Metriche repository

Star
 (5644 stelle)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

Description

There seems to be some kind of conflict with SkiaSharp library that Xamarin Forms and FFImageLoading uses. This wasn't an issue before.

Steps to Reproduce

  1. Add Svg File to project
<?xml version="1.0" encoding="UTF-8"?>
<svg width="201px" height="2px" viewBox="0 0 201 2" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 54 (76480) - https://sketchapp.com -->
    <title>entry field</title>
    <desc>Created with Sketch.</desc>
    <g id="Intro/Onboarding" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="square">
        <g id="1.1-Zip-Code-Entry" transform="translate(-87.000000, -358.000000)" fill-rule="nonzero" stroke="#231E51">
            <g id="Entry-Field" transform="translate(88.000000, 325.000000)">
                <g id="entry-field" transform="translate(0.127341, 33.000000)">
                    <path d="M2.27373675e-13,1 L33.8726592,1" id="Line"></path>
                    <path d="M41.25,1 L75.1226592,1" id="Line"></path>
                    <path d="M82.5,1 L116.372659,1" id="Line"></path>
                    <path d="M123.75,1 L157.622659,1" id="Line"></path>
                    <path d="M165,1 L198.872659,1" id="Line"></path>
                </g>
            </g>
        </g>
    </g>
</svg>
  1. Set new file as embedded resource
  2. Try to reference the svg file.
<ffs:SvgCachedImage Source="resource://App28.bg_field_bottom_border.svg" Aspect="AspectFill" HeightRequest="100" WidthRequest="100" />

Expected Behavior

FFImageLoading Svg Images renders on the page.

Actual Behavior

None of the FFImageLoading Svg Images render at all.

From the Build Log 3>Found conflicts between different versions of "SkiaSharp" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

From the Debug Log

Image loading failed: resource://App28.Resources.bg_field_bottom_border.svg?assembly=App28,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=null;(size=0x0,dip=True,type=SvgDataResolver)
System.MissingMethodException: Method not found: void SkiaSharp.SKPath.AddRoundRect(SkiaSharp.SKRect,single,single,SkiaSharp.SKPathDirection)
  at FFImageLoading.Svg.Platform.SKSvg.ReadElement (System.Xml.Linq.XElement e, SkiaSharp.SKCanvas canvas, SkiaSharp.SKPaint stroke, SkiaSharp.SKPaint fill) [0x00440] in C:\projects\ffimageloading\source\FFImageLoading.Svg.Shared\SkSvg.cs:280 
  at FFImageLoading.Svg.Platform.SKSvg.ReadElement (System.Xml.Linq.XElement e, SkiaSharp.SKCanvas canvas, SkiaSharp.SKPaint stroke, SkiaSharp.SKPaint fill) [0x006c6] in C:\projects\ffimageloading\source\FFImageLoading.Svg.Shared\SkSvg.cs:356 
  at FFImageLoading.Svg.Platform.SKSvg.ReadElement (System.Xml.Linq.XElement e, SkiaSharp.SKCanvas canvas, SkiaSharp.SKPaint stroke, SkiaSharp.SKPaint fill) [0x006c6] in C:\projects\ffimagelo
ading\source\FFImageLoading.Svg.Shared\SkSvg.cs:356 
04-11 19:11:35.706 I/mono-stdout(29706): Image loading failed: resource://App28.Resources.bg_field_bottom_border.svg?assembly=App28,%20Version=1.0.0.0,%20Culture=neutral,%20PublicKeyToken=null;(size=0x0,dip=True,type=SvgDataResolver)
04-11 19:11:35.706 I/mono-stdout(29706): System.MissingMethodException: Method not found: void SkiaSharp.SKPath.AddRoundRect(SkiaSharp.SKRect,single,single,SkiaSharp.SKPathDirection)  at FFImageLoading.Svg.Platform.SKSvg.ReadElement (System.Xml.Linq.XElement e, SkiaSharp.SKCanvas canvas, SkiaSharp.SKPaint stroke, SkiaSharp.SKPaint fill) [0x006c6] in C:\projects\ffimageloading\source\FFImageLoading.Svg.Shared\SkSvg.cs:356 
  at FFImageLoading.Svg.Platform.SKSvg.ReadElement (System.Xml.Linq.XElement e, SkiaSharp.SKCanvas canvas, SkiaSharp.SKPaint stroke, SkiaSharp.SKPaint fill) [0x006c6] in C:\projects\ffimageloading\source\FFImageLoading.Svg.Shared\SkSvg.cs:356 
  at FFImageLoading.Svg.Platform.SKSvg.LoadElements (System.Collections.Generic.IEnumerable`1[T] elements, SkiaSharp.SKCanvas canvas, SkiaSharp.SKPaint stroke, SkiaSharp.SKPaint fill) [0x00010] in C:\projects\ffimageloading\source\FFImageLoading.Svg.Shared\SkSvg.cs:214 
  at FFImageLoading.Svg.Platform.SKSvg.Load (System.Xml.Linq.XDocument xdoc) [0x003f9] in C:\projects\ffimageloading\source\FFImageLoading.Svg.Shared\SkSvg.cs:202 
  at FFImageLoading.Svg.Platform.SKSvg.Load (System.Xml.XmlReader reader) [0x00000] in C:\projects\ff

04-11 19:11:35.706 I/mono-stdout(29706):   at FFImageLoading.Svg.Platform.SKSvg.ReadElement (System.Xml.Linq.XElement e, SkiaSharp.SKCanvas canvas, SkiaSharp.SKPaint stroke, SkiaSharp.SKPaint fill) [0x00440] in C:\projects\ffimageloading\source\FFImageLoading.Svg.Shared\SkSvg.cs:280 imageloading\source\FFImageLoading.Svg.Shared\SkSvg.cs:96 
  at FFImageLoading.Svg.Platform.SKSvg.Load (System.IO.Stream stream) [0x00012] in C:\projects\ffimageloading\source\FFImageLoading.Svg.Shared\SkSvg.cs:90 
  at FFImageLoading.Svg.Platform.SvgDataResolver.Resolve (System.String identifier, FFImageLoading.Work.TaskParameter parameters, System.Threading.CancellationToken token) [0x00198] in C:\projects\ffimageloading\source\FFImageLoading.Svg.Shared\SvgDataResolver.cs:102 
  at FFImageLoading.DataResolvers.WrappedDataResolver.Resolve (System.String identifier, FFImageLoading.Work.TaskParameter parameters, System.Threading.CancellationToken token) [0x00044] in C:\projects\ffimageloading\source\FFImageLoading.Common\DataResolvers\WrappedDataResolver.cs:22 
  at FFImageLoading.Work.ImageLoaderTask`3[TDecoderContainer,TImageContainer,TImageView].RunAsync () [0x00300] in C:\projects\ffimageloading\source\FFImageLoading.Common\Work\ImageLoaderTask.cs:553 

04-11 19:11:35.707 I/mono-stdout(29706):   at FFImageLoading.Svg.Platform.SKSvg.ReadElement (System.Xml.Linq.XElement e, SkiaSharp.SKCanvas canvas, SkiaSharp.SKPaint stroke, SkiaSharp.SKPaint fill) [0x006c6] in C:\projects\ffimageloading\source\FFImageLoading.Svg.Shared\SkSvg.cs:356 
04-11 19:11:35.707 I/chatty  (29706): uid=10090(com.companyname.App28) Thread Pool Wor identical 2 lines
04-11 19:11:35.708 I/mono-stdout(29706):   at FFImageLoading.Svg.Platform.SKSvg.ReadElement (System.Xml.Linq.XElement e, SkiaSharp.SKCanvas canvas, SkiaSharp.SKPaint stroke, SkiaSharp.SKPaint fill) [0x006c6] in C:\projects\ffimageloading\source\FFImageLoading.Svg.Shared\SkSvg.cs:356 
04-11 19:11:35.708 I/mono-stdout(29706):   at FFImageLoading.Svg.Platform.SKSvg.LoadElements (System.Collections.Generic.IEnumerable`1[T] elements, SkiaSharp.SKCanvas canvas, SkiaSharp.SKPaint stroke, SkiaSharp.SKPaint fill) [0x00010] in C:\projects\ffimageloading\source\FFImageLoading.Svg.Shared\SkSvg.cs:214 
04-11 19:11:35.708 I/mono-stdout(29706):   at FFImageLoading.Svg.Platform.SKSvg.Load (System.Xml.Linq.XDocument xdoc) [0x003f9] in C:\projects\ffimageloading\source\FFImageLoading.Svg.Shared\SkSvg.cs:202 
04-11 19:11:35.711 I/mono-stdout(29706):   at FFImageLoading.Svg.Platform.SKSvg.Load (System.Xml.XmlReader reader) [0x00000] in C:\projects\ffimageloading\source\FFImageLoading.Svg.Shared\SkSvg.cs:96 
04-11 19:11:35.711 I/mono-stdout(29706):   at FFImageLoading.Svg.Platform.SKSvg.Load (System.IO.Stream stream) [0x00012] in C:\projects\ffimageloading\source\FFImageLoading.Svg.Shared\SkSvg.cs:90 
04-11 19:11:35.712 I/mono-stdout(29706):   at FFImageLoading.Svg.Platform.SvgDataResolver.Resolve (System.String identifier, FFImageLoading.Work.TaskParameter parameters, System.Threading.CancellationToken token) [0x00198] in C:\projects\ffimageloading\source\FFImageLoading.Svg.Shared\SvgDataResolver.cs:102 
04-11 19:11:35.713 I/mono-stdout(29706):   at FFImageLoading.DataResolvers.WrappedDataResolver.Resolve (System.String identifier, FFImageLoading.Work.TaskParameter parameters, System.Threading.CancellationToken token) [0x00044] in C:\projects\ffimageloading\source\FFImageLoading.Common\DataResolvers\WrappedDataResolver.cs:22 
04-11 19:11:35.714 I/mono-stdout(29706):   at FFImageLoading.Work.ImageLoaderTask`3[TDecoderContainer,TImageContainer,TImageView].RunAsync () [0x00300] in C:\projects\ffimageloading\source\FFImageLoading.Common\Work\ImageLoaderTask.cs:553 

Workaround I believe I have found a workaround. It seems to work better when I install the SkiaSharp library.

Basic Information

  • Version with issue: 3.6.0.293080

  • Last known good version:

  • IDE: Visual Studio 2019 and Visual Studio for Mac 2019

  • Platform Target Frameworks:

    • iOS: 12.1
    • Android: 9.0 Pie
    • UWP: N/A
  • Android Support Library Version: 28.0.0.1

  • Nuget Packages: Xamarin.Forms 3.6.0.293080 FormsToolkit 2.0.1 Humanizer 2.6.2 Newtonsoft.Json 12.0.1 NodaTime 2.4.5 Plugin.Permissions 3.0.0.12 Refractored.MvvmHelpers 1.3.0 Refractored.XamForms.PullToRefresh 2.4.1 Xamarin.FFImageLoading 2.4.5.880-pre Xamarin.FFImageLoading.Forms 2.4.5.880-pre Xamarin.FFImageLoading.Svg 2.4.5.880-pre Xamarin.FFImageLoading.Svg.Forms 2.4.5.880-pre Xamarin.FFImageLoading.Transformations 2.4.5.880-pre Xamarin.Essentials 1.1.0 Xamarin.HotReload 1.2.4

  • Affected Devices: All

Guida contributor