- Home /
MissingMethodException: Default constructor not found for type iOSStepCounter
I just updated my mobile game project to Unity 2021.2, and now my iOS builds are broken. The builds succeed in Unity Cloud Build, but when I run the IPA on my iPhone, the scene just hangs and doesn't respond to any of my inputs. Then, on the dashboard for Unity Cloud Diagnostics Crash and Exception Reporting, I see over 760 instances of the following exception (so presumably it's happening every frame):
MissingMethodException: Default constructor not found for type UnityEngine.InputSystem.iOS.LowLevel.iOSStepCounter UnityEngine.InputSystem.Layouts.InputDeviceBuilder.InstantiateLayout(UnityEngine.InputSystem.Layouts.InputControlLayout layout, UnityEngine.InputSystem.Utilities.InternedString variants, UnityEngine.InputSystem.Utilities.InternedString name, UnityEngine.InputSystem.InputControl parent) (at /opt/workspace/workspace/derploid.highhandholdem.ios-dev/HighHandHoldem/Library/PackageCache/com.unity.inputsystem@1.1.1/InputSystem/Devices/InputDeviceBuilder.cs:119)
From looking at the InputSystem source code, and a similar question online, it appears that the iOSStepCounter
constructor is being removed from the build during managed code stripping because it is only ever accessed by reflection (an Activator.CreateInstance
call in InputDeviceBuilder
), so presumably I can fix this by adding iOSStepCounter
to a link.xml
file. What I don't understand is, why is InputDeviceBuilder
even trying to instantiate this type? I don't use a step counter anywhere in my game, and I even have "iOS > Motion Usage" set to false in my InputSystem settings. So does anyone know why I'm seeing this error at all?
I have the following setup:
Unity version: 2021.2.2f1
InputSystem package version: 1.1.1
Test device: iPhone 11 Pro Max
Test device iOS version: 15.1
Project Settings:
Input System Package > iOS > Motion Usage: false
Player > iOS > Other Settings > Configuration > API Compatibility Level: .NET Standard 2.1
Player > iOS > Other Settings > Configuration > Target Device: iPhone + iPad
Player > iOS > Other Settings > Configuration > Target SDK: Device SDK
Player > iOS > Other Settings > Configuration > Target minimum iOS Version: 12.2
Player > iOS > Other Settings > Configuration > Active Input Handling: Both
Player > iOS > Other Settings > Optimization > Managed Stripping Level: Medium
Your answer
Follow this Question
Related Questions
Help In Making a SphereCast for 3D Tire! Working RayCast Script included! 0 Answers
New Input System: How do I use "sensors"? 0 Answers
No Line numbers in stack trace for debug android build using IL2CPP 1 Answer
Did logic for selecting assemblies for UnusedByteCodeStripper2 and il2cpp change? 1 Answer