簡體   English   中英

堆棧跟蹤反混淆:帶有ProGuard和Crashlytics的Android Studio

[英]Stack trace deobfuscation: Android Studio with ProGuard and Crashlytics

堆棧跟蹤反混淆的魔力如何與Android Studio,ProGuard和Crashlytics配合使用?

每個應用程序生成都會生成一個唯一的生成ID,據我所知,即使應用程序的versionCodeversionName ,也會生成該ID:

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

正如我假設的那樣,在構建時,此構建ID以及mapping.txt均被上載到了Crashlytics服務器。 而且,每個崩潰報告都包含此構建ID。 因此,即使對於具有相同versionCodeversionName構建,Crashlytics服務器也可以找到正確的mapping.txt。

但是,如果在構建期間我暫時失去了Internet連接,而我卻沒有注意到這一點怎么辦? 我試圖在關閉Internet的情況下進行構建,並且構建成功,沒有警告,沒有錯誤。 但是我預計構建會失敗,抱怨它無法將mapping.txt和構建ID上傳到Crashlytics服務器。

那么,在沒有Internet的情況下,Gradle的Crashlytics插件如何處理構建?

並且假設Crashlytics可以區分具有相同versionCodeversionName構建是正確的嗎?

UPD。 在獲得Mike的答案之前,我還通過簡單地執行./gradlew tasks --all在我的項目根目錄中)來./gradlew tasks --all

  • app:crashlyticsStoreDeobsRelease-完成發行版本后要調用的Crashlytics目標。 清理Crashlytics生成的資源文件。 將反混淆文件緩存並上傳到Crashlytics服務器。
  • app:crashlyticsUploadDeobsRelease-將存儲的反混淆文件上傳到Crashlytics。
  • app:crashlyticsUploadDistributionDebug-將APK上傳到Crashlytics以進行分發。
  • app:crashlyticsUploadDistributionRelease-將APK上傳到Crashlytics以進行分發。
  • app:fabricGenerateResourcesDebug-注入Fabric SDK使用的內部版本ID。
  • app:fabricGenerateResourcesRelease-注入Fabric SDK使用的內部版本ID。

來自Fabric的Mike。 對於在沒有活動網絡連接時發生的構建,我們在運行構建的計算機上緩存了映射-構建ID對。 網絡連接恢復后,我們將上載緩存的數據。

是的,由於每個版本的唯一ID,我們可以區分具有相同versionCodeversionName的版本。 這就是為什么您必須謹慎對待它的一代:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM