Android And iOS Build Issues With External DLL

Hello!
I am working on a mulitplayer game (2D Racer). I have built a masterserver seperatley that manages my maps, server queues etc.

I am using a network library called NetworkComms.net to talk to the master server. It simply sends a simple packet of a string and then gets a reply back.
Example:
Sends string to master server with json serialized object called Map containing my map that. Masterserver replies with “true” and we display to the user that it was successful.

Everything works very well while running in editor. But when attempting to compile to Android or iOS it fails. Please note that it’s my first mobile game and I have only worked
with PC before.

I am using two external DLLs which is NewtonSoft.Json and NetworkComms.Net and I believe they are causing compiling issues. This is the errors Im facing during attempt to compile to android:

Failed running C:\Program Files\Unity\Editor\Data\Tools/UnusedByteCodeStripper2/UnusedBytecodeStripper2.exe -out "C:\Users\admin\BC Sync\Racing Online\Racing Online\Temp\StagingArea\assets\bin\Data\Managed\tempStrip" -l none -c link -b True -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Core.xml" -f "C:\Program Files\Unity\Editor\Data\il2cpp\LinkerDescriptors" -x "C:\Users\admin\BC Sync\Racing Online\Racing Online\Temp\StagingArea\assets\bin\Data\Managed\..\platform_native_link.xml" -x "C:\Users\admin\BC Sync\Racing Online\Racing Online/Temp/StagingArea\assets\bin\Data/methods_pointedto_by_uievents.xml" -x "C:\Users\admin\BC Sync\Racing Online\Racing Online\Temp\StagingArea\assets\bin\Data\preserved_derived_types.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\AI.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Animation.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Audio.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Core.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\IMGUI.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\JSONSerialize.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\ParticlesLegacy.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\ParticleSystem.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Physics.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Physics2D.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Terrain.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\TerrainPhysics.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\TextRendering.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\UI.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\UNET.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\UnityAds.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\UnityAnalytics.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\UnityConnect.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\UnityWebRequest.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\VR.xml" -x "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Whitelists\Web.xml" -d "C:\Users\admin\BC Sync\Racing Online\Racing Online\Temp\StagingArea\assets\bin\Data\Managed" -a  "C:\Users\admin\BC Sync\Racing Online\Racing Online\Temp\StagingArea\assets\bin\Data\Managed\Assembly-CSharp-firstpass.dll" -a  "C:\Users\admin\BC Sync\Racing Online\Racing Online\Temp\StagingArea\assets\bin\Data\Managed\Assembly-CSharp.dll" -a  "C:\Users\admin\BC Sync\Racing Online\Racing Online\Temp\StagingArea\assets\bin\Data\Managed\UnityEngine.UI.dll"

stdout:
Fatal error in Mono CIL Linker
System.Exception: Error processing method: 'System.Void NetworkCommsDotNet.Connections.TCP.TCPConnection::IncomingTCPPacketHandler(System.IAsyncResult)' in assembly: 'NetworkCommsDotNetComplete.dll' ---> Mono.Cecil.ResolutionException: Failed to resolve System.Void System.IO.InvalidDataException::.ctor(System.String)
   vid Mono.Linker.Steps.MarkStep.MarkMethod(MethodReference reference)
   vid Mono.Linker.Steps.MarkStep.MarkInstruction(Instruction instruction)
   vid Mono.Linker.Steps.MarkStep.MarkMethodBody(MethodBody body)
   vid Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method)
   vid Mono.Linker.Steps.MarkStep.ProcessQueue()
   --- Slut p� stacksp�rning f�r interna undantag --- #(Translates to "End of stacktrace for intern exception" in english)
   vid Mono.Linker.Steps.MarkStep.ProcessQueue()
   vid Mono.Linker.Steps.MarkStep.Process()
   vid Mono.Linker.Pipeline.Process(LinkContext context)
   vid Mono.Linker.Driver.RunDriver(Driver driver)
stderr:

