堆栈跟踪反混淆的魔力如何与Android Studio,ProGuard和Crashlytics一起使用?
每个应用版本都会生成一个唯一的构建ID,据我所知,即使应用的versionCode
和versionName
没有更改,也会生成它:
<string name = "com.crashlytics.android.build_id">RANDOM_UUID</ string>
正如我假设的那样,在构建时,此构建ID与mapping.txt一起上传到Crashlytics服务器。反过来,每个崩溃报告都包含此构建ID。因此,Crashlytics服务器可以找到正确的mapping.txt,即使对于具有相同versionCode
和versionName
的构建也是如此。
但是,如果在构建期间我暂时失去了互联网连接,我不会注意到这一点?我试图在互联网关闭的情况下进行构建,并且成功,没有警告,没有错误。但我预计构建会失败,抱怨它无法将mapping.txt和构建ID上传到Crashlytics服务器。
那么,Gradle的Crashlytics插件如何在没有Internet的情况下处理构建?
并且假设,Crashlytics可以区分具有相同versionCode
和versionName
的构建,是否正确?
UPD。在我得到Mike的回答之前,我还通过在我的项目根目录中执行./gradlew tasks --all
,找到了有关幕后内容的见解:
答案 0 :(得分:1)
Mike来自Fabric。对于没有活动网络连接时发生的构建,我们在运行构建的机器上缓存映射构建ID对。当您恢复网络连接时,我们会上传缓存的数据。
是的,我们可以使用相同的versionName
和setFeatureToken()
来区分构建,因为每个构建的唯一ID。这也是为什么你必须小心它的一代:)