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][1] 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
[1]: https://forum.unity.com/threads/addressables-and-code-stripping-il2cpp.700883/
↧