xcodefirebaseandroid-studiolibgdxrobovm

Undefined symbols for architecture x86_64 while implementing firebase messaging in Libgdx ios module


I am getting following error while installing app on iOS simulator. I am using Android Studio to build and compile my libgdx project.

RoboVM version 2.3.10-SNAPSHOT Xcode 11.3.1 Android Studio 4.1

[

ERROR] 22:33:38.721 Undefined symbols for architecture x86_64:
[ERROR] 22:33:38.721   "_OBJC_CLASS_$_FIRInstallations", referenced from:
[ERROR] 22:33:38.735       objc-class-ref in FirebaseInstanceID(FIRInstanceID.o)
[ERROR] 22:33:38.735       objc-class-ref in FirebaseInstanceID(FIRInstanceIDTokenOperation.o)
[ERROR] 22:33:38.881   "_FIRInstallationIDDidChangeNotification", referenced from:
[ERROR] 22:33:38.895       -[FIRInstanceID observeFirebaseInstallationIDChanges] in FirebaseInstanceID(FIRInstanceID.o)
[ERROR] 22:33:40.900   "_kFIRInstallationIDDidChangeNotificationAppNameKey", referenced from:
[ERROR] 22:33:40.900       -[FIRInstanceID installationIDDidChangeNotificationReceived:] in FirebaseInstanceID(FIRInstanceID.o)
[ERROR] 22:33:40.900 ld: symbol(s) not found for architecture x86_64
[ERROR] 22:33:40.900 clang: error: linker command failed with exit code 1 (use -v to see invocation)
[ERROR] Couldn't compile app
org.apache.commons.exec.ExecuteException: Command '[/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++, -o, /Users/amar/Desktop/pujan/One-Line-Puzzle/ios/robovm-build/tmp/ios-olp/ios/x86_64/IOSLauncher, -arch, x86_64, -Wl,-filelist,/Users/amar/Desktop/pujan/One-Line-Puzzle/ios/robovm-build/tmp/ios-olp/ios/x86_64/objects0, -w, -L, /Users/amar/.robovm-sdks/robovm-2.3.10-SNAPSHOT/lib/vm/ios/x86_64, -ObjC, -exported_symbols_list, /Users/amar/Desktop/pujan/One-Line-Puzzle/ios/robovm-build/tmp/ios-olp/ios/x86_64/exported_symbols, -Wl,-no_implicit_dylibs, -Wl,-dead_strip, -F/Users/amar/Desktop/pujan/One-Line-Puzzle/ios/sim_libs, -fPIC, -mios-simulator-version-min=8.0, -isysroot, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.2.sdk, -Xlinker, -sectcreate, -Xlinker, __TEXT, -Xlinker, __entitlements, -Xlinker, /Users/amar/Desktop/pujan/One-Line-Puzzle/ios/robovm-build/tmp/ios-olp/ios/x86_64/Entitlements-Simulated.plist, -lrobovm-bc, -force_load, /Users/amar/.robovm-sdks/robovm-2.3.10-SNAPSHOT/lib/vm/ios/x86_64/librobovm-rt.a, -lrobovm-debug, -lrobovm-core, -lgc, -lpthread, -ldl, -lm, -lz, -liconv, -lsqlite3, -framework, Foundation, -framework, FirebaseMessaging, -framework, FirebaseInstanceID, -framework, Protobuf, -framework, FirebaseCore, -framework, GoogleUtilities, -framework, PromisesObjC, -framework, UIKit, -framework, OpenGLES, -framework, QuartzCore, -framework, CoreGraphics, -framework, OpenAL, -framework, AudioToolbox, -framework, AVFoundation, -force_load, /Users/amar/.robovm/cache/ios/x86_64/release/Users/amar/.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-platform/1.9.10/f301537137e0dffa0c84b6c6626dc8de51877f8a/gdx-platform-1.9.10-natives-ios.jar.extracted/META-INF/robovm/ios/libs/libgdx.a, -force_load, /Users/amar/.robovm/cache/ios/x86_64/release/Users/amar/.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-platform/1.9.10/f301537137e0dffa0c84b6c6626dc8de51877f8a/gdx-platform-1.9.10-natives-ios.jar.extracted/META-INF/robovm/ios/libs/libObjectAL.a, -lz, -framework, MobileCoreServices, -Xlinker, -sdk_version, -Xlinker, 13.2, -Xlinker, -rpath, -Xlinker, /usr/lib/swift, -Xlinker, -rpath, -Xlinker, @executable_path/Frameworks, -Xlinker, -rpath, -Xlinker, @loader_path/Frameworks]' failed  (Exit value: 1)
    at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:404)
    at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:166)
    at org.robovm.compiler.util.Executor.exec(Executor.java:344)
    at org.robovm.compiler.util.ToolchainUtil.link(ToolchainUtil.java:404)
    at org.robovm.compiler.target.AbstractTarget.doBuild(AbstractTarget.java:290)
    at org.robovm.compiler.target.ios.IOSTarget.doBuild(IOSTarget.java:343)
    at org.robovm.compiler.target.AbstractTarget.build(AbstractTarget.java:284)
    at org.robovm.compiler.Linker.link(Linker.java:449)
    at org.robovm.compiler.AppCompiler.compile(AppCompiler.java:525)
    at org.robovm.compiler.AppCompiler.build(AppCompiler.java:964)
    at org.robovm.idea.compilation.RoboVmCompileTask$3.doCompile(RoboVmCompileTask.java:310)
    at org.robovm.idea.compilation.RoboVmCompilerThread.run(RoboVmCompilerThread.java:66)

Solution

  • FirebaseInstallations framework is missing from you libs folder as indicated in the second line of your error log.

    Also the following list of frameworks are needed to use the messaging-robopod.

        <framework>FIRAnalyticsConnector</framework>
        <framework>FirebaseAnalytics</framework>
        <framework>FirebaseCore</framework>
        <framework>FirebaseCoreDiagnostics</framework>
        <framework>FirebaseInstallations</framework> <!-- !-->
        <framework>FirebaseMessaging</framework>
        <framework>GoogleAppMeasurement</framework>
        <framework>GoogleDataTransport</framework> <!-- ! -->
        <framework>GoogleDataTransportCCTSupport</framework> <!-- ! -->
        <framework>GoogleUtilities</framework>
        <framework>nanopb</framework>
        <framework>PromisesObjC</framework>
        <framework>Protobuf</framework>
    

    Make sure you include all of these. The GoogleDataTransportCCTSupport might not be mandatory.