14

Unable to add Firebase Crashlytics dependencies/classpath in Android for Gradle 7.2

Where should I write.

classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.0'

I successfully mapped Google services as.

    classpath 'com.google.gms:google-services:4.3.10'    
    //to
    id "com.google.gms.google-services" version "4.3.10" apply false

Getting following error if I map Crashlytics classpath

Exception is:
org.gradle.api.plugins.UnknownPluginException: Plugin [id: 'com.google.firebase.firebase-crashlytics-gradle', version: '2.9.0', apply: false] was not found in any of the following sources:

- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (could not resolve plugin artifact 'com.google.firebase.firebase-crashlytics-gradle:com.google.firebase.firebase-crashlytics-gradle.gradle.plugin:2.9.0')
  Searched in the following repositories:
    Gradle Central Plugin Repository
    Google
    MavenRepo
    BintrayJCenter
    maven(https://jitpack.io)

Project level Gradle

plugins {
    id 'com.android.application' version '7.1.2' apply false
    id 'com.android.library' version '7.1.2' apply false
    id 'org.jetbrains.kotlin.android' version '1.5.30' apply false
    id "com.google.gms.google-services" version "4.3.10" apply false
    // below line has a problem
    id 'com.google.firebase.firebase-crashlytics-gradle' version '2.9.0' apply false

}

task clean(type: Delete) {
    delete rootProject.buildDir
}

dependencies {

}

Gradle-wrapper.properties

#Thu May 12 10:12:33 PKT 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

settings.gradle

pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
        jcenter()
        maven { url 'https://jitpack.io' }

    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        jcenter()
        maven { url 'https://jitpack.io' }

    }
}
rootProject.name = "Video Player"
include ':app'

I had searched a lot before posting this question but didn't find something useful.

Ammar Abdullah
  • 802
  • 4
  • 8
  • 21

5 Answers5

28

Add this inside Root project build.gradle

plugins {
    id 'com.google.gms.google-services' version '4.3.10' apply false
    id 'com.google.firebase.crashlytics' version '2.9.1' apply false
    .... some others classpath
}

And this inside the App Module build.gradle

plugins {
    .... some others plugins
    id 'com.google.gms.google-services'
    id 'com.google.firebase.crashlytics'
}

And finally...

implementation platform('com.google.firebase:firebase-bom:30.3.1')
implementation 'com.google.firebase:firebase-crashlytics-ktx'
implementation 'com.google.firebase:firebase-analytics-ktx'

So force a crash in your code, something like this

throw RuntimeException("Crashlytics Test")

Now check your Firebase Console

Done!

Williaan Lopes
  • 1,177
  • 15
  • 11
  • Great, that was the answer I was looking for! – Koger Oct 27 '22 at 08:08
  • Actually, @Williaan, do you have a general instruction on how to go from "classpath" approach to the newer "plugins only" way? There a lots of integration instructions using the old way and I would use the new one everywhere to be consistent. For example, know I am trying to add OSS Licenses Gradle Plugin this way ( https://github.com/google/play-services-plugins/blob/master/oss-licenses-plugin/README.md ) - any suggestions? – Koger Oct 27 '22 at 08:11
25

The documentation is not updated for the new Android project structure yet.

In your project level build.gradle you need to add this:

buildscript {
  //other things....
  dependencies {
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.0'
  }
}

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
  id 'com.android.application' version '7.2.1' apply false
  id 'com.android.library' version '7.2.1' apply false
  id 'org.jetbrains.kotlin.android' version '1.6.20' apply false
  id "com.google.gms.google-services" version "4.3.10" apply false
}

task clean(type: Delete) {
  delete rootProject.buildDir
}

Then in your app level build.gradle at the start you need to add the plugin

plugins {
  id 'com.android.application'
  id 'org.jetbrains.kotlin.android'
  id 'com.google.firebase.crashlytics'
}

and then in the same file add the Crashlytics dependencies to the corresponding block:

dependencies {
   //... other dependencies
   implementation platform('com.google.firebase:firebase-bom:30.1.0')

   implementation 'com.google.firebase:firebase-crashlytics-ktx'
   implementation 'com.google.firebase:firebase-analytics-ktx'
}
MatPag
  • 41,742
  • 14
  • 105
  • 114
6

You should use like this

   id 'com.google.firebase.crashlytics' version '2.9.2' apply false
5

In your project's build.gradle:

buildscript {
    ...
    ext.crashlytics_version = '2.9.1'
}

plugins {
    ...
    id 'com.google.firebase.crashlytics' version "$crashlytics_version" apply false
}

Then in your app's build.gradle, apply the plugin:

plugins {
    ...
    id 'com.google.firebase.crashlytics'
}
DarC
  • 61
  • 4
0

Use the Kotlin libraries, even if you're on Java:

...
implementation platform('com.google.firebase:firebase-bom:30.3.1')
implementation 'com.google.firebase:firebase-crashlytics-ktx'
implementation 'com.google.firebase:firebase-analytics-ktx'
...
Dankim
  • 81
  • 2
  • 4