[FIXED] 5.6 IOS IL2CPP build fails

I’m getting this repeated error when I try to build a iOS build with IL2CPP on Unity 5.6.
It’s roughly at 75% of the build process.
The error is not there on Mono backend. (however Xcode gives a ‘32bit support missing’ error)

Failed running /Applications/Unity/Unity.app/Contents/Tools/UnusedByteCodeStripper2/UnusedBytecodeStripper2.exe --api NET_2_0_Subset -out "/Users/davidsmit/pipecosystem/Temp/StagingArea/Data/Managed/tempStrip" -l none -c link -b true -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/Core.xml" -f "/Applications/Unity/Unity.app/Contents/il2cpp/LinkerDescriptors" -x "/Users/davidsmit/pipecosystem/Temp/StagingArea/Data/Managed/../platform_native_link.xml" -x "/Users/davidsmit/pipecosystem/Temp/StagingArea/Data/methods_pointedto_by_uievents.xml" -x "/Users/davidsmit/pipecosystem/Temp/StagingArea/Data/preserved_derived_types.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/AI.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/Animation.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/Audio.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/Cloth.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/Core.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/CrashReporting.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/IMGUI.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/Input.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/JSONSerialize.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/ParticleSystem.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/ParticlesLegacy.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/PerformanceReporting.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/Physics.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/Physics2D.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/Terrain.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/TerrainPhysics.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/TextRendering.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/UI.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/UNET.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/UnityAds.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/UnityAnalytics.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/UnityConnect.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/UnityWebRequest.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/UnityWebRequestAudio.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/VR.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/Vehicles.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/Video.xml" -x "/Applications/Unity/PlaybackEngines/iOSSupport/Whitelists/Web.xml" -d "/Users/davidsmit/pipecosystem/Temp/StagingArea/Data/Managed" -a  "/Users/davidsmit/pipecosystem/Temp/StagingArea/Data/Managed/Assembly-CSharp-firstpass.dll" -a  "/Users/davidsmit/pipecosystem/Temp/StagingArea/Data/Managed/Assembly-CSharp.dll" -a  "/Users/davidsmit/pipecosystem/Temp/StagingArea/Data/Managed/Assembly-UnityScript-firstpass.dll" -a  "/Users/davidsmit/pipecosystem/Temp/StagingArea/Data/Managed/UnityEngine.Advertisements.dll" -a  "/Users/davidsmit/pipecosystem/Temp/StagingArea/Data/Managed/UnityEngine.UI.dll" -a  "/Users/davidsmit/pipecosystem/Temp/StagingArea/Data/Managed/UnityEngine.Analytics.dll" -a  "/Users/davidsmit/pipecosystem/Temp/StagingArea/Data/Managed/DOTween.dll" -a  "/Users/davidsmit/pipecosystem/Temp/StagingArea/Data/Managed/DOTweenPro.dll" -a  "/Users/davidsmit/pipecosystem/Temp/StagingArea/Data/Managed/ES2.dll"

