xamarin/Xamarin.Forms

[Bug] Conflict with SkiaSharp Library

オープン

#5,901 opened on 2019/04/12

 (6 件のコメント) (2 件のリアクション) (0 人の担当者)C# (1,926 件のフォーク)batch import
e/4 :clock4:help wantedinactivet/bug :bug:up-for-grabs

Repository metrics

Stars
 (5,644 個のスター)
PR merge metrics
 (30d に merged PR はありません)

説明

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

コントリビューターガイド