Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unity Xcode Project PlayerSettings_GetBundleIdentifier

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?

like image 342
Philippe Creytens Avatar asked Dec 13 '16 15:12

Philippe Creytens


People also ask

Can I use Unity with XCode?

You can make an iOS game with Unity. It requires access to at least one Mac, XCode, and to be a registered Apple developer. You will need the Mac at the beginning of the project to set up the signing certificates, and again when the time to upload the project.

How do I run Unity project on XCode?

Build the app by going to File -> Build Settings, selecting iOS and clicking Build. Unity will build the selected scenes and produce an XCode project in the selected folder. Depending on your versions of Unity and Xcode, you may be able to select Build and Run instead.

What is Unityframework?

Unity is one among the Microsoft Application Blocks. It is basically introduced as an IOC container by Microsoft, which helps in easy object creation and de-coupling the module dependencies in your project. To use it, just add the reference of the Unity DLLs to your project.


1 Answers

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.

like image 64
Philippe Creytens Avatar answered Oct 05 '22 12:10

Philippe Creytens