stdout:
SweepReport:
Mono.Cecil.MethodDefinition (12752) => FieldType Get(System.String), System.Void Set(System.String,FieldType), System.Void SetStatic(System.String,FieldType), System.Void DebugPrint(System.String,System.String,System.String,System.Object[]), FieldType _Get(System.String), ...
Mono.Cecil.TypeDefinition (2520) => UnityEngine.WeakListenerBindings, UnityEngine.UserAuthorization, UnityEngine.ApplicationInstallMode, UnityEngine.ApplicationSandboxType, UnityEngine.AssetBundleManifest, ...
Mono.Cecil.FieldDefinition (948) => AdvertisingIdentifierCallback OnAdvertisingIdentifierCallback, UnityEngine.Application/LogCallback modreq(System.Runtime.CompilerServices.IsVolatile) s_RegisterLogCallbackDeprecated, System.String unsupportedIdentifier, System.Byte kIsVisibleMask, System.Byte kDistanceMask, ...
Fatal error in Mono CIL Linker
System.ArgumentException: Member 'UnityEngine.AudioClip' is declared in another module and needs to be imported
  at Mono.Cecil.MetadataBuilder.LookupToken (Mono.Cecil.IMetadataTokenProvider provider) [0x00027] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.SignatureWriter.MakeTypeDefOrRefCodedRID (Mono.Cecil.TypeReference type) [0x00000] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.SignatureWriter.WriteTypeSignature (Mono.Cecil.TypeReference type) [0x00161] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.SignatureWriter.WriteMethodSignature (Mono.Cecil.IMethodSignature method) [0x00085] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.MetadataBuilder.GetMethodSignature (Mono.Cecil.IMethodSignature method) [0x00006] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.MetadataBuilder.AddMethod (Mono.Cecil.MethodDefinition method) [0x0003c] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.MetadataBuilder.AddMethods (Mono.Cecil.TypeDefinition type) [0x00013] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.MetadataBuilder.AddType (Mono.Cecil.TypeDefinition type) [0x000a2] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.MetadataBuilder.AddTypeDefs () [0x00018] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.MetadataBuilder.BuildTypes () [0x00014] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.MetadataBuilder.BuildModule () [0x0007e] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.MetadataBuilder.BuildMetadata () [0x00000] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.ModuleWriter+<>c.<BuildMetadata>b__1_0 (Mono.Cecil.MetadataBuilder builder, Mono.Cecil.MetadataReader _) [0x00000] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.ModuleDefinition.Read[TItem,TRet] (TItem item, System.Func`3[T1,T2,TResult] read) [0x00029] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.ModuleWriter.BuildMetadata (Mono.Cecil.ModuleDefinition module, Mono.Cecil.MetadataBuilder metadata) [0x0000f] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.ModuleWriter.WriteModuleTo (Mono.Cecil.ModuleDefinition module, System.IO.Stream stream, Mono.Cecil.WriterParameters parameters) [0x000b7] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.ModuleDefinition.Write (System.IO.Stream stream, Mono.Cecil.WriterParameters parameters) [0x00022] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.ModuleDefinition.Write (System.String fileName, Mono.Cecil.WriterParameters parameters) [0x0000a] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Cecil.AssemblyDefinition.Write (System.String fileName, Mono.Cecil.WriterParameters parameters) [0x00000] in <0304696c64424476882bed0a697f98eb>:0
  at Mono.Linker.Steps.OutputStep.OutputAssembly (Mono.Cecil.AssemblyDefinition assembly) [0x0004d] in <6b6a6b3d682b49c4a8b0c4f50e76a8a6>:0
  at Mono.Linker.Steps.OutputStep.ProcessAssembly (Mono.Cecil.AssemblyDefinition assembly) [0x00001] in <6b6a6b3d682b49c4a8b0c4f50e76a8a6>:0
  at Mono.Linker.Steps.BaseStep.Process (Mono.Linker.LinkContext context) [0x00031] in <6b6a6b3d682b49c4a8b0c4f50e76a8a6>:0
  at Mono.Linker.Pipeline.Process (Mono.Linker.LinkContext context) [0x00019] in <6b6a6b3d682b49c4a8b0c4f50e76a8a6>:0
  at Mono.Linker.Driver.Run (System.Collections.Generic.IEqualityComparer`1[T] typeComparer, System.Collections.Generic.IEqualityComparer`1[T] methodComparer) [0x003e2] in <6b6a6b3d682b49c4a8b0c4f50e76a8a6>:0
  at Mono.Linker.Driver.RunDriverWithErrorHandling (Mono.Linker.Driver driver, System.Collections.Generic.IEqualityComparer`1[T] typeComparer, System.Collections.Generic.IEqualityComparer`1[T] methodComparer) [0x00001] in <6b6a6b3d682b49c4a8b0c4f50e76a8a6>:0
  at Mono.Linker.Driver.RunDriver (Mono.Linker.Driver driver, System.Collections.Generic.IEqualityComparer`1[T] typeComparer, System.Collections.Generic.IEqualityComparer`1[T] methodComparer) [0x00002] in <6b6a6b3d682b49c4a8b0c4f50e76a8a6>:0
stderr:

UnityEngine.Debug:LogError(Object)
UnityEditorInternal.Runner:RunManagedProgram(String, String, String, CompilerOutputParserBase, Action`1) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:96)
UnityEditorInternal.AssemblyStripper:RunAssemblyLinker(IEnumerable`1, String&, String&, String, String) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:102)
UnityEditorInternal.AssemblyStripper:StripAssembliesTo(String[], String[], String, String, String&, String&, String, IIl2CppPlatformProvider, IEnumerable`1) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:95)
UnityEditorInternal.AssemblyStripper:RunAssemblyStripper(String, IEnumerable, String, String[], String[], String, IIl2CppPlatformProvider, RuntimeClassRegistry) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:201)
UnityEditorInternal.AssemblyStripper:StripAssemblies(String, IIl2CppPlatformProvider, RuntimeClassRegistry) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:126)
UnityEditorInternal.IL2CPPBuilder:Run() (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:143)
UnityEditorInternal.IL2CPPUtils:RunIl2Cpp(String, String, IIl2CppPlatformProvider, Action`1, RuntimeClassRegistry, Boolean) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:34)
UnityEditor.HostView:OnGUI()

We have seen a similar issue before. This can happen when one of the assemblies in your project was not updated to the latest Unity API properly. Unfortunately the error does not indicate which assembly is the problem.

If you have any managed assemblies in the project, you can manually update them by selecting the “Reimport” option from the context menu on the assembly in the project browser.

Thanks Josh!

I re-imported the project and it seems to be working again.
Love the new update, so I’m very happy I can build again!

Thanks for the quick reply!
Cheers

I wasn’t sure which assembly was the culprit, so I just re-imported my entire project. It took ~2 hours (literally), but it worked! Thanks for the pointer Josh & David. =D

I just hit this problem as well and stumbled onto this thread (after finding a related issue in the tracker and submitting a bug report) because we have the same exception during export for iOS: “System.ArgumentException: Member ‘UnityEngine.AudioClip’ is declared in another module and needs to be imported”.

The Unity build pipeline doesn’t detect that there was an error and the only indication that there’s a problem is the export folder is empty. The Editor log shows the exception while running UnusedByteCodeStripper2.

I’m about to try reimporting the managed assemblies to try to fix things. Unity is magic at a bunch of things but reimporting entire projects is not one of them so I’ll leave that option for later :slight_smile: