【问题标题】:Fabric/Firebase integration Libgdx with RobopodsFabric/Firebase 将 Libgdx 与 Robopods 集成
【发布时间】:2020-01-30 20:08:53
【问题描述】:

我正在尝试将 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 工具中没有任何反应。谁能帮我解决这个问题?

【问题讨论】:

    标签: firebase libgdx crashlytics robovm


    【解决方案1】:

    我通过从 Info.plist 中删除 Fabric API 密钥解决了这个问题。 在旧版本的 Fabric 中,有一个 api 密钥可以放入 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>
    

    享受你的崩溃

    【讨论】:

    • 现在不需要把fabric API key放在任何地方(Manifest/Info.plist) ??
    • 是的,我想在 Fabric 与 Firebase Fabric api 集成后检查是否有 API 密钥。如果存在 api 密钥,则向旧结构后端发送请求,否则向新结构后端(即 Firebase)发送请求。我试图将 Fabric Key 放入新的 swift 项目中,也出现了同样的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 2016-06-14
    • 2018-05-08
    • 2023-04-07
    • 2013-07-27
    • 1970-01-01
    • 2019-02-28
    相关资源
    最近更新 更多