Android 版 Crashlytics:禁用通过 Gradle 构建自动上传映射文件

问题描述 投票:0回答:6

我想在我们的应用程序中使用 crashlytics,但我不允许将其 proguard 映射文件上传到外界的任何地方(公司政策)。是否可以使用 Crashlytics 但具有混淆的堆栈跟踪?

io.fabric 插件的文档中我找到了这个选项:

ext.enableCrashlytics = false

但它禁用了整个报告,所以这不是我想要的。

android gradle crashlytics
6个回答
13
投票

我已将其添加到应用程序 gradle 文件的末尾:

tasks.whenTaskAdded {task ->
    if(task.name.toLowerCase().contains("crashlytics")) {
        task.enabled = false
    }
}

构建日志:

> Task :app:crashlyticsStoreDeobsDebug SKIPPED
> Task :app:crashlyticsUploadDeobsDebug SKIPPED

请注意,这会禁用所有与 crashlytics 相关的任务。默认上传proguard映射文件是某种误解。这就像上传私钥及其密码。该文件只能存储在您的保管库中。所以我想默认情况下最好完全禁用他们的所有任务:)

我只是想知道为什么这对开发人员来说不是一个大问题。


3
投票

添加到应用程序构建 Gradle 文件

firebaseCrashlytics {
        mappingFileUploadEnabled false
    }

https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?platform=android


2
投票

他们已经计划好了一切! ;-) 根据此链接:“Crashlytics 自动为您的报告去混淆堆栈跟踪”,因此您不必担心它。

只需使用 ProGuard 混淆您的应用程序,不要忘记更新 ProGuard 规则以避免发布应用程序时发生意外崩溃,应该没问题!

(帮助页面是关于Eclipse的,但是我前几天在Android Studio中使用了Crashlytics,它也运行得很好)

编辑1:根据第二个链接的最后,Crashlytics自动在构建过程中上传映射文件。您似乎无法禁用此功能。

编辑2也许如果您使用Ant,您将能够自定义(至少一点)构建规则,这要归功于crashlytics_build.xmlcrashlytics_build_base.xml文件。但我不习惯Ant,即使在那里,当我读取文件时,似乎也无法禁用“映射文件自动上传”。 :-/


1
投票
尝试禁用任务“crashlyticsUploadDeobs”:

afterEvaluate { for (Task task : project.tasks.matching { it.name.startsWith('crashlyticsUploadDeobs') }) { task.enabled = false }}
    

0
投票
如果您当时没有互联网连接,将会发生什么情况,映射是否会上传到 crashlytics。


0
投票
检查以下链接以查看最新方法:

https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?platform=android

© www.soinside.com 2019 - 2024. All rights reserved.