【问题标题】:XML Serialization exception on Android after migrating from Unity 2019 to 2020从 Unity 2019 迁移到 2020 后 Android 上的 XML 序列化异常
【发布时间】:2021-10-07 00:15:18
【问题描述】:

我终于将我的项目从 Unity 2019.4.28f1 迁移到了 2020.3.14f1。在清理了一些弃用之后,一切似乎都恢复了正常,但是在 Android 上部署时,我现在看到了 XML 反序列化的问题。尝试从字符串反序列化数据时出现此异常:

NotSupportedException: Parent does not have a default constructor. The default constructor must be explicitly defined.
 
    at System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor (System.Reflection.MethodAttributes attributes) [0x00070] in <1dc10152da894b47b8bbfed156e7b841>:0
    at System.Xml.Serialization.XmlSerializationILGen.GenerateBaseSerializer (System.String baseSerializer, System.String readerClass, System.String writerClass, System.Xml.Serialization.CodeIdentifiers classes) [0x00103] in <d0db3f607625460db8f5df59fe982070>:0
    at System.Xml.Serialization.TempAssembly.GenerateRefEmitAssembly (System.Xml.Serialization.XmlMapping[] xmlMappings, System.Type[] types, System.String defaultNamespace, System.Security.Policy.Evidence evidence) [0x002ed] in <d0db3f607625460db8f5df59fe982070>:0
    at System.Xml.Serialization.TempAssembly..ctor (System.Xml.Serialization.XmlMapping[] xmlMappings, System.Type[] types, System.String defaultNamespace, System.String location, System.Security.Policy.Evidence evid

这是我正在使用的辅助方法:

public static T DeserializeXml<T>(this string xml)
    {
        T obj = default(T);

        XmlSerializer serializer = new XmlSerializer(typeof(T));
        using (TextReader textReader = new StringReader(xml))
        {
            obj = (T)serializer.Deserialize(textReader);
        }

        return obj;
    }

这一切都工作了多年,没有问题。在编辑器中运行或部署到 iOS 或独立/桌面后不会发生这些异常。所以它似乎只与编译到Android有关。 我四处寻找,但没有找到任何具体的线索是什么原因以及如何解决它。所以欢迎任何提示!

【问题讨论】:

    标签: android unity3d c#-4.0 mono


    【解决方案1】:

    在播放器设置中使用脚本 backend=Mono 时,我遇到了类似的问题。

    使用 IL2CPP 选项解决了我的问题:

    播放器设置 -> 其他设置 -> 配置:

    但使用此设置,我无法进行开发构建。 因此,这个解决方案是一个临时解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      • 1970-01-01
      相关资源
      最近更新 更多