Issue with AOT and iOS

Issue #206 resolved
Filipe Caseirito created an issue

Hi there!

We're having some issues withe the iOS build of our game... Odin works great on PC and Android, but under iOS, we manage to build the project, compile the application on XCode and when we start the application on a device, the erros at the bottom appear continuously on the log and the application doesn't run (just a black screen). We've generated the DLL (scan gives us only one Dictionary from String to SpotData (one of our classes)). We're using Odin 1.0.5.1, and Unity 2017.2.0f3 (on MacOS High Sierra, 10.13). From the error, I have the feeling the build isn't including the generated DLL on the iOS build, but under the properties, "Any Platforms" is ticked. This is critical for us because our client is expecting a working iOS build for 2 days to track progress and we are unable to supply one. Are we missing some step?

ExecutionEngineException: Attempting to call method 'Sirenix.Serialization.ComplexTypeSerializer`1[[UnityEngine.Bounds, UnityEngine.CoreModule, Version=0.0.0.0, Culture=, PublicKeyToken=null]]::.ctor' for which no ahead of time (AOT) code was generated.
  at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters, System.Exception& exc) [0x00000] in <filename unknown>:0 
  at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  at System.Reflection.MonoCMethod.Invoke (BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  at System.Reflection.ConstructorInfo.Invoke (System.Object[] parameters) [0x00000] in <filename unknown>:0 
  at System.Activator.CreateInstance (System.Type type, Boolean nonPublic) [0x00000] in <filename unknown>:0 
  at System.Activator.CreateInstance (System.Type type) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.Serializer.Create (System.Type type) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.Serializer.Get (System.Type type) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.ReflectionFormatter`1[T].DeserializeImplementation (.T& value, IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.BaseFormatter`1[T].Deserialize (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.ComplexTypeSerializer`1[T].ReadValue (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.ListFormatter`1[T].DeserializeImplementation (System.Collections.Generic.List`1& value, IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.BaseFormatter`1[T].Deserialize (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.ComplexTypeSerializer`1[T].ReadValue (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.Serializer`1[T].ReadValueWeak (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, System.Byte[]& bytes, System.Collections.Generic.List`1& referencedUnityObjects, DataFormat format, Sirenix.Serialization.DeserializationContext context) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, SerializationData& data, Sirenix.Serialization.DeserializationContext context, Boolean isPrefabData, System.Collections.Generic.List`1 prefabInstanceUnityObjects) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, SerializationData& data, Sirenix.Serialization.DeserializationContext context) [0x00000] in <filename unknown>:0 
  at Sirenix.OdinInspector.SerializedScriptableObject.UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize () [0x00000] in <filename unknown>:0 
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
  at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  at System.Reflection.MonoCMethod.Invoke (BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  at System.Reflection.ConstructorInfo.Invoke (System.Object[] parameters) [0x00000] in <filename unknown>:0 
  at System.Activator.CreateInstance (System.Type type, Boolean nonPublic) [0x00000] in <filename unknown>:0 
  at System.Activator.CreateInstance (System.Type type) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.Serializer.Create (System.Type type) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.Serializer.Get (System.Type type) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.ReflectionFormatter`1[T].DeserializeImplementation (.T& value, IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.BaseFormatter`1[T].Deserialize (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.ComplexTypeSerializer`1[T].ReadValue (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.ListFormatter`1[T].DeserializeImplementation (System.Collections.Generic.List`1& value, IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.BaseFormatter`1[T].Deserialize (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.ComplexTypeSerializer`1[T].ReadValue (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.Serializer`1[T].ReadValueWeak (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, System.Byte[]& bytes, System.Collections.Generic.List`1& referencedUnityObjects, DataFormat format, Sirenix.Serialization.DeserializationContext context) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, SerializationData& data, Sirenix.Serialization.DeserializationContext context, Boolean isPrefabData, System.Collections.Generic.List`1 prefabInstanceUnityObjects) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, SerializationData& data, Sirenix.Serialization.DeserializationContext context) [0x00000] in <filename unknown>:0 
  at Sirenix.OdinInspector.SerializedScriptableObject.UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize () [0x00000] in <filename unknown>:0 
UnityEngine.DebugLogHandler:Internal_LogException(Exception, Object)
UnityEngine.DebugLogHandler:LogException(Exception, Object)
UnityEngine.Logger:LogException(Exception, Object)
UnityEngine.Debug:LogException(Exception)
System.Action`1:Invoke(T)
Sirenix.Serialization.CustomLogger:LogException(Exception)
Sirenix.Serialization.DebugContext:LogException(Exception)
Sirenix.Serialization.ReflectionFormatter`1:DeserializeImplementation(T&, IDataReader)
Sirenix.Serialization.BaseFormatter`1:Deserialize(IDataReader)
Sirenix.Serialization.ComplexTypeSerializer`1:ReadValue(IDataReader)
Sirenix.Serialization.ListFormatter`1:DeserializeImplementation(List`1&, IDataReader)
Sirenix.Serialization.BaseFormatter`1:Deserialize(IDataReader)
Sirenix.Serialization.ComplexTypeSerializer`1:ReadValue(IDataReader)
Sirenix.Serialization.Serializer`1:ReadValueWeak(IDataReader)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, IDataReader)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, Byte[]&, List`1&, DataFormat, DeserializationContext)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, SerializationData&, DeserializationContext, Boolean, List`1)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, SerializationData&, DeserializationContext)
Sirenix.OdinInspector.SerializedScriptableObject:UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize()

(Filename: currently not available on il2cpp Line: -1)

ExecutionEngineException: Attempting to call method 'Sirenix.Serialization.ComplexTypeSerializer`1[[UnityEngine.Bounds, UnityEngine.CoreModule, Version=0.0.0.0, Culture=, PublicKeyToken=null]]::.ctor' for which no ahead of time (AOT) code was generated.
  at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters, System.Exception& exc) [0x00000] in <filename unknown>:0 
  at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  at System.Reflection.MonoCMethod.Invoke (BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  at System.Reflection.ConstructorInfo.Invoke (System.Object[] parameters) [0x00000] in <filename unknown>:0 
  at System.Activator.CreateInstance (System.Type type, Boolean nonPublic) [0x00000] in <filename unknown>:0 
  at System.Activator.CreateInstance (System.Type type) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.Serializer.Create (System.Type type) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.Serializer.Get (System.Type type) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.ReflectionFormatter`1[T].DeserializeImplementation (.T& value, IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.BaseFormatter`1[T].Deserialize (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.ComplexTypeSerializer`1[T].ReadValue (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.ListFormatter`1[T].DeserializeImplementation (System.Collections.Generic.List`1& value, IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.BaseFormatter`1[T].Deserialize (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.ComplexTypeSerializer`1[T].ReadValue (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.Serializer`1[T].ReadValueWeak (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, System.Byte[]& bytes, System.Collections.Generic.List`1& referencedUnityObjects, DataFormat format, Sirenix.Serialization.DeserializationContext context) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, SerializationData& data, Sirenix.Serialization.DeserializationContext context, Boolean isPrefabData, System.Collections.Generic.List`1 prefabInstanceUnityObjects) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, SerializationData& data, Sirenix.Serialization.DeserializationContext context) [0x00000] in <filename unknown>:0 
  at Sirenix.OdinInspector.SerializedScriptableObject.UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize () [0x00000] in <filename unknown>:0 
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
  at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  at System.Reflection.MonoCMethod.Invoke (BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 
  at System.Reflection.ConstructorInfo.Invoke (System.Object[] parameters) [0x00000] in <filename unknown>:0 
  at System.Activator.CreateInstance (System.Type type, Boolean nonPublic) [0x00000] in <filename unknown>:0 
  at System.Activator.CreateInstance (System.Type type) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.Serializer.Create (System.Type type) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.Serializer.Get (System.Type type) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.ReflectionFormatter`1[T].DeserializeImplementation (.T& value, IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.BaseFormatter`1[T].Deserialize (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.ComplexTypeSerializer`1[T].ReadValue (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.ListFormatter`1[T].DeserializeImplementation (System.Collections.Generic.List`1& value, IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.BaseFormatter`1[T].Deserialize (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.ComplexTypeSerializer`1[T].ReadValue (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.Serializer`1[T].ReadValueWeak (IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, IDataReader reader) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, System.Byte[]& bytes, System.Collections.Generic.List`1& referencedUnityObjects, DataFormat format, Sirenix.Serialization.DeserializationContext context) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, SerializationData& data, Sirenix.Serialization.DeserializationContext context, Boolean isPrefabData, System.Collections.Generic.List`1 prefabInstanceUnityObjects) [0x00000] in <filename unknown>:0 
  at Sirenix.Serialization.UnitySerializationUtility.DeserializeUnityObject (UnityEngine.Object unityObject, SerializationData& data, Sirenix.Serialization.DeserializationContext context) [0x00000] in <filename unknown>:0 
  at Sirenix.OdinInspector.SerializedScriptableObject.UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize () [0x00000] in <filename unknown>:0 
UnityEngine.DebugLogHandler:Internal_LogException(Exception, Object)
UnityEngine.DebugLogHandler:LogException(Exception, Object)
UnityEngine.Logger:LogException(Exception, Object)
UnityEngine.Debug:LogException(Exception)
System.Action`1:Invoke(T)
Sirenix.Serialization.CustomLogger:LogException(Exception)
Sirenix.Serialization.DebugContext:LogException(Exception)
Sirenix.Serialization.ReflectionFormatter`1:DeserializeImplementation(T&, IDataReader)
Sirenix.Serialization.BaseFormatter`1:Deserialize(IDataReader)
Sirenix.Serialization.ComplexTypeSerializer`1:ReadValue(IDataReader)
Sirenix.Serialization.ListFormatter`1:DeserializeImplementation(List`1&, IDataReader)
Sirenix.Serialization.BaseFormatter`1:Deserialize(IDataReader)
Sirenix.Serialization.ComplexTypeSerializer`1:ReadValue(IDataReader)
Sirenix.Serialization.Serializer`1:ReadValueWeak(IDataReader)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, IDataReader)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, Byte[]&, List`1&, DataFormat, DeserializationContext)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, SerializationData&, DeserializationContext, Boolean, List`1)
Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, SerializationData&, DeserializationContext)
Sirenix.OdinInspector.SerializedScriptableObject:UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize()

(Filename: currently not available on il2cpp Line: -1)

Comments (2)

  1. Tor Esa Vestergaard

    Hi Filipe,

    This issue has been resolved in the latest Odin patch, 1.0.5.2, which is currently awaiting release, being submitted for review on the Unity Asset Store. If you urgently need the fix, you can send me your Odin invoice ID at tor@sirenix.net, and I will send you the build right away.

  2. Log in to comment