2017-01-11 3 views
1

Ich entwickle eine mobile Anwendung mit Xamarin und bekomme einen Fehler beim Ausführen.
Der Fehler tritt sehr oft auf, aber nicht immer.
Ich teste es auf Sumsung Galaxy S6.Mono. Xamarin. Fehler beim Laden von Svg-Bildern. System.MethodAccessException

Der Code, den ich (in Renderer) verwenden:

new SvgReader(new StreamReader(svgStream), 
       new StylesParser(new ValuesParser()), 
       new ValuesParser()); 

Xamarin Version:

  • Xamarin 4.2.0.680
  • Xamarin.Android 7.0.0.18

Ausnahme:

ERROR: System.MethodAccessException: Method `System.Xml.Linq.XContainer:ReadContentFrom (System.Xml.XmlReader)' is inaccessible from method `System.Xml.XmlReader:get_DtdInfo()' 
    at (wrapper managed-to-native) System.Object:__icall_wrapper_mono_throw_method_access (intptr,intptr) 
    at System.Xml.Linq.XContainer.ReadContentFrom (System.Xml.XmlReader r) [0x001a0] in /Users/builder/data/lanes/3511/f4db8a57/source/mono/mcs/class/referencesource/System.Xml.Linq/System/Xml/Linq/XLinq.cs:3073 
    at System.Xml.Linq.XContainer.ReadContentFrom (System.Xml.XmlReader r, System.Xml.Linq.LoadOptions o) [0x00008] in /Users/builder/data/lanes/3511/f4db8a57/source/mono/mcs/class/referencesource/System.Xml.Linq/System/Xml/Linq/XLinq.cs:3090 
    at System.Xml.Linq.XDocument.Load (System.Xml.XmlReader reader, System.Xml.Linq.LoadOptions options) [0x0009b] in /Users/builder/data/lanes/3511/f4db8a57/source/mono/mcs/class/referencesource/System.Xml.Linq/System/Xml/Linq/XLinq.cs:5747 
    at System.Xml.Linq.XDocument.Load (System.IO.TextReader textReader, System.Xml.Linq.LoadOptions options) [0x0000f] in /Users/builder/data/lanes/3511/f4db8a57/source/mono/mcs/class/referencesource/System.Xml.Linq/System/Xml/Linq/XLinq.cs:5693 
    at System.Xml.Linq.XDocument.Load (System.IO.TextReader textReader) [0x00000] in /Users/builder/data/lanes/3511/f4db8a57/source/mono/mcs/class/referencesource/System.Xml.Linq/System/Xml/Linq/XLinq.cs:5666 
    at NGraphics.Custom.Parsers.SvgReader..ctor (System.IO.TextReader reader, NGraphics.Custom.Parsers.IStylesParser stylesParser, NGraphics.Custom.Parsers.IValuesParser valuesParser) [0x0001f] in <c787e3d8c9e842909bf317040008966c>:0 

Wie löse ich den Fehler?

Antwort

2

Ich behielt die Ausnahme Method 'System.Xml.XmlReader:get_DtdInfo()' is inaccessible nach dem Zufallsprinzip, bis ich all das zusätzliche cruft im Doctype und xmlns entfernt, dass gfx-Editoren dazu neigen, dort zu setzen.

Vorher sahen meine SVG-Dateien wie diese ..

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ 
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/"> 
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/"> 
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/"> 
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/"> 
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/"> 
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/"> 
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/"> 
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">]> 
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;" 
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve"> 
    <metadata> 
     <sfw xmlns="&ns_sfw;"> 
      <slices></slices> 
      <sliceSourceBounds width="427.66" height="361.922" x="42.17" y="-436.961" bottomLeftOrigin="true"></sliceSourceBounds> 
     </sfw> 
    </metadata> 
    <g> 
     ... 

Aber ich getrimmt etwas unnötig suchen, bis ich ...

bekam
<?xml version="1.0" encoding="utf-8"?> 
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve"> 
    <g> 
     ... 

Und die zufälligen Abstürze gingen weg für mich. Komplexe dtd/xmlns müssen die lib out ausflippen.

+0

Vielen Dank, es hat mir geholfen. – nikelyn

0

Schlechte Nachrichten, scheint dies in den folgenden Xamarin Bugzilla Beiträge gedeckt werden:

  1. https://bugzilla.xamarin.com/show_bug.cgi?id=44134; (Duplikat)
  2. https://bugzilla.xamarin.com/show_bug.cgi?id=41133

Hier ist die Xamarin Beschreibung für diese Ausnahme.

https://developer.xamarin.com/api/type/System.MethodAccessException/

Vorerst möchte ich in diesen Foren die Behelfslösung vorgeschlagen Umsetzung beraten einfach die Ausnahme abzufangen und weitermachen (leider ...).

+0

der Fehler ist als NEEDINFO markiert, was bedeutet, dass kein Kunde einen guten Testfall bereitstellen konnte; @nikelyn kontaktieren Sie bitte das Xamarin-Team, um ihnen Ihre App zu testen, keine Workarounds zu platzieren oder das wird nie behoben – ympostor

Verwandte Themen