我希望对构建是否为我的应用创建版本进行构建时控制。我目前只为特定的Jenkins作业启用了Crashlytics(事实上,如果它不是由我的Release作业构建的,那么该插件甚至不应用),而我的Jenkins PR作业同时构建了调试和发布。 / p>
不幸的是,这似乎仍然导致PR作业的功能分支构建出现在我的应用程序的版本列表中 - 当我尝试过滤最近发布的版本时,这会使搜索栏变得混乱。
如何才能将 nothing 发送到崩解服务器?我是否需要隔离Fabric.with()调用,以便它不会在遇到崩溃的情况下运行?与目前相反,它与:
一起运行Crashlytics crashlyticsKit = new Crashlytics.Builder()
.core(new CrashlyticsCore.Builder().disabled(!enableCrashlytics()).build())
.build();
Fabric.with(this, crashlyticsKit);
那就够了吗?
注意:我已经看到了这个问题What is an effective way of segregating dev builds in Crashlytics?,迈克的回答是不可行的
答案 0 :(得分:0)
来自Fabric的Mike。
您根本不需要初始化Fabric。您的初始化代码会阻止Crashlytics被初始化,但不会被Answers,因此仍会发送数据。
或者,将构建分开,以便仅针对生产构建,数据仅流入组织,仅用于prod构建,然后让所有其他构建流入不同组织中的同一应用程序。像this这样的东西:
// The following code allows an app to report Crashlytics crashes separately
// for release and debug buildTypes when using Gradle. This code should be inserted
// into the specified locations within your build.gradle (Module:app) file
// The buildTypes { } block should be inserted inside the android { } block
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
ext.crashlyticsApiSecret = "release api secret"
ext.crashlyticsApiKey = "release api key"
}
debug {
ext.crashlyticsApiSecret = "debug api secret"
ext.crashlyticsApiKey = "debug api key"
}
}
// The following code can be inserted at the bottom of your build.gradle file
import com.crashlytics.tools.utils.PropertiesUtils
File crashlyticsProperties = new File("${project.projectDir.absolutePath}/fabric.properties")
android.applicationVariants.all { variant ->
def variantSuffix = variant.name.capitalize()
def generateResourcesTask = project.tasks.getByName("fabricGenerateResources${variantSuffix}")
def generatePropertiesTask = task("fabricGenerateProperties${variantSuffix}") << {
Properties properties = new Properties()
println "...copying apiSecret for ${variant.name}"
properties.put("apiSecret", variant.buildType.ext.crashlyticsApiSecret)
println "...copying apiKey for ${variant.name}"
properties.put("apiKey", variant.buildType.ext.crashlyticsApiKey)
PropertiesUtils.injectPropertyInFile(crashlyticsProperties, properties, "")
}
generateResourcesTask.dependsOn generatePropertiesTask
}