I have a library project (a custom view library project) which doesn\'t have any Activities/services. I want to integrate Crashlytics SDK to my library. When I try to add it via
It can be done, with the help of the parent app that consumes the module.
build.gradle
of the library module. implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9'
public static Crashlytics crash;
Crashlytics.getInstance();
to that variable.crash.core.logException(e);
anywhere in the library and sent off to the Firebase console - but include a null check in case eg. library test methods are being called without a parent app.throw new RuntimeException("test");
in the library should also show up in the console.Create an android library project with the following gradle:
apply plugin: 'com.android.library'
<-- other project specific includes -->
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'io.fabric'
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
compile('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') {
transitive = true;
}
}
To your base project add the maven line to allProjects/repositories:
allprojects {
repositories {
jcenter()
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
}
}
From your application project add a dependency to the newly created library project. for example:
compile project(':crashlytics_lib')
You need an app module at the moment, even if your intention is to integrate Crashlytics only in your library. If what you only have is the library, there is no reasonable way of doing that, not officially yet at least.
See below for generating the necessary stuff first in the app side and then moving (some of them) towards your library such as the initialization.
When you onboard a kit, Fabric sets up the initialization code inside the base project, not the library. Here's how you'd do it...