Crashlytics - 当应用程序在未连接到 android studio 时崩溃时无法获取崩溃报告

Posted

技术标签:

【中文标题】Crashlytics - 当应用程序在未连接到 android studio 时崩溃时无法获取崩溃报告【英文标题】:Crashlytics - Unable to get crash reports when the app crashes while not connected to android studio 【发布时间】:2017-02-21 18:31:09 【问题描述】:

我在我的应用中使用 Fabric.io 的 crashytics。

这是我在 MainActivity.java 的最后一个 onCreate() 方法中初始化它的方式:

Fabric.with(this, new Crashlytics());

这是build.gradle (Project: abc) 文件:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript 
    repositories 
        mavenCentral()
        maven  url 'https://maven.fabric.io/public'
    
    dependencies 
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath 'com.google.gms:google-services:3.0.0'
        classpath 'io.fabric.tools:gradle:1.+'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    


allprojects 
    repositories 
        jcenter()
        maven  url "https://dl.bintray.com/hani-momanii/maven"
    


task clean(type: Delete) 
    delete rootProject.buildDir

这是build.gradle (Module: app) 文件:

apply plugin: 'com.android.application'

apply plugin: 'io.fabric'

android 
    compileSdkVersion 25
    buildToolsVersion "25.0.0"

    defaultConfig 
        applicationId "com.xxx.abc"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    
    repositories 
        mavenCentral()
        maven 
            url "https://jitpack.io"
        
        maven  url 'https://maven.fabric.io/public' 
    
    dexOptions 
        javaMaxHeapSize "4g"
    


dependencies 
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile('com.crashlytics.sdk.android:crashlytics:2.6.6@aar') 
        transitive = true;
    


apply plugin: 'com.google.gms.google-services'

<meta-data android:name="io.fabric.ApiKey" android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxx" /> 定义在AndroidManifest.xml 之间的&lt;application&gt; 标记中。

问题是,当应用程序在未连接到 Android Studio 时崩溃时,我无法获取崩溃报告,尽管当应用程序在连接到 Android Studio 时崩溃时我会收到报告。

为什么会发生这种情况以及我如何在应用每次崩溃时获取崩溃报告,无论是否连接到 Android Studio?

【问题讨论】:

在应用程序崩溃后是否重新启动应用程序,其次是否启用即时运行。如果是,请尝试使用即时运行功能再次卸载和安装。 @AnuragSingh 即时运行功能有何影响? 可能是因为您第一次使用 fabric 构建您已连接到 android studio。但是当您断开与它的连接时,您的构建可能没有最新的更改。 【参考方案1】:

Activity 中删除并放入 Application

public class MyApplication extends Application 

@Override
public void onCreate() 
    super.onCreate();
    Fabric.with(this, new Crashlytics());


不要忘记在manifest.xmlApplication标签中添加名称

<application
    ...
    android:name=".MyApplication"
    ...
</application>

【讨论】:

这个应用程序类在哪里? 你必须像创建活动一样创建! 我应该把它从 MainActivity 中删除吗? 用于测试:您可以将null 设置为正在访问的任何对象。它将与NPE 一起崩溃 让我们continue this discussion in chat。

以上是关于Crashlytics - 当应用程序在未连接到 android studio 时崩溃时无法获取崩溃报告的主要内容,如果未能解决你的问题,请参考以下文章

未连接到互联网时如何显示警报? iOS

当应用程序未连接到 xcode 时,iOS 8 静默推送通知不会触发 didReceiveRemoteNotification 方法

didReceiveRemoteNotification:当应用程序处于后台并且未连接到Xcode时未调用fetchCompletionHandler

未连接到服务器时从 Android webview 中的应用程序缓存加载

尽管用户未连接到服务器,但用户仍处于联机状态。并且无法重新连接到服务器

JTDS 未连接到正确的数据库