【问题标题】:Stack trace deobfuscation: Android Studio with ProGuard and Crashlytics堆栈跟踪反混淆:带有 ProGuard 和 Crashlytics 的 Android Studio
【发布时间】:2018-07-08 18:57:56
【问题描述】:

堆栈跟踪反混淆的魔力如何与 Android Studio、ProGuard 和 Crashlytics 配合使用?

每个应用程序构建都会生成一个唯一的构建 ID,据我了解,即使应用程序的 versionCodeversionName 没有更改,它也会生成:

<string name = "com.crashlytics.android.build_id">RANDOM_UUID</ string>

正如我假设的那样,在构建时,此构建 ID 与 mapping.txt 一起被上传到 Crashlytics 服务器。反过来,每个崩溃报告都包含此构建 ID。因此,Crashlytics 服务器可以找到正确的 mapping.txt,即使对于具有相同 versionCodeversionName 的构建也是如此。

但是,如果在构建过程中我暂时失去了 Internet 连接,我不会注意到这一点怎么办?我尝试在关闭 Internet 的情况下进行构建,并且成功,没有警告,也没有错误。但我预计构建会失败,抱怨它无法将 mapping.txt 和构建 ID 上传到 Crashlytics 服务器。

那么,Gradle 的 Crashlytics 插件如何在没有 Internet 的情况下处理构建?

假设 Crashlytics 可以区分具有相同 versionCodeversionName 的构建,是否正确?

UPD。在我得到 Mike 的回答之前,我还通过在我的项目根目录中执行 ./gradlew tasks --all 来了解幕后发生的事情:

  • app:crashlyticsStoreDeobsRelease - 要调用的 Crashlytics 目标 完成发布构建后。清理 Crashlytics 生成的 资源文件。将反混淆文件缓存并上传到 Crashlytics 服务器。
  • app:crashlyticsUploadDeobsRelease - 上传存储 将文件去混淆到 Crashlytics。
  • app:crashlyticsUploadDistributionDebug - 将 APK 上传到 用于分发的崩溃分析。
  • app:crashlyticsUploadDistributionRelease - 将 APK 上传到 用于分发的崩溃分析。
  • app:fabricGenerateResourcesDebug - 注入 Fabric SDK 使用的构建 ID。
  • app:fabricGenerateResourcesRelease - 注入由 Fabric SDK。

【问题讨论】:

    标签: android-studio firebase crashlytics android-proguard firebase-crash-reporting


    【解决方案1】:

    来自 Fabric 的 Mike。对于在没有活动网络连接时发生的构建,我们将映射-构建 ID 对缓存在运行构建的机器上。当您的网络连接恢复后,我们会上传缓存的数据。

    是的,我们可以区分具有相同 versionCodeversionName 的构建,因为每个构建都有唯一的 ID。这也是为什么你必须小心它的一代:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-19
      相关资源
      最近更新 更多