App crashes after switching to IL2CPP

Hey guys,

today I wanted to publish my first alpha release on Google Play, so I switched from Mono to IL2CPP to follow the new 64-bit rule. But my game crashes on a lot of devices, providing following error:

No implementation found for java.lang.Object com.unity3d.player.ReflectionHelper.nativeProxyInvoke(long, java.lang.String, java.lang.Object[ ]) (tried Java_com_unity3d_player_ReflectionHelper_nativeProxyInvoke and Java_com_unity3d_player_ReflectionHelper_nativeProxyInvoke__JLjava_lang_String_2_3Ljava_lang_Object_2)

Caused by: java.lang.UnsatisfiedLinkError: No implementation found for java.lang.Object com.unity3d.player.ReflectionHelper.nativeProxyInvoke(long, java.lang.String, java.lang.Object[ ]) (tried Java_com_unity3d_player_ReflectionHelper_nativeProxyInvoke and Java_com_unity3d_player_ReflectionHelper_nativeProxyInvoke__JLjava_lang_String_2_3Ljava_lang_Object_2)
at com.unity3d.player.ReflectionHelper.nativeProxyInvoke(Native Method)
at com.unity3d.player.ReflectionHelper.a(Unknown Source)
at com.unity3d.player.ReflectionHelper$1.invoke(Unknown Source)
at java.lang.reflect.Proxy.invoke(Proxy.java:813)
at $Proxy6.OnSetupFailed(Unknown Source)
at com.unity.purchasing.common.UnityPurchasing.OnSetupFailed(UnityPurchasing.java:20)
at com.unity.purchasing.googleplay.GooglePlayPurchasing$7.onIabSetupFinished(GooglePlayPurchasing.java:714)
at com.unity.purchasing.googleplay.IabHelper.finishSetup(IabHelper.java:291)
at com.unity.purchasing.googleplay.IabHelper.access$000(IabHelper.java:77)
at com.unity.purchasing.googleplay.IabHelper$1.workWith(IabHelper.java:278)
at com.unity.purchasing.googleplay.BillingServiceManager$2.run(BillingServiceManager.java:146)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)

I am using Unity 2019.2.13f1, Unity IAP and Unity Monetization are up to date.
I tried all of the fixes I found online, which are:

  • disable auto-backup
  • change install location to force internal
  • change API compatibility level to NET 4.x

Any ideas on how to fix this?

Apparently this is fixed in Unity 2020.1.0a13, but I don’t like using alpha versions for final releases…

The problem indicates il2cpp strips stuff it should strip.
Do you have AndroidJavaProxy in your project? If not, then simply having one to fool il2cpp into thinking that you use it might help.
A bug report would be useful, this looks like an issue to be fixed.