我只想禁用crashlytics进行调试。
因此,我按照他们的正式文件中的说明进行操作。 https://docs.fabric.io/android/crashlytics/build-tools.html
根据该文档,我必须执行以下操作,因此我做到了。 首先,我在下面添加了
android {
buildTypes {
debug {
// Disable fabric build ID generation for debug builds
ext.enableCrashlytics = false
...
然后我将以下内容添加到我的Application类中。
// Set up Crashlytics, disabled for debug builds
Crashlytics crashlyticsKit = new Crashlytics.Builder()
.core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build();
// Initialize Fabric with the debug-disabled crashlytics.
Fabric.with(this, crashlyticsKit);
但是我仍然收到此错误。
Caused by: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
有什么我想念的吗?
我检查了我尝试构建的构建类型,并且在没有此配置的情况下运行良好。
我的crashlytics版本是2.9.4。
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.4'
谢谢!
答案 0 :(得分:1)
要在应用程序启动前禁用Firebase,您需要将以下代码添加到AndroidManifest.xml:
<application
... >
...
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="${crashlyticsCollectionEnabled}" />
</application>
表达式$ {crashlyticsCollectionEnabled}被称为清单占位符,其值来自主模块的构建。 gradle文件:
android {
...
buildTypes {
debug {
manifestPlaceholders = [crashlyticsCollectionEnabled:"false"]
...
}
release {
manifestPlaceholders = [crashlyticsCollectionEnabled:"true"]
...
}
}
}
答案 1 :(得分:0)
好像您缺少 API密钥,如果是,则在应用程序标记下添加清单文件,如下所示
<application
.........
.........
<meta-data
android:name="io.fabric.ApiKey"
android:value="<FABRIC_API_KEY>"
/>
</application>
答案 2 :(得分:0)
好吧,现在我看一下您的代码,看来确实比我的方法有更好的解决方案,但是我使用的方法效果很好,所以无论如何我都会分享它(我正在使用只有两种构建类型:DEBUG和RELEASE,并且没有变体,所以对我来说足够了。当MyApp#onCreate
BuildConfig.DEBUG == True
中)
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
if (!BuildConfig.DEBUG) {
Fabric.with(this, new Crashlytics());
}
}
}
但是我确信其他人会提出更好的解决方案。
答案 3 :(得分:0)
在您的应用程序级别build.gradle中添加以下内容:
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
dependencies {
compile('com.crashlytics.sdk.android:crashlytics:KIT_VERSION@aar') {
transitive = true;
}
}
android {
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
production {
buildConfigField 'boolean', 'IS_FABRIC_DISABLED', 'false'
}
fabricOn {
buildConfigField 'boolean', 'IS_FABRIC_DISABLED', 'false'
}
fabricOff {
buildConfigField 'boolean', 'IS_FABRIC_DISABLED', 'true'
}
}
}
在您的应用程序类的onCreate方法中添加以下行:(注意:这是在kotlin中将其转换为Java)
val core = CrashlyticsCore.Builder().disabled(BuildConfig.IS_FABRIC_DISABLED).build()
Fabric.with(this, Crashlytics.Builder().core(core).build())
添加此选项后,您将在左侧的Build Variants with diffrent选项中看到。 (这里我没有应用面料选项,它显示了默认选项)