UnmetDependencyException:Crashlytics版本ID丢失

时间:2019-09-19 11:49:27

标签: android firebase crashlytics

在应用程序清单中添加Fabric应用程序ID并在应用程序类文件中初始化Fabric之后,我现在面临以下堆栈跟踪的另一个异常。

java.lang.RuntimeException: Unable to create application fibamlscan.app.App: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: The Crashlytics build ID is missing. This occurs when Crashlytics tooling is absent from your app's build configuration. Please review Crashlytics onboarding instructions and ensure you have a valid Crashlytics account.
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6309)
    at android.app.ActivityThread.access$1200(ActivityThread.java:241)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1807)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7156)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
 Caused by: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: The Crashlytics build ID is missing. This occurs when Crashlytics tooling is absent from your app's build configuration. Please review Crashlytics onboarding instructions and ensure you have a valid Crashlytics account.
    at com.crashlytics.android.core.CrashlyticsCore.onPreExecute(CrashlyticsCore.java:243)
    at com.crashlytics.android.core.CrashlyticsCore.onPreExecute(CrashlyticsCore.java:211)
    at io.fabric.sdk.android.InitializationTask.onPreExecute(InitializationTask.java:44)
    at io.fabric.sdk.android.services.concurrency.AsyncTask.executeOnExecutor(AsyncTask.java:611)
    at io.fabric.sdk.android.services.concurrency.PriorityAsyncTask.executeOnExecutor(PriorityAsyncTask.java:43)
    at io.fabric.sdk.android.Kit.initialize(Kit.java:69)
    at io.fabric.sdk.android.Fabric.initializeKits(Fabric.java:466)
    at io.fabric.sdk.android.Fabric.init(Fabric.java:410)
    at io.fabric.sdk.android.Fabric.setFabric(Fabric.java:368)
    at io.fabric.sdk.android.Fabric.with(Fabric.java:339)
    at fibamlscan.app.App.onCreate(App.java:28)
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1158)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6304)
    at android.app.ActivityThread.access$1200(ActivityThread.java:241) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1807) 
    at android.os.Handler.dispatchMessage(Handler.java:106) 
    at android.os.Looper.loop(Looper.java:214) 
    at android.app.ActivityThread.main(ActivityThread.java:7156) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975) 

我已经按照stacktrace的建议尝试了所有可能的方法。但是解决这个错误没有任何作用。

我还检查了我的build文件夹中是否在每次构建后都生成了build id,但是我无法弄清楚Crashlytics为什么不能使用该build id。

这是在构建文件夹的res /值内自动生成的构建ID。

    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <resources xmlns:tools="http://schemas.android.com/tools">
<!--
  This file is automatically generated by Crashlytics to uniquely 
  identify individual builds of your Android application.

  Do NOT modify, delete, or commit to source control!
-->
    <string tools:ignore="UnusedResources,TypographyDashes" name="com.crashlytics.android.build_id" translatable="false">1f3b35bb-2686-4f3f-91fe-87e8a05e2f71</string>
    </resources>

4 个答案:

答案 0 :(得分:0)

此处是Fabric / Firebaser-

这通常是由于配置安装Fabric的说明存在问题。确保未在调用ext.enableCrashlytics = false语句的任何构建配置中设置Fabric.with

还要确保apply plugin 'io.fabric'之后apply plugin: 'com.android.application在您的build.gradle中。

最后,如果您恰巧运行的是Fabric或Crashlytics的旧版本,请尝试更新这些依赖项。在此处完整的说明和信息:https://fabric.io/kits/android/crashlytics/install

答案 1 :(得分:0)

也许它有点老了,但我也遇到了这个问题。我不得不将这些插件按顺序放在build.gradle文件的底部:

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

答案 2 :(得分:0)

我知道我花了太多时间通知我是否找到了解决方案,但是在问了问题本身几周后我找到了解决方案,而该解决方案与Firebase Crashlytics毫无关系,也没有他回答我到这里为我工作,我不知道为什么。找到解决方案后,我在互联网上搜寻了很长一段时间,以找出为何该愚蠢的解决方案尽管无关紧要的事实仍然有效。

据我所知,这是解决方案,因为我很久以前就找到了解决方案,所以我认为我将应用程序图标更改为某些自定义应用程序图标,并更改了清单中的应用程序图标引用文件。就像魅力一样!

真的很抱歉,如果我不能给出解决方案的解释,因为它是一种成功的尝试方法,但是请尝试到底,并告诉我它是否有效。并且,如果它起作用了,并且您找到了令人信服的原因解释,请在评论部分告诉我。

答案 3 :(得分:0)

我面临的同一问题可以通过两步解决

第1步-在firebase consol中启用Crashlatics-选择项目-> 质量->崩溃->单击启用按钮

第2步-降级gradle版本表格

classpath 'com.android.tools.build:gradle:4.1.0-alpha08' 

收件人

classpath 'com.android.tools.build:gradle:3.5.3'

非常适合我,但请确保使用以下配置 在项目gradle文件中

   classpath 'io.fabric.tools:gradle:1.31.2' 

   repositories {
      
         maven {
               url 'https://maven.fabric.io/public'
         }
    }

和应用gradle文件

apply plugin: 'io.fabric' 

和依赖性

implementation "com.crashlytics.sdk.android:crashlytics:$FIREBASE_CRASHLATICS_VERSION"