Unity Xcode Project PlayerSettings_GetBundleIdentifier

777 views Asked by At

I am currently trying to build an iOS App from Unity but keep running into these 4 errors:

Undefined symbols for architecture arm64:
"_utilityBundleIdentifier", referenced from:
      _NativeBinding_utilityBundleIdentifier_m3566456099 in Bulk_Assembly-CSharp-firstpass_4.o
      _NativeBinding_GetBundleIdentifier_m2869188113 in Bulk_Assembly-CSharp-firstpass_4.o
      _PlayerSettings_GetBundleIdentifier_m1189967083 in Bulk_Assembly-CSharp-firstpass_4.o
     (maybe you meant: _NativeBinding_utilityBundleIdentifier_m3566456099)
  "_utilityBundleVersion", referenced from:
      _NativeBinding_utilityBundleVersion_m3211654534 in Bulk_Assembly-CSharp-firstpass_4.o
      _NativeBinding_GetBundleVersion_m3758909934 in Bulk_Assembly-CSharp-firstpass_4.o
      _PlayerSettings_GetBundleVersion_m1248687572 in Bulk_Assembly-CSharp-firstpass_4.o
     (maybe you meant: _NativeBinding_utilityBundleVersion_m3211654534)
  "_debugProLogMessage", referenced from:
      _NativeBinding_debugProLogMessage_m135661794 in Bulk_Assembly-CSharp-firstpass_2.o
     (maybe you meant: _NativeBinding_debugProLogMessage_m135661794)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Exit code 1 - Undefined symbols for architecture arm64 usually points to a framework that hasn't been included but these references point to PlayerSettings_GetBundleIdentifier which is as far as I can tell a Unity Property.

Also when the bundle identifier, version & build are set in XCode:

Xcode Bundle Identfier

These are the other linker flags Other Linker Flags

What does this error mean? Have I forgotten to include a framework, and which one or is there something wrong in the Unity or XCode settings?

1

There are 1 answers

0
Philippe Creytens On BEST ANSWER

The issue occured because the 3 methods that were referenced in the VoxelBusters did not exist in any of the .h & .m files that were provided with the plugin. Using the __Internal DLLImport you link the methods to Objective-C Code.

[DllImport("__Internal")]
private static extern string utilityBundleVersion ();
[DllImport("__Internal")]
private static extern string utilityBundleIdentifier ();
[DllImport("__Internal")]
public static extern void debugProLogMessage (string _message, eConsoleLogType _type, string _stackTrace);

Did not exist in the XCode Project. When I add these methods to the AppDelegate.h & AppDelegate.m from Unity the errors disappeared and now I can continue working.