Fabric/Firebase 与 Robopods 集成 Libgdx

Fabric/Firebase integration Libgdx with Robopods

我正在尝试将 Fabric/Crashlytics 工具与 RoboPods 绑定以与 Libgdx 游戏集成。

目前,

  1. 我下载了 Fabric.framework、Crashlytics.framework 到我的项目中,并将它们复制到 libs 文件夹下。
  2. 在构建 gradles 中添加了实现
  3. 使用以下代码将 Fabric 注册到 RoboVM

    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. 已将 DYSM 文件上传到 Firebase 控制台。
    到目前为止一切顺利,现在的问题是项目的输出。

    当前工具的库输出,

    "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";

错误是

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>"

我不确定为什么没有将异常上传到 Firebase 控制台。分析事件可以显示在 Firebase 调试视图中,但在 Crashlytics 工具中没有任何反应。谁能帮我解决这个问题?

我通过从 Info.plist 中删除 Fabric API 键解决了这个问题。 在旧版本的 Fabric 中,有一个 api 键用于将 Android 中的元数据放入 Android 中,并将 Info.plist 放入 iOS 中。

之后你可以在 firebase 中看到你的崩溃,但你应该添加 dsym 文件。为了获得该 dsym 文件,请创建一个发布版本并在 iPA 为 iOS 创建的同一文件夹中找到 dsym 文件。

 //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); 

}

也在 robovm.xml 添加

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

添加框架

<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>

享受你的崩溃