当前位置: 首页 > 知识库问答 >
问题:

Firebase 崩溃报告仅在应用在预发布测试中运行时显示

裴凯定
2023-03-14

我已经遵循并三次验证了添加Firebase的所有设置步骤

问题是,当上传到Google Play(关闭测试)时,崩溃报告确实会显示在Google Play预发布测试期间发生的崩溃,包括“崩溃测试”按钮,然后我会得到无崩溃用户、日志、堆栈跟踪等。因为这个部分正在工作,所以我的设置似乎是正确的。

我在设备上安装了 Proton VPN,但在测试期间禁用了它。这似乎并不重要。

注意:我无法让崩溃上传是否应用程序随后下载(测试版)从谷歌播放或是否我编译,调试或发布,以便运行它与Android Studio与USB调试到同一设备(但我必须卸载一个安装另一个,只有下载的一个有选项报告崩溃-我不知道是否会上传崩溃,如果我不选择报告,但我从未见过报告的崩溃,在Play控制台,Firebase或其他任何地方。)

有人知道我如何在预发布测试之外将崩溃报告给Crashlytics吗?是否有任何先决条件,如“应用程序必须已上传了相同的版本”或“不允许VPN”或“报告”必须在设备上的弹出对话框中选择崩溃后”或“显示版本字符串不得包含空格”或其他任何东西?(从我在文档上读到的一些东西来看,似乎我应该能够测试一个本地版本并获得崩溃报告。)

我正在使用最新的“花栗鼠”工作室。我刚更新到最新的firebase BOM。

从我的项目级build. gradle:

buildscript {
    repositories {
        google()
        mavenCentral()
        maven {url "https://plugins.gradle.org/m2/" }
        maven { url "https://jitpack.io" }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.2.2'
        //classpath 'com.google.android.gms:oss-licenses-plugin:0.9.5'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        //classpath 'com.github.jk1:gradle-license-report:1.9'
        classpath 'com.github.jk1:gradle-license-report:2.0'

        classpath 'com.google.gms:google-services:4.3.13'
        // Add the Crashlytics Gradle plugin
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.1'
    }
} ...

从我的模块级build.gradle:

plugins {
    id 'com.android.application'
    id 'com.google.gms.google-services'
    id 'com.google.firebase.crashlytics'
}
...
    repositories {
        maven { url "https://jitpack.io" }
        mavenCentral()
    }

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:30.4.0')  // Bill Of Materials
        implementation 'androidx.appcompat:appcompat:1.4.2' // this is last version compatible with Android sdk 31
        implementation 'com.google.code.gson:gson:2.8.6'
        implementation 'com.squareup.retrofit2:retrofit:2.9.0'
        implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
        implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
        implementation 'androidx.navigation:navigation-ui:2.5.1'
        implementation "androidx.lifecycle:lifecycle-process:2.5.1"
        implementation 'androidx.lifecycle:lifecycle-common-java8:2.5.1'
        implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
        implementation 'org.jetbrains:annotations:15.0'
        implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
        implementation 'androidx.preference:preference:1.2.0'
        implementation 'androidx.biometric:biometric:1.1.0'
        implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
        implementation 'org.apache.commons:commons-math3:3.6.1'
        implementation 'com.github.drawers:SpinnerDatePicker:2.1.0'
        testImplementation 'junit:junit:4.13-beta-2'
        androidTestImplementation 'androidx.test:runner:1.4.0'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

        implementation 'ch.qos.logback:logback-classic:1.2.10'
        implementation 'ch.qos.logback:logback-core:1.2.10'
        implementation 'org.codehaus.janino:commons-compiler:3.1.6'

        // for in-app purchases (data service subscription)
        implementation 'com.android.billingclient:billing:5.0.0'

        // for message broadcasting, diagnostics & analytics
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-analytics'
        implementation 'com.google.firebase:firebase-crashlytics'
        implementation 'com.google.firebase:firebase-messaging'
    }