UnityEngine.Debug:LogError(Object)
UnityEditorInternal.Runner:RunManagedProgram(String, String, String, CompilerOutputParserBase, Action`1) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:98)
UnityEditorInternal.AssemblyStripper:RunAssemblyLinker(IEnumerable`1, String&, String&, String, String) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:104)
UnityEditorInternal.AssemblyStripper:StripAssembliesTo(String[], String[], String, String, String&, String&, String, IIl2CppPlatformProvider, IEnumerable`1, Boolean) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:97)
UnityEditorInternal.AssemblyStripper:RunAssemblyStripper(String, IEnumerable, String, String[], String[], String, IIl2CppPlatformProvider, RuntimeClassRegistry, Boolean) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:208)
UnityEditorInternal.AssemblyStripper:StripAssemblies(String, IIl2CppPlatformProvider, RuntimeClassRegistry, Boolean) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:128)
UnityEditorInternal.IL2CPPBuilder:Run() (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:205)
UnityEditorInternal.IL2CPPUtils:RunIl2Cpp(String, String, IIl2CppPlatformProvider, Action`1, RuntimeClassRegistry, Boolean) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:132)
UnityEditor.HostView:OnGUI()

And the second error message is:

Exception: C:\Program Files\Unity\Editor\Data\Tools/UnusedByteCodeStripper2/UnusedBytecodeStripper2.exe did not run properly!
UnityEditorInternal.Runner.RunManagedProgram (System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser, System.Action`1 setupStartInfo) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:100)
UnityEditorInternal.AssemblyStripper.RunAssemblyLinker (IEnumerable`1 args, System.String& out, System.String& err, System.String linkerPath, System.String workingDirectory) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:104)
UnityEditorInternal.AssemblyStripper.StripAssembliesTo (System.String[] assemblies, System.String[] searchDirs, System.String outputFolder, System.String workingDirectory, System.String& output, System.String& error, System.String linkerPath, IIl2CppPlatformProvider platformProvider, IEnumerable`1 additionalBlacklist, Boolean developmentBuild) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:97)
UnityEditorInternal.AssemblyStripper.RunAssemblyStripper (System.String stagingAreaData, IEnumerable assemblies, System.String managedAssemblyFolderPath, System.String[] assembliesToStrip, System.String[] searchDirs, System.String monoLinkerPath, IIl2CppPlatformProvider platformProvider, UnityEditor.RuntimeClassRegistry rcr, Boolean developmentBuild) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:208)
UnityEditorInternal.AssemblyStripper.StripAssemblies (System.String stagingAreaData, IIl2CppPlatformProvider platformProvider, UnityEditor.RuntimeClassRegistry rcr, Boolean developmentBuild) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/AssemblyStripper.cs:128)
UnityEditorInternal.IL2CPPBuilder.Run () (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:205)
UnityEditorInternal.IL2CPPUtils.RunIl2Cpp (System.String tempFolder, System.String stagingAreaData, IIl2CppPlatformProvider platformProvider, System.Action`1 modifyOutputBeforeCompile, UnityEditor.RuntimeClassRegistry runtimeClassRegistry, Boolean developmentBuild) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:132)
UnityEditor.Android.PostProcessor.Tasks.RunIl2Cpp.PrepareIl2cppFiles (UnityEditor.Android.PostProcessor.PostProcessorContext context, UnityEditor.Android.AndroidIl2CppPlatformProvider provider)
UnityEditor.Android.PostProcessor.Tasks.RunIl2Cpp.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry)
UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (BuildPostProcessArgs args)
UnityEditor.PostprocessBuildPlayer.Postprocess (BuildTarget target, System.String installPath, System.String companyName, System.String productName, Int32 width, Int32 height, System.String downloadWebplayerUrl, System.String manualDownloadWebplayerUrl, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:176)
UnityEditor.HostView:OnGUI()

I would be super happy if someone had a solution to this. Thank you.

What is the Api Compatibility Level value in the Player Settings for Android? I suspect it is set to a value of “.NET 2.0 Subset”, which means the project is using a small version of the .NET class libraries. The “.NET 2.0 Subset” profile does not include the System.InvalidDataException type, so this error occurs.

It looks like the NetworkCommsDotNetComplete.dll assembly was compiled against the full .NET 2.0 profile, so try changing the Api Compatibility Level value to be “.NET 2.0”. I think that will correct this issue.