0
\$\begingroup\$

I have made a simple game using Unity with Vuforia and exported for Android and iOS. It works fine on Android, but on iOS it crashed and gave the error:

ArgumentNullException: Argument cannot be null. Parameter name: 
format at System.Type.GetTypeFromHandle (RuntimeTypeHandle handle) [0x00000] in :0 
at System.String.FormatHelper (System.Text.StringBuilder result, IFormatProvider provider, System.String format, System.Object[] args) [0x00000] in :0 
at System.String.Format (IFormatProvider provider, System.String format, System.Object[] args) [0x00000] in :0 
at System.String.Format (System.String format, System.Object[] args) [0x00000] in :0 
at UnityEngine.Debug.LogFormat (System.String format, System.Object[] args) [0x00000] in :0 
at Vuforia.TrackerManager.InitTracker[T] () [0x00000] in :0 
at Vuforia.TrackerManager.InitTracker[T] () [0x00000] in :0 
at Vuforia.TrackerManager.InitTracker[T] () [0x00000] in :0

(Filename: currently not available on il2cpp Line: -1)

\$\endgroup\$
1
  • 3
    \$\begingroup\$ It is very hard to read your error log with such formatting. Consider editing the question and putting that part in code format. Besides, with so little information on your setting it will be unlikely that someone will be able to help. \$\endgroup\$ – MAnd Jan 20 '16 at 11:58
2
\$\begingroup\$

First, you should try to replicate the issue in the Editor. The Editor runs the assemblies in debug, which should provide more information in the stacktrace you copied (like the line number, and all).

You can use the code formatter, which gives the current stacktrace:

ArgumentNullException:
Argument cannot be null.
Parameter name: format 
at System.Type.GetTypeFromHandle (RuntimeTypeHandle handle) [0x00000] in :0 
at System.String.FormatHelper (System.Text.StringBuilder result, IFormatProvider provider, System.String format, System.Object[] args) [0x00000] in :0 
at System.String.Format (IFormatProvider provider, System.String format, System.Object[] args) [0x00000] in :0 
at System.String.Format (System.String format, System.Object[] args) [0x00000] in :0 
at UnityEngine.Debug.LogFormat (System.String format, System.Object[] args) [0x00000] in :0 
at Vuforia.TrackerManager.InitTracker[T] () [0x00000] in :0 
at Vuforia.TrackerManager.InitTracker[T] () [0x00000] in :0 
at Vuforia.TrackerManager.InitTracker[T] () [0x00000] in :0

Now, what is happening, is that in Vuforia's trackermanager, there's a Unity.Debug.LogFormat call, that is trying to pass a null argument. You should report that to Vuforia's dev.

It's either a bug on your side (not setting up things correctly, not getting rid of them properly, not having access to certain resources on iOS; can be anything, really), or theirs. If it's theirs, do a bug report to them. Or ask them. They should have some support. Or look at their doc/FAQ.

\$\endgroup\$
2
  • \$\begingroup\$ I traced the error and seems it is not Vuforia. i added an environment to my game.When i run it on ios it didnt work and gave it to me the error: shader unsupported: 'nature/terrain/specular pass "prepass" has no vertex shader. could you help me please how to fix it \$\endgroup\$ – user3279901 Jan 20 '16 at 15:22
  • \$\begingroup\$ Unfortunately no, I cannot. You should look up shader documentation and support in Unity's documentation, and see if there's a tutorial covering them. \$\endgroup\$ – Florian D. Jan 21 '16 at 11:32

Not the answer you're looking for? Browse other questions tagged or ask your own question.