将Crashlytics集成到库项目中

20
我有一个库项目(自定义视图库项目),它没有任何活动/服务。 我想将Crashlytics SDK集成到我的库中。 当我尝试通过Android Studio的Crashlytics插件(工具栏中的图标)添加它时,它只停留在“检查”处,用于“选择要安装的套件”。问题是如何将Crashlytics添加到我的Android库项目中?最好的问候。
3个回答

5

有了消费模块的父应用程序的帮助,可以实现这一点。

  • 使用常规步骤在父应用程序上设置Firebase。
  • 将此添加到库模块的build.gradle中。
  implementation 'com.google.firebase:firebase-core:16.0.1'
  implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9'
  • 在库模块中创建一个带有静态变量的类:public static Crashlytics crash;
  • 在父级Application类中,将Crashlytics.getInstance();赋值给该变量。
  • 库模块可以在任何位置调用crash.core.logException(e);并发送到Firebase控制台 - 但请包含空值检查以防止例如在没有父应用程序的情况下调用库测试方法。
  • 库中的其他未处理异常,例如 throw new RuntimeException("test"); 也会显示在控制台上。

2
为什么不使用Crashlytics.logException()呢?它是静态的,因此只需使用上述列表中的第1点和第2点。 - Kocus

4

目前您需要一个应用程序模块,即使您的意图只是在库中集成Crashlytics。如果您只有库,则没有合理的方法可以做到这一点,至少目前还没有官方的方法。

请参见下面的链接,首先在应用程序侧生成必要的内容,然后将(其中一些)移动到库中,例如初始化。

当您启用工具包时,Fabric会在基本项目中设置初始化代码,而不是在库中。以下是如何操作...


请注意,在包含与Crashlytics相关的编译依赖项的链中,必须在从根库项目到应用程序项目的所有库项目中设置'repositories { maven { url 'https://maven.fabric.io/public' }}'。 - arberg

2
使用以下Gradle创建一个Android库项目:
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;
  }
}

在您的基础项目中,将以下Maven代码行添加到所有Projects/Repositories中:
allprojects {
  repositories {
      jcenter()
      mavenCentral()
      maven { url 'https://maven.fabric.io/public' }
  }
}

从您的应用程序项目中添加对新创建的库项目的依赖项。 例如:

compile project(':crashlytics_lib')

1
我应该在哪里添加Crashlytics的密钥?因为在应用程序中,我们将其密钥添加到清单应用程序标记中。 - Adeel Turk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接