在我的主要活动中:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 ...
        // Obtain the FirebaseAnalytics instance.
        mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
...

            // TODO remove in production
            addTestCrashButtonForCrashlytics();
...
    }

    private void addTestCrashButtonForCrashlytics() {
        Button crashButton = new Button(this);
        crashButton.setText("Test Crash");
        crashButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                throw new RuntimeException("Test Crash"); // Force a crash
            }
        });

我提前感谢所有能帮我解决这个问题的人。

共有1个答案

金健
2023-03-14

的儿子...!在这个问题上花了几天时间,我才找到了答案——实际上,问题是显示版本中有空格。因此,在模块级build.gradle中,我有一个描述性的版本名称,它在Google Play中解释了最新的变化摘要:

        versionName "2022.08.31.99 Blah, blah blah"

,在错误"E/FirebaseCrashlytics:设置请求失败。 java.io. FileNotFoundException: https://firebase-settings.crashlytics.com/spi/v2/platforms/android/gmp/(剪切)

        versionName "2022.08.31.99"

我重新编译了它,并在手机上的USB上运行它,点击测试崩溃按钮,几乎立即得到了一份崩溃报告。支持它,问题就出现了,把它放回去,它起作用了!希望这对其他人有所帮助!

顺便说一下,这是使用一个运行在USB上的本地调试版本工作的。此外,它不必与Google Play中上传的版本相匹配——我随后增加了它,它仍然报告崩溃。它似乎有一个VPN的问题(它可能是特定的服务器,或者可能只是不允许在VPN上。)这些是自动上传到Crashlytics的崩溃——我不需要在弹出窗口中选择“报告”,实际上也不能,因为它们是本地构建,正如我前面提到的,没有提供那个选项。

 类似资料:
  • 应用程序分级: 请帮我解决这个问题。

  • 问题内容: 就像我在标题中说的那样,我正在为iPhone编写一个应用程序,该应用程序可以在调试模式下完美运行,但是当我将其构建为发行版并通过TestFlight安装时,它会崩溃。由于崩溃日志,它可能必须使用以下代码行: 我使用的是Brother的框架而不使用AirPrint进行打印,但是我认为这不是问题,因为应用程序在对框架执行某些操作之前便崩溃了。它仅在我执行这些行的ViewController

  • 当前崩溃报告显示为 异常java.lang.nullpointerException: com.temp.app.helper.convertToString(helper.java:(此处无行号)) com.temp.app.fragment.fragment.fragmentEntername$6.run(fragmentEntername.java:(此处无行号)) android.os.h

  • 我已经成功地将Firebase集成到我的项目中 (身份验证和存储工作很好),但是在简单地集成了Crashlytics并故意(而不是故意)崩溃我的应用程序之后:-没有崩溃报告出现在崩溃仪表板中。 我确实在logcat: d/firebaseApp:com.google.Firebase.crash.firebaseCrash不链接。跳过初始化 i/CrashlyticScore:Crashlytic

  • 我有应用程序上传在玩商店。它在调试模式下运行良好,但当我从play store下载相同的APK(发布模式)时,它就崩溃了。我无法确定堆栈跟踪没有给出准确的错误位置。 java.lang.RuntimeException:在Android.os.AsyncTask$3上完成(asynctask.java:318)在java.util.concurrent.FutureTask.FinishCompl

  • Crashlytics在没有选择输入报告的情况下工作得很好。但一旦我根据教程设置了选择输入报告,它就会停止报告任何内容。 具体地说,我在中添加了以下内容 我注意到这一行很有趣:这可能是问题的原因。但我找不到任何关于这篇日志的信息。

  • 注意:我已经添加了所有的依赖项,包括崩溃和核心依赖项,还有插件和类路径 提前谢谢你。

  • > (IBAction)CrashButtonTapped:(id)发件人{[[Crashlytics sharedInstance]crash];} 单击play_arrow Build,然后在Xcode中运行当前方案,在设备或模拟器上构建应用程序。