firebaselibgdxcrashlyticsrobovm

Fabric/Firebase integration Libgdx with Robopods


I am trying to bind Fabric/Crashlytics tool with RoboPods to integrate with Libgdx game.

Currently,

  1. I downloaded Fabric.framework, Crashlytics.framework into my project and copied them under libs folder.
  2. Added implementation in build gradles
  3. Registered Fabric to RoboVM with following codes

    Fabric.getSharedSDK().setDebug(true);
    Crashlytics.getSharedInstance().setDebugMode(true);
    Signals.installSignals(new InstallSignalsCallback() {
    
        @Override
        public void install() {
            System.out.println("Installing fabric");
            Fabric.with(Crashlytics.class);
    
        }
    }, true);
    NSException.registerDefaultJavaUncaughtExceptionHandler();
    
  4. Uploaded DYSM file to Firebase Console.
    So far so good, now the problem is the output of project.

    Library output for current tools,

    "com.google.admob.ios" = "0.0.0"; "com.twitter.answers.ios" = "1.4.1"; "com.twitter.crashlytics.ios" = "3.14.0"; "io.fabric.sdk.ios" = "1.10.2";

The error is that

2020-01-30 22:36:43.065436+0300 IOSLauncher[7595:2143072] Task <DF535BE8-A3C0-4596-86EF-24B4D9663EDE>.<14> load failed with error Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={_kCFStreamErrorCodeKey=50, NSUnderlyingError=0x28271e250 {Error Domain=kCFErrorDomainCFNetwork Code=-1009 "(null)" UserInfo={_kCFStreamErrorCodeKey=50, _kCFStreamErrorDomainKey=1}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalUploadTask <DF535BE8-A3C0-4596-86EF-24B4D9663EDE>.<14>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalUploadTask <DF535BE8-A3C0-4596-86EF-24B4D9663EDE>.<14>"
), NSLocalizedDescription=The Internet connection appears to be offline., NSErrorFailingURLStringKey=https://e.crashlytics.com/spi/v2/events, NSErrorFailingURLKey=https://e.crashlytics.com/spi/v2/events, _kCFStreamErrorDomainKey=1} [-1009]
2020-01-30 22:36:43.065726+0300 IOSLauncher[7595:2143072] Task <638D9538-47C6-4782-8C11-F3A1CF477EA5>.<15> load failed with error Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={_kCFStreamErrorCodeKey=50, NSUnderlyingError=0x2827334e0 {Error Domain=kCFErrorDomainCFNetwork Code=-1009 "(null)" UserInfo={_kCFStreamErrorCodeKey=50, _kCFStreamErrorDomainKey=1}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalUploadTask <638D9538-47C6-4782-8C11-F3A1CF477EA5>.<15>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalUploadTask <638D9538-47C6-4782-8C11-F3A1CF477EA5>.<15>"
), NSLocalizedDescription=The Internet connection appears to be offline., NSErrorFailingURLStringKey=https://e.crashlytics.com/spi/v2/events, NSErrorFailingURLKey=https://e.crashlytics.com/spi/v2/events, _kCFStreamErrorDomainKey=1} [-1009]
2020-01-30 22:36:43.065992+0300 IOSLauncher[7595:2143072] Task <F95438B8-375D-4A1B-B7BF-260204462ADD>.<16> load failed with error Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={_kCFStreamErrorCodeKey=50, NSUnderlyingError=0x282733e40 {Error Domain=kCFErrorDomainCFNetwork Code=-1009 "(null)" UserInfo={_kCFStreamErrorCodeKey=50, _kCFStreamErrorDomainKey=1}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalUploadTask <F95438B8-375D-4A1B-B7BF-260204462ADD>.<16>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalUploadTask <F95438B8-375D-4A1B-B7BF-260204462ADD>.<16>"

I am not sure why the exceptions not uploaded to Firebase console. Analytics events can be shown in Firebase Debug View but nothing happens in Crashlytics tool. Can anyone help me to handle this issue?


Solution

  • I solved this problem by removing Fabric API key from Info.plist. In old versions of Fabric there is an api key to put into meta-data in Android and to put Info.plist in iOS.

    After that you can see your crashes in firebase but you should add dsym files. In order to get that dsym file create a release build and find dsym file in the same folder that iPA created for iOS.

     //This would be enough to initialize fabric.
        @Override
    public boolean didFinishLaunching(UIApplication application, UIApplicationLaunchOptions launchOptions) {
        System.out.println("didFinishLaunching with options");
        Fabric.getSharedSDK().setDebug(true);
        Crashlytics.getSharedInstance().setDebugMode(true);
        FIRApp.configure();
        NSException.registerDefaultJavaUncaughtExceptionHandler(); //DO NOT FORGET TO ADD THIS
        return super.didFinishLaunching(application,launchOptions); 
    
    }
    

    Also in robovm.xml add

    <exportedSymbols>
            <symbol>CLS*</symbol>
    </exportedSymbols>
    

    add frameworks

    <framework>FIRAnalyticsConnector</framework>
    <framework>FirebaseAnalytics</framework>
    <framework>FirebaseCore</framework>
    <framework>FirebaseCoreDiagnostics</framework>
    <framework>FirebaseInstanceID</framework>
    <framework>GoogleAppMeasurement</framework>
    <framework>GoogleUtilities</framework>
    <framework>nanopb</framework>
    <framework>Fabric</framework>
    <framework>Crashlytics</framework>
    

    Enjoy your crashes