在Unity Project上将脚本后端从Mono设置为IL2CPP后,当它运行lib类的XML反序列化(从dll库)时,它会在运行时抛出异常。
Google Play将很快不再接受不包含64位版本的构建。这意味着在Unity中我们必须从单声道切换到IL2CPP。目标设备是Android设备。
我们尝试使用不同版本的.Net框架来构建dll库。我们还尝试在默认构造函数(无参数)中添加一些指令。然后,我们在反序列化调用之前使用构造函数,以防在构建时进行剥离。我们试图通过代码强制禁用剥离级别,但我们不知道它是否有效。
下面是出现问题的类,其中反序列化失败。
namespace Api.Common.Licence
{
[XmlRoot(ElementName = "DeviceLicenceFile")]
public class DeviceLicenceFile
{
public DeviceLicenceFile()
{
//Email = null; //tried that for an example but is usually empty
}
[XmlElement(ElementName = "Email")]
public string Email { get; set; }
[...]
}
}
这是我的序列化函数
public static T Deserialize<T>(string text)
{
var serializer = new XmlSerializer(typeof(T));
T obj = (T) (serializer.Deserialize(new StringReader(text)));
return obj;
}
一切都可以使用Mono,但对于IL2CPP,它会抛出以下错误=> "System.InvalidOperationException:反映类型‘Api.Common.Licence.DeviceLicenceFile.’的错误。-> System.InvalidOperationException: Api.Common.Licence.DeviceLicenceFile无法序列化,因为它没有默认的公共构造函数“当然,我们有一个无参数的构造函数。
编辑:我们在Unity 2018.4上
https://stackoverflow.com/questions/56343715
复制相似问题